Mercurial > lbo > hg > memoize
view examples/full_featured.rs @ 76:02996990927d
Update readme with SharedCache feature and thread local expansion
author | Leodore <lconrads@ucsc.edu> |
---|---|
date | Sun, 20 Mar 2022 23:27:47 -0700 |
parents | 3ed9875b9139 |
children | b493c1f99877 |
line wrap: on
line source
use memoize::memoize; use std::time::{Instant, Duration}; use std::thread; #[derive(Debug, Clone)] struct ComplexStruct { s: String, b: bool, i: Instant, } #[memoize(TimeToLive: Duration::from_secs(2), Capacity: 123)] fn hello(key: String) -> ComplexStruct { println!("hello: {}", key); ComplexStruct { s: key, b: false, i: Instant::now(), } } fn main() { println!("result: {:?}", hello("ABC".to_string())); println!("result: {:?}", hello("DEF".to_string())); println!("result: {:?}", hello("ABC".to_string())); //Same as first thread::sleep(core::time::Duration::from_millis(2100)); println!("result: {:?}", hello("EFG".to_string())); println!("result: {:?}", hello("ABC".to_string())); //Refreshed println!("result: {:?}", hello("EFG".to_string())); //Same as first println!("result: {:?}", hello("ABC".to_string())); //Same as refreshed println!("result: {:?}", memoized_original_hello("ABC".to_string())); }