//! Platform abstraction for DarkRoom. //! //! Traits are defined here and implemented per platform, then injected at //! construction, so `core/` contains no `#[cfg(target_os)]` (NFR-PORT-1, //! ARCH ยง10). // Neither of the next two is a trait, and they are the modules here that are // not. They belong in this crate for the same reason the traits do: "where does // this platform let an application keep state" is a platform question, and both // entry points need the answer before either has a window. Resolving it in // `apps/` would mean writing it twice, once per platform, which is the // arrangement this crate exists to prevent. pub mod crash; pub mod diagnostics; pub mod display; pub mod input; pub mod secrets; pub mod state; pub mod storage; pub mod volumes; pub use diagnostics::{Installed, LogFile}; pub use display::{ Bounds, DisplayInfo, DisplayProfile, DisplayServer, DisplaySurvey, FallbackReason, ProfileSource, }; pub use input::is_touch_first; pub use secrets::{ EphemeralSecretStore, PlatformSecretStore, SecretError, SecretKind, SecretRef, SecretStore, }; pub use state::{set_state_dir, state_dir}; pub use storage::{ DirRef, Entry, LocalStorage, NewFile, Node, SeekableRead, Storage, StorageError, WritableStorage, }; pub use volumes::{imports_supported, volumes, Volume};