pub mod devshell;
mod error;
mod id;
mod list;
mod model;
mod priority;
mod repeat;
mod store;
pub use error::TodoError;
pub use id::TodoId;
pub use list::TodoList;
pub use model::{ListFilter, ListOptions, ListSort, Todo, TodoPatch};
pub use priority::Priority;
pub use repeat::RepeatRule;
pub use store::{InMemoryStore, Store};
#[cfg(test)]
mod tests;
#[cfg(test)]
pub(crate) mod test_support {
use std::sync::{Mutex, OnceLock, PoisonError};
pub fn cwd_mutex() -> std::sync::MutexGuard<'static, ()> {
static LOCK: OnceLock<Mutex<()>> = OnceLock::new();
LOCK.get_or_init(|| Mutex::new(()))
.lock()
.unwrap_or_else(PoisonError::into_inner)
}
pub fn devshell_workspace_env_mutex() -> std::sync::MutexGuard<'static, ()> {
static LOCK: OnceLock<Mutex<()>> = OnceLock::new();
LOCK.get_or_init(|| Mutex::new(()))
.lock()
.unwrap_or_else(PoisonError::into_inner)
}
}