Crates.io | byte_buffer |
lib.rs | byte_buffer |
version | 0.1.3 |
source | src |
created_at | 2019-02-12 00:04:18.468769 |
updated_at | 2021-02-01 19:04:40.974437 |
description | A buffer-pool library aimed to provide performant and reused byte buffers for IO code |
homepage | |
repository | https://github.com/Chopinsky/byte_buffer.git |
max_upload_size | |
id | 114193 |
size | 24,416 |
This crate provides an easy-to-use and manageable byte buffer in frequent I/O operations, where implementations of the Read/Write traits are used extensively. With our pre-allocated buffer pool, your I/O code can save tons of wasted CPU cycles for dynamic buffer allocations, which are often the bottleneck of the throughout performance.
To use this crate, add the crate dependency in your project's Cargo.toml file:
[dependencies]
byte_buffer = "0.1"
Then you can use the buffer, after declaring the amount of buffer instances to be initialized, and the capacity of each instance.
extern crate byte_buffer;
use byte_buffer::prelude::*;
fn main() {
// Count of buffer: 10; Buffer capacity: 3
ByteBuffer::init(10, 3);
// Slice the buffer for use in your code
let mut buffer = ByteBuffer::slice();
// Fill the buffer with some byte data
io::repeat(0b101).read_exact(buffer.as_writable().unwrap()).unwrap();
// Read the data out. The buffer will be released back to the pool after going out of the scope
assert_eq!(buffer.as_readable().unwrap(), [0b101, 0b101, 0b101]);
}
Please feel free to submit bug reports or features.