io_streams/lib.rs
1//! Unbuffered and unlocked I/O streams.
2//!
3//! For a starting point, see [`StreamReader`] and [`StreamWriter`] for input
4//! and output streams. There's also [`StreamDuplexer`] for interactive
5//! streams.
6//!
7//! Since these types are unbuffered, it's advisable for most use cases to wrap
8//! them in buffering types such as [`std::io::BufReader`],
9//! [`std::io::BufWriter`], [`std::io::LineWriter`], [`BufDuplexer`], or
10//! [`BufReaderLineWriter`].
11//!
12//! [`BufReader`]: std::io::BufReader
13//! [`BufWriter`]: std::io::BufWriter
14//! [`LineWriter`]: std::io::LineWriter
15//! [`AsRawFd`]: std::os::unix::io::AsRawFd
16//! [pipe]: https://crates.io/crates/os_pipe
17
18#![deny(missing_docs)]
19#![cfg_attr(can_vector, feature(can_vector))]
20#![cfg_attr(write_all_vectored, feature(write_all_vectored))]
21#![cfg_attr(read_initializer, feature(read_initializer))]
22#![cfg_attr(docsrs, feature(doc_cfg))]
23#![cfg_attr(target_os = "wasi", feature(wasi_ext))]
24
25/*
26#[cfg(feature = "async-std")]
27#[cfg_attr(docsrs, doc(cfg(feature = "async-std")))]
28mod async_std;
29*/
30mod buffered;
31mod lockers;
32mod streams;
33/*
34#[cfg(feature = "tokio")]
35#[cfg_attr(docsrs, doc(cfg(feature = "tokio")))]
36mod tokio;
37*/
38
39/*
40#[cfg(feature = "async-std")]
41#[cfg_attr(docsrs, doc(cfg(feature = "async-std")))]
42pub use crate::async_std::{AsyncStreamDuplexer, AsyncStreamReader, AsyncStreamWriter};
43#[cfg(feature = "tokio")]
44#[cfg_attr(docsrs, doc(cfg(feature = "tokio")))]
45pub use crate::tokio::{TokioStreamDuplexer, TokioStreamReader, TokioStreamWriter};
46*/
47pub use buffered::{BufDuplexer, BufReaderLineWriter, IntoInnerError};
48pub use streams::{StreamDuplexer, StreamReader, StreamWriter};