acid_io
A pared-down version of Rust's std::io
usable in no_std
contexts.
Rust's std::io
provides common interfaces that are used widely in the Rust ecosystem for reading and writing data. However, as of 2022, these interfaces are not available in no_std
builds.
This crate provides drop-in replacements for the types and traits exposed by std::io
which can be used with no_std
.
Example
#![no_std]
use acid_io::{
byteorder::{BE, LE, ReadBytesExt, WriteBytesExt},
Cursor, Read, Seek, SeekFrom, Write,
};
let mut buf = [0u8; 10];
let mut curs = Cursor::new(&mut buf);
curs.write_u8(1)?;
curs.write_u16::<BE>(2)?;
curs.write_u32::<LE>(3)?;
curs.seek(SeekFrom::Start(0))?;
assert_eq!(curs.read_u8()?, 1);
assert_eq!(curs.read_u16::<BE>()?, 2);
assert_eq!(curs.read_u32::<LE>()?, 3);
Feature flags
-
std
Replaces all items with re-exports of their counterparts in
std::io
. This effectively makesacid_io
an alias ofstd::io
, but missing any items thatacid_io
wouldn't otherwise provide. -
alloc
Exposes
BufReader
andBufWriter
, as well as those trait methods which take or returnVec
orString
. -
byteorder
Exposes
acid_io::byteorder
, which contains implementations ofReadBytesExt
andWriteBytesExt
foracid_io
'sRead
andWrite
traits. Also re-exports the rest ofbyteorder
.
Acknowledgments
Much of this library is copied verbatim or with slight modifications from other Rust projects:
If you find this crate useful, please consider sponsoring members of the Library team on GitHub.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.