    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

    //! A tiny, `no_std`-friendly facade around `std::io`.
    //! Reexports types from `std` when available; otherwise reimplements and
    //! provides some of the core logic.
    //!
    //! The main reason that `std::io` hasn't found itself reexported as part of
    //! the `core` crate is the `std::io::{Read, Write}` traits' reliance on
    //! `std::io::Error`, which may contain internally a heap-allocated `Box<Error>`
    //! and/or now relying on OS-specific `std::backtrace::Backtrace`.

    pub use self::imp::{Error, ErrorKind, Result, Write};

    #[cfg(not(feature = "std"))]
    #[path = "core.rs"]
    mod imp;

    #[cfg(feature = "std")]
    use std::io as imp;

    #[cfg(feature = "std")]
    pub use std::io::{Bytes, Read};