mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-08 20:56:43 +01:00
88 lines
2.1 KiB
Rust
88 lines
2.1 KiB
Rust
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 use std::marker::PhantomData;
|
|
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};
|
|
use std::ops::{Add, Sub, Mul, Div};
|
|
use std::cmp::{Ord, Eq, PartialEq};
|
|
use std::fmt::{Debug, Display};
|
|
|
|
/// Define and reexport submodules.
|
|
#[macro_export] macro_rules! submod {
|
|
($($name:ident)*) => { $(mod $name; pub use self::$name::*;)* };
|
|
}
|
|
|
|
/// Define public modules.
|
|
#[macro_export] macro_rules! pubmod {
|
|
($($name:ident)*) => { $(pub mod $name;)* };
|
|
}
|
|
|
|
/// Define test modules.
|
|
#[macro_export] macro_rules! testmod {
|
|
($($name:ident)*) => { $(#[cfg(test)] mod $name;)* };
|
|
}
|
|
|
|
submod! {
|
|
audio
|
|
edn
|
|
engine
|
|
focus
|
|
space
|
|
time
|
|
tui
|
|
}
|
|
|
|
testmod! {
|
|
test
|
|
}
|
|
|
|
/// Standard result type.
|
|
pub type Usually<T> = Result<T, Box<dyn Error>>;
|
|
|
|
/// Standard optional result type.
|
|
pub type Perhaps<T> = Result<Option<T>, Box<dyn Error>>;
|
|
|
|
/// Standard numeric type.
|
|
pub trait Number: Send + Sync + Copy
|
|
+ Add<Self, Output=Self>
|
|
+ Sub<Self, Output=Self>
|
|
+ Mul<Self, Output=Self>
|
|
+ Div<Self, Output=Self>
|
|
+ Ord + PartialEq + Eq
|
|
+ Debug + Display + Default
|
|
+ From<u16> + Into<u16>
|
|
+ Into<f64>
|
|
{
|
|
fn minus (self, other: Self) -> Self {
|
|
if self >= other {
|
|
self - other
|
|
} else {
|
|
0.into()
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<T> Number for T where
|
|
T: Send + Sync + Copy
|
|
+ Add<Self, Output=Self>
|
|
+ Sub<Self, Output=Self>
|
|
+ Mul<Self, Output=Self>
|
|
+ Div<Self, Output=Self>
|
|
+ Ord + PartialEq + Eq
|
|
+ Debug + Display + Default
|
|
+ From<u16> + Into<u16>
|
|
+ Into<f64>
|
|
{}
|