X-Git-Url: https://piware.de/gitweb/?p=learn-rust.git;a=blobdiff_plain;f=src%2Fmain.rs;h=3b45c882984a49f2d4303543fba86b80b0f38b53;hp=718ecb5f22028762b437c4b87a60dac13f99c90c;hb=d65f952f600ad2d0828fd650829f6560404dca1c;hpb=f026aa1e762803c4e784f82fd3830c9f936cf8d5 diff --git a/src/main.rs b/src/main.rs index 718ecb5..3b45c88 100644 --- a/src/main.rs +++ b/src/main.rs @@ -65,7 +65,7 @@ fn test_hashmaps() { println!("scores after doubling: {:?}", scores); // double scores of immutable hashmap (rebuild it) - let collect_scores: HashMap<_, _> = collect_scores.iter() + let collect_scores: HashMap<_, _> = collect_scores.into_iter() .map(|(k, v)| (k, 2 * v)) .collect(); println!("collect_scores after rebuilding with doubling: {:?}", collect_scores); @@ -137,10 +137,31 @@ fn test_generics() { println!("longest string: {}", l); } +fn test_closures() { + let mut expensive_int_result = Cacher::new(|x| { + println!("calculating expensive int result for {}", x); + 2 * x + }); + + println!("1st int call for value 1: {}", expensive_int_result.value(1)); + println!("2nd int call for value 1: {}", expensive_int_result.value(1)); + println!("1st int call for value 2: {}", expensive_int_result.value(2)); + + let mut expensive_str_result = Cacher::new(|x: &str| { + println!("calculating expensive str result for {}", x); + x.len() + }); + + println!("1st int call for value abc: {}", expensive_str_result.value("abc")); + println!("2nd int call for value abc: {}", expensive_str_result.value("abc")); + println!("1st int call for value defg: {}", expensive_str_result.value("defg")); +} + fn main() { test_strings(); test_vectors(); test_hashmaps(); test_files(); test_generics(); + test_closures(); }