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_const<const BITS: u32, const VALUE: u32>(&mut self) -> Result<()>
 
fn write_const<const BITS: u32, const VALUE: u32>(&mut self) -> Result<()>
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: BitCount<BITS>,
    value: S,
) -> Result<()>where
    S: SignedInteger,
 
fn write_signed_counted<const BITS: u32, S>(
    &mut self,
    bits: BitCount<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 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