pub mod reader; use std::sync::{Arc, Mutex}; use reader::ReaderState; fn main() { let state = Arc::new(Mutex::new(ReaderState::new("uwu> "))); let state_r = state.clone(); assert!(state.lock().unwrap().init_tty().is_ok()); std::panic::set_hook(Box::new(move |_| { let _ = state_r.lock().unwrap().restore_tty(); })); loop { let line = state.lock().unwrap().read_line(); match line { Ok(s) => println!("{}", s), Err(e) => { eprintln!("\nError: {:?}", e); break; } } } let _ = state.lock().unwrap().restore_tty(); }