[−][src]Struct bufsize::SizeCounter
Implementation of BufMut
to count the size of a resulting buffer.
This effectively requires the data to be serialized twice, but in many use cases inlining allows most of the effort of generating actual data to be elided.
Example
use bufsize::SizeCounter; use bytes::BufMut; pub struct DataStructure; impl DataStructure { pub fn serialize<B: BufMut>(&self, buf: &mut B) { let name = "DataStructure"; buf.put_u8(name.len() as u8); buf.put_slice(name.as_bytes()); buf.put_u32_le(9999); buf.put_f32_le(1.0); } } fn main() { let mut sizecount = SizeCounter::new(); DataStructure.serialize(&mut sizecount); let mut buffer = Vec::with_capacity(sizecount.size()); DataStructure.serialize(&mut buffer); assert_eq!(sizecount.size(), buffer.len()); }
Implementations
impl SizeCounter
[src]
Trait Implementations
impl BufMut for SizeCounter
[src]
fn remaining_mut(&self) -> usize
[src]
unsafe fn advance_mut(&mut self, cnt: usize)
[src]
fn has_remaining_mut(&self) -> bool
[src]
fn bytes_mut(&mut self) -> &mut [MaybeUninit<u8>]
[src]
fn bytes_vectored_mut<'a>(&'a mut self, dst: &mut [IoSliceMut<'a>]) -> usize
[src]
fn put<T: Buf>(&mut self, src: T) where
Self: Sized,
[src]
Self: Sized,
fn put_slice(&mut self, src: &[u8])
[src]
fn put_u8(&mut self, n: u8)
[src]
fn put_i8(&mut self, n: i8)
[src]
fn put_u16(&mut self, n: u16)
[src]
fn put_u16_le(&mut self, n: u16)
[src]
fn put_i16(&mut self, n: i16)
[src]
fn put_i16_le(&mut self, n: i16)
[src]
fn put_u32(&mut self, n: u32)
[src]
fn put_u32_le(&mut self, n: u32)
[src]
fn put_i32(&mut self, n: i32)
[src]
fn put_i32_le(&mut self, n: i32)
[src]
fn put_u64(&mut self, n: u64)
[src]
fn put_u64_le(&mut self, n: u64)
[src]
fn put_i64(&mut self, n: i64)
[src]
fn put_i64_le(&mut self, n: i64)
[src]
fn put_u128(&mut self, n: u128)
[src]
fn put_u128_le(&mut self, n: u128)
[src]
fn put_i128(&mut self, n: i128)
[src]
fn put_i128_le(&mut self, n: i128)
[src]
fn put_uint(&mut self, n: u64, nbytes: usize)
[src]
fn put_uint_le(&mut self, n: u64, nbytes: usize)
[src]
fn put_int(&mut self, n: i64, nbytes: usize)
[src]
fn put_int_le(&mut self, n: i64, nbytes: usize)
[src]
fn put_f32(&mut self, n: f32)
[src]
fn put_f32_le(&mut self, n: f32)
[src]
fn put_f64(&mut self, n: f64)
[src]
fn put_f64_le(&mut self, n: f64)
[src]
impl Debug for SizeCounter
[src]
Auto Trait Implementations
impl RefUnwindSafe for SizeCounter
impl Send for SizeCounter
impl Sync for SizeCounter
impl Unpin for SizeCounter
impl UnwindSafe for SizeCounter
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<B> BufMutExt for B where
B: BufMut + ?Sized,
[src]
B: BufMut + ?Sized,
fn limit(self, limit: usize) -> Limit<Self>
[src]
fn writer(self) -> Writer<Self>
[src]
fn chain_mut<U>(self, next: U) -> Chain<Self, U> where
U: BufMut,
[src]
U: BufMut,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,