#![doc = include_str!("../README.md")]
#![cfg_attr(channels_nightly, feature(doc_auto_cfg))]
#![cfg_attr(not(feature = "std"), no_std)]
#![warn(clippy::print_stdout, clippy::print_stderr)]
extern crate alloc;
mod statistics;
mod util;
pub mod error;
pub mod receiver;
pub mod sender;
#[cfg(feature = "statistics")]
pub use self::statistics::Statistics;
pub use self::receiver::Receiver;
pub use self::sender::Sender;
#[doc(inline)]
pub use {channels_io as io, channels_serdes as serdes};
pub type Pair<T, R, W, Sd> = (Sender<T, W, Sd>, Receiver<T, R, Sd>);
#[cfg(feature = "bincode")]
#[inline]
pub fn channel<T, R, W>(
r: impl io::IntoRead<R>,
w: impl io::IntoWrite<W>,
) -> Pair<T, R, W, channels_serdes::Bincode>
where
for<'de> T: serde::Serialize + serde::Deserialize<'de>,
{
(Sender::new(w), Receiver::new(r))
}