pub fn fn_closure()
{
println!("=================chapter 13===================");
simulated_expensive_calculation(1);
generate_workout(25,4);
closure_ref();
}
use std::thread;
use std::time::Duration;
fn simulated_expensive_calculation(intensity: u32) -> u32 {
println!("calculating slowly...");
thread::sleep(Duration::from_secs(2));
intensity
}
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)
);
}
}
}
fn closure_ref()
{
let x = vec![1, 2, 3];
let equal_to_x = |z| z == *x;
println!("can't use x here: {:?}", x);
let y = vec![1, 2, 3];
println!("equal_to_x{}",equal_to_x(y));
}