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 }