view examples/test1.rs @ 44:b73c35db6c4b v0.1.5

Publish version 0.1.5
author Lewin Bormann <lbo@spheniscida.de>
date Thu, 10 Dec 2020 20:39:24 +0100
parents 102b185d2013
children
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()));
}