From db0289b1813b73a93c22f12379ba501dbadc7552 Mon Sep 17 00:00:00 2001 From: Adam Carpenter <53hornet@gmail.com> Date: Thu, 28 Feb 2019 16:01:38 -0500 Subject: Updated functional. --- functional/src/main.rs | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 functional/src/main.rs (limited to 'functional/src') diff --git a/functional/src/main.rs b/functional/src/main.rs new file mode 100644 index 0000000..4fbc447 --- /dev/null +++ b/functional/src/main.rs @@ -0,0 +1,50 @@ +use std::thread; +use std::time::Duration; + +struct Cacher + where T: Fn(u32) -> u32 +{ + calculation: T, + value: Option, +} + +fn main() { + let simulated_user_specified_value = 10; + let simulated_random_number = 7; + + generate_workout( + simulated_user_specified_value, + simulated_random_number + ); +} + +fn generate_workout(intensity: u32, random_number: u32) { + let expensive_closure = |num| { + println!("calculating slowly..."); + thread::sleep(Duration::from_secs(2)); + num + }; + + if intensity < 25 { + println!( + "Today, do {} pushups!", + expensive_closure(intensity) + ); + println!( + "Next, do {} situps!", + expensive_closure(intensity) + ); + } + else { + if random_number == 3 { + println!("Take a break today! Remember to stay hydrated!"); + } + else { + println!( + "Today, run for {} minutes!", + expensive_closure(intensity) + ); + } + } +} + -- cgit v1.2.3