Crate const_writer[−][src]
Provides ConstWriter
abstraction to write constant amount of bytes with compile time checks
Result of fun experiment with const_generics
and const_evaluatable_checked
features
use const_writer::ConstWrite; let mut vec = vec![]; { let writer = vec.const_writer::<10>() // reserve 10 bytes in vec .write_u32_le(12) // no runtime checks .write_u32_le(34); // no runtime checks assert_eq!(writer.remaining(), 2); } assert_eq!(vec.len(), 8); assert_eq!(&vec[0..8], &[12, 0, 0, 0, 34, 0, 0, 0]);
ⓘ
use const_writer::ConstWrite; let mut buff = [0u8; 1024]; buff.as_mut().const_writer::<10>() .write_slice(&[1, 2, 3, 4, 5, 6]) .write_u64_le(111); // compile error.
Usage in functions
use const_writer::{ConstWriterAdapter, ConstWriter, ConstWrite}; // write 10 bytes fn write_struct<T: ConstWriterAdapter>(writer: ConstWriter<T, 10>) { writer .write_u16_le(34) .write_u16_le(2) .write_u16_le(3) .write_u16_le(4) .write_u16_le(5); } let mut buff = [0u8; 16]; write_struct(buff.as_mut().const_writer()); assert_eq!(buff, [34, 0, 2, 0, 3, 0, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0]);
Modules
slice | |
vec |
Structs
ConstWriter | Writer that keeping track of space left using const_generic params. |
Traits
ConstWrite | Get |
ConstWriterAdapter | Source of all performance of crate. Provide unsafe interface to underlying buffer. |
ConstWriterAdapterCreate | Trait for creating |