#bytes

bufsize

bytes::BufMut implementation to count buffer size

8 releases (4 stable)

1.0.3 Aug 3, 2022
1.0.2 Aug 1, 2022
1.0.1 Apr 30, 2022
1.0.0 Dec 27, 2020
0.4.0 Oct 9, 2019

#26 in Memory management

Download history 4724/week @ 2022-04-25 6164/week @ 2022-05-02 7514/week @ 2022-05-09 8264/week @ 2022-05-16 6222/week @ 2022-05-23 6681/week @ 2022-05-30 8420/week @ 2022-06-06 6502/week @ 2022-06-13 7062/week @ 2022-06-20 6779/week @ 2022-06-27 6563/week @ 2022-07-04 6722/week @ 2022-07-11 6555/week @ 2022-07-18 8396/week @ 2022-07-25 6416/week @ 2022-08-01 7475/week @ 2022-08-08

29,055 downloads per month
Used in 34 crates (2 directly)

MIT/Apache

9KB
176 lines

bufsize::SizeCounter

github crates.io docs.rs build status

This library provides an implementation of bytes::BufMut to count the size of a resulting buffer.

[dependencies]
bufsize = "1.0"

Compiler support: requires rustc 1.39+


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());
}

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~160KB