Crate write_into
source · [−]Expand description
Defines a trait built on top of io::Write
to write things into it.
Instead of writing blanket implementations it its better to use wrappers
with write_into
function because there might be implementation conflicts
(e.g. between WriteInto
for u8
and WriteInto
for any
std::iter::IntoIterator
).
Example
use leb128;
use std::{convert, io};
use write_into::{WriteInto, write_into};
// https://en.wikipedia.org/wiki/LEB128
struct Leb128<T>(T);
impl<T> WriteInto for Leb128<T>
where
// `leb128` crate uses `u64` and I'm too lazy to write multiple implementations (._.)
T: convert::Into<u64>,
{
type Output = ();
fn write_into(self, sink: &mut impl io::Write) -> io::Result<Self::Output> {
leb128::write::unsigned(sink, self.0.into())?;
Ok(())
}
}
let mut buffer = Vec::new();
write_into(&mut buffer, Leb128(1337u32)).unwrap();
The crate also provides implementations for endianness-aware writing for primitive integral
types (see BigEndian
and LittleEndian
wrappers).
Structs
Used to write values in big endian byte order.
Used to write values in little endian byte order.
Traits
Writes value into I/O sink.
Functions
An alias for WriteInto::write_into
for writing write_into(sink, Wrapper(...))
instead of
Wrapper(...).write_into(sink)
.