blob: 1c27e42229bb798a478d59319549884b4e7e9d43 [file]
//! Traits, helpers, and type definitions for core I/O functionality.
mod borrowed_buf;
mod cursor;
mod error;
mod impls;
mod io_slice;
mod seek;
mod size_hint;
mod util;
#[unstable(feature = "core_io_borrowed_buf", issue = "117693")]
pub use self::borrowed_buf::{BorrowedBuf, BorrowedCursor};
#[unstable(feature = "raw_os_error_ty", issue = "107792")]
pub use self::error::RawOsError;
#[unstable(feature = "io_const_error_internals", issue = "none")]
pub use self::error::SimpleMessage;
#[unstable(feature = "io_const_error", issue = "133448")]
pub use self::error::const_error;
#[unstable(feature = "core_io", issue = "154046")]
pub use self::{
cursor::Cursor,
error::{Error, ErrorKind, Result},
io_slice::{IoSlice, IoSliceMut},
seek::{Seek, SeekFrom},
util::{Chain, Empty, Repeat, Sink, Take, empty, repeat, sink},
};
#[doc(hidden)]
#[unstable(feature = "core_io_internals", reason = "exposed only for libstd", issue = "none")]
pub use self::{
error::{Custom, CustomOwner, OsFunctions},
seek::stream_len_default,
size_hint::SizeHint,
util::{chain, take},
};
/// Marks that a type `T` can have IO traits such as [`Seek`], [`Write`], etc. automatically
/// implemented for handle types like [`Arc`][arc] as well.
///
/// This trait should only be implemented for types where `<&T as Trait>::method(&mut &value, ..)`
/// would be identical to `<T as Trait>::method(&mut value, ..)`.
///
/// [`File`][file] passes this test, as operations on `&File` and `File` both affect
/// the same underlying file.
/// `[u8]` fails, because any modification to `&mut &[u8]` would only affect a temporary
/// and be lost after the method has been called.
///
// FIXME(#74481): Hard-links required to link from `core` to `std`
/// [file]: ../../std/fs/struct.File.html
/// [arc]: ../../alloc/sync/struct.Arc.html
/// [`Write`]: ../../std/io/trait.Write.html
/// [`Seek`]: crate::io::Seek
#[doc(hidden)]
#[unstable(feature = "core_io_internals", reason = "exposed only for libstd", issue = "none")]
pub trait IoHandle {}