exercises

Log | Files | Refs | README

main.rs (748B)


      1 use std::{fmt::Pointer, thread::spawn};
      2 
      3 use bad_calculator_2::smart_pointers_better_example::{Calculator, ThreadSafeCalculator};
      4 
      5 fn main() -> Result<(), String> {
      6     let mut calc = Calculator::new();
      7 
      8     calc.set_variable("pi".to_string(), 3.14159);
      9 
     10     let result1 = calc.evaluate("2 * pi".to_string())?;
     11     let result2 = calc.evaluate("result + 1".to_string())?;
     12 
     13     for calculation in calc.history() {
     14         println!("{} = {}", calculation.expression, calculation.result);
     15     }
     16 
     17     let thread_safe = ThreadSafeCalculator::new();
     18 
     19     let threads: Vec<_> = (0..3)
     20         .map(|i| {
     21             let calc = thread_safe.clone();
     22             spawn(move || calc.evaluate(format!("{} + 1", i)))
     23         })
     24         .collect();
     25 
     26     Ok(())
     27 }