mod game; mod graphics; use std::thread; use std::sync::{Arc, Mutex}; fn main() { let state_ = Arc::new(Mutex::new(game::new())); let state = state_.clone(); let game_thread = thread::spawn(move || { loop { // aquire state resource let mut state = match state.lock() { Ok(state) => state, Err(poisoned) => poisoned.into_inner(), }; if state.running == false { break; } game::update(&mut state); } }); let state = state_.clone(); let graphics_thread = thread::spawn(move || { let mut window = graphics::start(); while window.is_open() { graphics::render(&mut window); graphics::update(&mut window); } // aquire state resource let mut state = match state.lock() { Ok(state) => state, Err(poisoned) => poisoned.into_inner(), }; state.running = false; }); graphics_thread.join().unwrap(); game_thread.join().unwrap(); }