#![forbid(unsafe_code)]
#![cfg_attr(not(feature = "std"), no_std)]
#![warn(rust_2018_idioms, unreachable_pub)]
#![warn(clippy::pedantic)]
#![allow(
clippy::module_name_repetitions,
clippy::missing_errors_doc,
// Some Core methods take `&self` for architectural consistency (they're
// conceptually Core methods even if they don't read self state directly,
// since the state lives in CoreState behind self.state.lock()). The lint
// would force them into associated fns, breaking the consistent API.
clippy::unused_self,
// doc_markdown false-positives on protocol identifiers like `T`, `JS`, etc.
clippy::doc_markdown,
)]
mod batch;
pub mod boundary;
pub mod clock;
pub mod handle;
pub mod hash;
pub mod mailbox;
pub mod message;
pub mod node;
pub(crate) mod op_state;
pub mod owned;
#[cfg(feature = "tokio")]
pub mod timer;
pub mod topology;
pub use batch::BatchGuard;
pub use boundary::{BindingBoundary, CleanupTrigger, DepBatch, FnEmission, FnResult};
pub use clock::{monotonic_ns, wall_clock_ns};
pub use handle::{FnId, HandleId, LockId, NodeId, NO_HANDLE};
pub use hash::sha256_hex;
pub use mailbox::{CoreMailbox, DeferFn, DeferQueue, MailboxOp, SendDeferFn};
pub use message::{Message, Messages};
pub use node::{
Core, CoreFull, DeferredProducerOp, EqualsMode, NodeFnOrOp, NodeKind, NodeOpts,
NodeRegistration, OperatorOp, OperatorOpts, PausableMode, PauseError, RegisterError,
ResumeReport, SetDepsError, SetPausableModeError, Sink, SubscribeError, SubscriptionId,
TerminalKind, UpError,
};
pub use owned::OwnedCore;
pub use topology::{TopologyEvent, TopologySink, TopologySubscriptionId};