pub trait Checkable: Checkable + Sized {
// Required methods
fn write<W: BitWrite + ?Sized>(&self, writer: &mut W) -> Result<()>;
fn written_bits(&self) -> u32;
}Expand description
A trait for writable types whose values can be validated
Ordinarily, when writing a value to a stream with a given number of bits, the value must be validated to ensure it will fit within that number of bits.
§Example 1
use bitstream_io::{BitWrite, BitWriter, BigEndian};
let mut w = BitWriter::endian(vec![], BigEndian);
// writing a value of 2 in 1 bit is always an error
// which is checked here at write-time
assert!(w.write::<1, u8>(2).is_err());But if the value can be checked beforehand, it doesn’t need to be checked at write-time.
§Example 2
use bitstream_io::{BitWrite, BitWriter, BigEndian, CheckedUnsigned};
let mut w = BitWriter::endian(vec![], BigEndian);
// writing a value of 1 in 1 bit is ok
// and we're checking that validity at this stage
let value = CheckedUnsigned::<1, u8>::new_fixed::<1>(1).unwrap();
// because we've pre-validated the value beforehand,
// it doesn't need to be checked again here
// (though the write itself may still fail)
assert!(w.write_checked(value).is_ok());Required Methods§
Sourcefn write<W: BitWrite + ?Sized>(&self, writer: &mut W) -> Result<()>
fn write<W: BitWrite + ?Sized>(&self, writer: &mut W) -> Result<()>
Write our value to the given stream
Sourcefn written_bits(&self) -> u32
fn written_bits(&self) -> u32
The number of written bits
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".