Guest User

Untitled

a guest
Feb 18th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. use std::thread;
  2. use std::time::Duration;
  3.  
  4. struct Cacher
  5. {
  6. value: Option<u32>,
  7. }
  8.  
  9. impl Cacher
  10. {
  11. fn new() -> Cacher {
  12. Cacher {
  13. value: None,
  14. }
  15. }
  16.  
  17. fn calculation(&self, num : u32) -> u32{
  18. println!("calculating slowly...");
  19. thread::sleep(Duration::from_secs(2));
  20. num
  21. }
  22.  
  23. fn value(&mut self, arg: u32) -> u32 {
  24. match self.value {
  25. Some(v) => v,
  26. None => {
  27. let v = self.calculation(arg);
  28. self.value = Some(v);
  29. v
  30. },
  31. }
  32. }
  33. }
  34.  
  35.  
  36. fn main() {
  37. let simulated_user_specified_value = 50;
  38. let simulated_random_number = 7;
  39.  
  40. generate_workout(
  41. simulated_user_specified_value,
  42. simulated_random_number
  43. );
  44. }
  45.  
  46. fn generate_workout(intensity: u32, random_number: u32) {
  47. let mut expensive_result = Cacher::new();
  48.  
  49. if intensity < 25 {
  50. println!(
  51. "Today, do {} pushups!",
  52. expensive_result.value(intensity)
  53. );
  54. println!(
  55. "Next, do {} situps!",
  56. expensive_result.value(intensity)
  57. );
  58. } else {
  59. if random_number == 3 {
  60. println!("Take a break today! Remember to stay hydrated!");
  61. } else {
  62. println!(
  63. "Today, run for {} minutes!",
  64. expensive_result.value(intensity)
  65. );
  66. }
  67. }
  68. }
Add Comment
Please, Sign In to add comment