X-Git-Url: https://piware.de/gitweb/?p=learn-rust.git;a=blobdiff_plain;f=src%2Fmain.rs;h=0ef1b16f4f9b19c7e9e1c71377abd4273acc0d1b;hp=718ecb5f22028762b437c4b87a60dac13f99c90c;hb=b6a408eb8944df04d6c6e876a9a00f6c425f47f1;hpb=cf414916b6551e102ebf120866ef461d47c535bd diff --git a/src/main.rs b/src/main.rs index 718ecb5..0ef1b16 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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(); }