use std::time::Instant;
use closure_study::thing::Cacher;
fn main() {
let start = Instant::now();
println!("=================================");
let mut c = Cacher::new(|a| a * a);
let _v = c.obtain_or_calculate(1);
let _v2 = c.obtain_or_calculate(2);
let _v4 = c.obtain_or_calculate(2);
let _v5 = c.obtain_or_calculate(4);
let _v6 = c.obtain_or_calculate(4);
c.value.iter().for_each(|(k, v)| println!("{}=>{}", k, v));
println!("=================================");
let mut d = Cacher::new(|a| format!("Hi {}", a));
d.obtain_or_calculate("稣+0");
d.obtain_or_calculate("沁伸甚");
d.obtain_or_calculate("沁伸甚");
d.value.iter().for_each(|(k, v)| println!("{}=>{}", k, v));
println!("Time elapsed in app is: {:?}", start.elapsed());
}