hs-rust-learn 0.1.0

hs's rust test learn
Documentation
use std::{thread, time::Duration, collections::HashMap};

struct Memo<T>
where T: Fn(u32) -> u32 {
    calculation: T,
    map: HashMap<u32, u32>,
    value: Option<u32>
}

impl<T> Memo<T>
where
    T: Fn(u32) -> u32 {
    fn new(calculation: T) -> Memo<T> {
        Memo {
            calculation,
            value: None,
            map: HashMap::new()
        }
    }
    fn value(&mut self, arg: u32) -> u32 {
        let cache_value = self.map.get(&arg);
        match cache_value {
            Some(v) => *v,
            None => {
                let v = (self.calculation)(arg);
                println!("calculating {}", arg);
                self.value = Some(v);
                self.map.insert(arg, v);
                v
            }
        }
    }
}


fn main() {

    let mut clo = Memo::new(|x| x * x);

    println!("enter...");
    thread::sleep(Duration::from_millis(100));
    println!("Hello, world!");

    println!("{}", clo.value(1024));
    println!("{}", clo.value(104));
    println!("{}", clo.value(104));
    println!("{}", clo.value(1024));
}