pub use ratatui; pub use crossterm; pub use jack; pub use midly; pub use clap; pub use std::sync::{Arc, Mutex, LockResult, RwLock, RwLockReadGuard, RwLockWriteGuard}; pub use std::collections::BTreeMap; pub use once_cell::sync::Lazy; pub use std::sync::atomic::{Ordering, AtomicBool}; pub use std::rc::Rc; pub use std::cell::RefCell; pub(crate) use std::error::Error; pub(crate) use std::io::{stdout}; pub(crate) use std::thread::{spawn, JoinHandle}; pub(crate) use std::time::Duration; pub(crate) use atomic_float::*; use better_panic::{Settings, Verbosity}; /// Define and reexport submodules. #[macro_export] macro_rules! submod { ($($name:ident)*) => { $(mod $name; pub use self::$name::*;)* }; } /// Define and reexport public modules. #[macro_export] macro_rules! pubmod { ($($name:ident)*) => { $(pub mod $name;)* }; } submod! { component edn engine event exit focus handle jack_core jack_device jack_event jack_ports keymap space render time tui } /// Standard result type. pub type Usually = Result>; /// Standard optional result type. pub type Perhaps = Result, Box>;