gw_rust_programming_tutorial/chapter_13/
test_closure.rs1pub fn fn_closure()
2{
3 println!("=================chapter 13===================");
4 simulated_expensive_calculation(1);
5 generate_workout(25,4);
6
7 closure_ref();
8}
9
10use std::thread;
11use std::time::Duration;
12
13fn simulated_expensive_calculation(intensity: u32) -> u32 {
14 println!("calculating slowly...");
15 thread::sleep(Duration::from_secs(2));
16 intensity
17}
18
19fn generate_workout(intensity: u32, random_number: u32) {
20 let expensive_closure = |num| {
21 println!("calculating slowly...");
22 thread::sleep(Duration::from_secs(2));
23 num
24 };
25
26 if intensity < 25 {
27 println!(
28 "Today, do {} pushups!",
29 expensive_closure(intensity)
30 );
31 println!(
32 "Next, do {} situps!",
33 expensive_closure(intensity)
34 );
35 } else {
36 if random_number == 3 {
37 println!("Take a break today! Remember to stay hydrated!");
38 } else {
39 println!(
40 "Today, run for {} minutes!",
41 expensive_closure(intensity)
42 );
43 }
44 }
45}
46
47
48fn closure_ref()
49{
50 let x = vec![1, 2, 3];
51
52 let equal_to_x = |z| z == *x;
53
54 println!("can't use x here: {:?}", x);
55
56 let y = vec![1, 2, 3];
57
58 println!("equal_to_x{}",equal_to_x(y));
59}