bitstream_io::write

Struct BitCounter

Source
pub struct BitCounter<N, E: Endianness> { /* private fields */ }
Expand description

For counting the number of bits written but generating no output.

§Example

use bitstream_io::{BigEndian, BitWrite, BitCounter};
let mut writer: BitCounter<u32, BigEndian> = BitCounter::new();
writer.write(1, 0b1).unwrap();
writer.write(2, 0b01).unwrap();
writer.write(5, 0b10111).unwrap();
assert_eq!(writer.written(), 8);

Implementations§

Source§

impl<N: Default + Copy, E: Endianness> BitCounter<N, E>

Source

pub fn new() -> Self

Creates new counter

Source

pub fn written(&self) -> N

Returns number of bits written

Trait Implementations§

Source§

impl<N, E> BitWrite for BitCounter<N, E>
where E: Endianness, N: Copy + AddAssign + From<u32> + Rem<Output = N> + PartialEq,

Source§

fn write_bit(&mut self, _bit: bool) -> Result<()>

Writes a single bit to the stream. true indicates 1, false indicates 0 Read more
Source§

fn write<U>(&mut self, bits: u32, value: U) -> Result<()>
where U: Numeric,

Writes an unsigned value to the stream using the given number of bits. Read more
Source§

fn write_out<const BITS: u32, U>(&mut self, value: U) -> Result<()>
where U: Numeric,

Writes an unsigned value to the stream using the given const number of bits. Read more
Source§

fn write_signed<S>(&mut self, bits: u32, value: S) -> Result<()>
where S: SignedNumeric,

Writes a twos-complement signed value to the stream with the given number of bits. Read more
Source§

fn write_signed_out<const BITS: u32, S>(&mut self, value: S) -> Result<()>
where S: SignedNumeric,

Writes a twos-complement signed value to the stream with the given const number of bits. Read more
Source§

fn write_from<V>(&mut self, value: V) -> Result<()>
where V: Primitive,

Writes whole value to the stream whose size in bits is equal to its type’s size. Read more
Source§

fn write_as_from<F, V>(&mut self, value: V) -> Result<()>
where F: Endianness, V: Primitive,

Writes whole value to the stream whose size in bits is equal to its type’s size in an endianness that may be different from the stream’s endianness. Read more
Source§

fn write_unary1(&mut self, value: u32) -> Result<()>

Writes value number of 0 bits to the stream and then writes a 1 bit. This field is variably-sized. Read more
Source§

fn write_unary0(&mut self, value: u32) -> Result<()>

Writes value number of 1 bits to the stream and then writes a 0 bit. This field is variably-sized. Read more
Source§

fn write_bytes(&mut self, buf: &[u8]) -> Result<()>

Writes the entirety of a byte buffer to the stream. Read more
Source§

fn byte_aligned(&self) -> bool

Returns true if the stream is aligned at a whole byte.
Source§

fn build<T: ToBitStream>(&mut self, build: &T) -> Result<(), T::Error>

Builds and writes complex type
Source§

fn build_with<'a, T: ToBitStreamWith<'a>>( &mut self, build: &T, context: &T::Context, ) -> Result<(), T::Error>

Builds and writes complex type with context
Source§

fn byte_align(&mut self) -> Result<()>

Pads the stream with 0 bits until it is aligned at a whole byte. Does nothing if the stream is already aligned. Read more
Source§

impl<N: Default, E: Default + Endianness> Default for BitCounter<N, E>

Source§

fn default() -> BitCounter<N, E>

Returns the “default value” for a type. Read more
Source§

impl<N, E> HuffmanWrite<E> for BitCounter<N, E>
where E: Endianness, N: AddAssign + From<u32>,

Source§

fn write_huffman<T>( &mut self, tree: &WriteHuffmanTree<E, T>, symbol: T, ) -> Result<()>
where T: Ord + Copy,

Writes Huffman code for the given symbol to the stream. Read more

Auto Trait Implementations§

§

impl<N, E> Freeze for BitCounter<N, E>
where N: Freeze,

§

impl<N, E> RefUnwindSafe for BitCounter<N, E>

§

impl<N, E> Send for BitCounter<N, E>
where N: Send, E: Send,

§

impl<N, E> Sync for BitCounter<N, E>
where N: Sync, E: Sync,

§

impl<N, E> Unpin for BitCounter<N, E>
where N: Unpin, E: Unpin,

§

impl<N, E> UnwindSafe for BitCounter<N, E>
where N: UnwindSafe, E: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.