pub struct BitWriter<W: Write, E: Endianness> { /* private fields */ }
Expand description
For writing bit values to an underlying stream in a given endianness.
Because this only writes whole bytes to the underlying stream, it is important that output is byte-aligned before the bitstream writer’s lifetime ends. Partial bytes will be lost if the writer is disposed of before they can be written.
Implementations§
Source§impl<W: Write, E: Endianness> BitWriter<W, E>
impl<W: Write, E: Endianness> BitWriter<W, E>
Sourcepub fn new(writer: W) -> BitWriter<W, E>
pub fn new(writer: W) -> BitWriter<W, E>
Wraps a BitWriter around something that implements Write
Sourcepub fn endian(writer: W, _endian: E) -> BitWriter<W, E>
pub fn endian(writer: W, _endian: E) -> BitWriter<W, E>
Wraps a BitWriter around something that implements Write
with the given endianness.
Sourcepub fn into_writer(self) -> W
pub fn into_writer(self) -> W
Unwraps internal writer and disposes of BitWriter.
§Warning
Any unwritten partial bits are discarded.
Sourcepub fn writer(&mut self) -> Option<&mut W>
pub fn writer(&mut self) -> Option<&mut W>
If stream is byte-aligned, provides mutable reference
to internal writer. Otherwise returns None
Sourcepub fn aligned_writer(&mut self) -> Result<&mut W>
pub fn aligned_writer(&mut self) -> Result<&mut W>
Returns byte-aligned mutable reference to internal writer.
Bytes aligns stream if it is not already aligned.
§Errors
Passes along any I/O error from the underlying stream.
Sourcepub fn into_bytewriter(self) -> ByteWriter<W, E>
pub fn into_bytewriter(self) -> ByteWriter<W, E>
Converts BitWriter
to ByteWriter
in the same endianness.
§Warning
Any written partial bits are discarded.
Sourcepub fn bytewriter(&mut self) -> Option<ByteWriter<&mut W, E>>
pub fn bytewriter(&mut self) -> Option<ByteWriter<&mut W, E>>
If stream is byte-aligned, provides temporary ByteWriter
in the same endianness. Otherwise returns None
§Warning
Any unwritten bits left over when ByteWriter
is dropped are lost.
Trait Implementations§
Source§impl<W: Write, E: Endianness> BitWrite for BitWriter<W, E>
impl<W: Write, E: Endianness> BitWrite for BitWriter<W, E>
Source§fn write_unsigned<const BITS: u32, U>(&mut self, value: U) -> Result<()>where
U: UnsignedInteger,
fn write_unsigned<const BITS: u32, U>(&mut self, value: U) -> Result<()>where
U: UnsignedInteger,
Source§fn write_unsigned_counted<const BITS: u32, U>(
&mut self,
bits: BitCount<BITS>,
value: U,
) -> Result<()>where
U: UnsignedInteger,
fn write_unsigned_counted<const BITS: u32, U>(
&mut self,
bits: BitCount<BITS>,
value: U,
) -> Result<()>where
U: UnsignedInteger,
Source§fn write_signed_counted<const BITS: u32, S>(
&mut self,
bits: impl TryInto<SignedBitCount<BITS>>,
value: S,
) -> Result<()>where
S: SignedInteger,
fn write_signed_counted<const BITS: u32, S>(
&mut self,
bits: impl TryInto<SignedBitCount<BITS>>,
value: S,
) -> Result<()>where
S: SignedInteger,
Source§fn write_signed<const BITS: u32, S>(&mut self, value: S) -> Result<()>where
S: SignedInteger,
fn write_signed<const BITS: u32, S>(&mut self, value: S) -> Result<()>where
S: SignedInteger,
Source§fn write_from<V>(&mut self, value: V) -> Result<()>where
V: Primitive,
fn write_from<V>(&mut self, value: V) -> Result<()>where
V: Primitive,
Source§fn write_as_from<F, V>(&mut self, value: V) -> Result<()>where
F: Endianness,
V: Primitive,
fn write_as_from<F, V>(&mut self, value: V) -> Result<()>where
F: Endianness,
V: Primitive,
Source§fn write_unary<const STOP_BIT: u8>(&mut self, value: u32) -> Result<()>
fn write_unary<const STOP_BIT: u8>(&mut self, value: u32) -> Result<()>
value
number of non STOP_BIT
bits to the stream
and then writes a STOP_BIT
. This field is variably-sized.
STOP_BIT
must be 0 or 1. Read moreSource§fn write_bytes(&mut self, buf: &[u8]) -> Result<()>
fn write_bytes(&mut self, buf: &[u8]) -> Result<()>
Source§fn byte_aligned(&self) -> bool
fn byte_aligned(&self) -> bool
Source§fn write<const BITS: u32, I>(&mut self, value: I) -> Result<()>where
I: Integer,
fn write<const BITS: u32, I>(&mut self, value: I) -> Result<()>where
I: Integer,
Source§fn write_var<I>(&mut self, bits: u32, value: I) -> Result<()>where
I: Integer,
fn write_var<I>(&mut self, bits: u32, value: I) -> Result<()>where
I: Integer,
Source§fn write_unsigned_var<U>(&mut self, bits: u32, value: U) -> Result<()>where
U: UnsignedInteger,
fn write_unsigned_var<U>(&mut self, bits: u32, value: U) -> Result<()>where
U: UnsignedInteger,
Source§fn write_signed_var<S>(&mut self, bits: u32, value: S) -> Result<()>where
S: SignedInteger,
fn write_signed_var<S>(&mut self, bits: u32, value: S) -> Result<()>where
S: SignedInteger,
Source§fn write_count<const MAX: u32>(&mut self, _: BitCount<MAX>) -> Result<()>
fn write_count<const MAX: u32>(&mut self, _: BitCount<MAX>) -> Result<()>
Source§fn write_counted<const MAX: u32, I>(
&mut self,
bits: BitCount<MAX>,
value: I,
) -> Result<()>
fn write_counted<const MAX: u32, I>( &mut self, bits: BitCount<MAX>, value: I, ) -> Result<()>
Source§fn write_const<const BITS: u32, const VALUE: u32>(&mut self) -> Result<()>
fn write_const<const BITS: u32, const VALUE: u32>(&mut self) -> Result<()>
Source§fn pad(&mut self, bits: u32) -> Result<()>
fn pad(&mut self, bits: u32) -> Result<()>
Source§fn build<T: ToBitStream>(&mut self, build: &T) -> Result<(), T::Error>
fn build<T: ToBitStream>(&mut self, build: &T) -> Result<(), T::Error>
Source§fn build_with<'a, T: ToBitStreamWith<'a>>(
&mut self,
build: &T,
context: &T::Context,
) -> Result<(), T::Error>
fn build_with<'a, T: ToBitStreamWith<'a>>( &mut self, build: &T, context: &T::Context, ) -> Result<(), T::Error>
Source§fn byte_align(&mut self) -> Result<()>
fn byte_align(&mut self) -> Result<()>
Auto Trait Implementations§
impl<W, E> Freeze for BitWriter<W, E>where
W: Freeze,
impl<W, E> RefUnwindSafe for BitWriter<W, E>where
W: RefUnwindSafe,
E: RefUnwindSafe,
impl<W, E> Send for BitWriter<W, E>
impl<W, E> Sync for BitWriter<W, E>
impl<W, E> Unpin for BitWriter<W, E>
impl<W, E> UnwindSafe for BitWriter<W, E>where
W: UnwindSafe,
E: UnwindSafe,
Blanket Implementations§
Source§impl<W> BitWrite2 for Wwhere
W: BitWrite,
impl<W> BitWrite2 for Wwhere
W: BitWrite,
Source§fn write<I>(&mut self, bits: u32, value: I) -> Result<(), Error>where
I: Integer,
fn write<I>(&mut self, bits: u32, value: I) -> Result<(), Error>where
I: Integer,
Source§fn write_out<const BITS: u32, I>(&mut self, value: I) -> Result<(), Error>where
I: Integer,
fn write_out<const BITS: u32, I>(&mut self, value: I) -> Result<(), Error>where
I: Integer,
Source§fn write_unsigned<U>(&mut self, bits: u32, value: U) -> Result<(), Error>where
U: UnsignedInteger,
fn write_unsigned<U>(&mut self, bits: u32, value: U) -> Result<(), Error>where
U: UnsignedInteger,
Source§fn write_unsigned_out<const BITS: u32, U>(
&mut self,
value: U,
) -> Result<(), Error>where
U: UnsignedInteger,
fn write_unsigned_out<const BITS: u32, U>(
&mut self,
value: U,
) -> Result<(), Error>where
U: UnsignedInteger,
Source§fn write_signed<S>(&mut self, bits: u32, value: S) -> Result<(), Error>where
S: SignedInteger,
fn write_signed<S>(&mut self, bits: u32, value: S) -> Result<(), Error>where
S: SignedInteger,
Source§fn write_signed_out<const BITS: u32, S>(
&mut self,
value: S,
) -> Result<(), Error>where
S: SignedInteger,
fn write_signed_out<const BITS: u32, S>(
&mut self,
value: S,
) -> Result<(), Error>where
S: SignedInteger,
Source§fn write_from<V>(&mut self, value: V) -> Result<(), Error>where
V: Primitive,
fn write_from<V>(&mut self, value: V) -> Result<(), Error>where
V: Primitive,
Source§fn write_as_from<F, V>(&mut self, value: V) -> Result<(), Error>where
F: Endianness,
V: Primitive,
fn write_as_from<F, V>(&mut self, value: V) -> Result<(), Error>where
F: Endianness,
V: Primitive,
Source§fn pad(&mut self, bits: u32) -> Result<(), Error>
fn pad(&mut self, bits: u32) -> Result<(), Error>
Source§fn write_bytes(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_bytes(&mut self, buf: &[u8]) -> Result<(), Error>
Source§fn write_unary0(&mut self, value: u32) -> Result<(), Error>
fn write_unary0(&mut self, value: u32) -> Result<(), Error>
value
number of 1 bits to the stream
and then writes a 0 bit. This field is variably-sized. Read moreSource§fn write_unary1(&mut self, value: u32) -> Result<(), Error>
fn write_unary1(&mut self, value: u32) -> Result<(), Error>
value
number of 0 bits to the stream
and then writes a 1 bit. This field is variably-sized. Read more