# io-buffer
[](
https://github.com/NaturalIO/io-buffer-rs/actions)
[](
https://crates.io/crates/io-buffer)
[](
https://docs.rs/io-buffer)
[](
https://www.rust-lang.org)
This crate provide a 16 Bytes [Buffer] type, to unify the difference of different types of buffer,
for disk and network IO:
* max buffer size 1 << 31,
* Converts owned buffer, `From<Vec<u8>>` and `To<Vec<u8>>`.
* Allocation with [malloc()](Buffer::alloc())
* Allocation with [posix_memalign()](Buffer::aligned())
* Converts from [const reference](Buffer::from_c_ref_const()), or from
[mutable reference](Buffer::from_c_ref_mut()) of unsafe c code.
On debug mode, provides runtime checking if you try to as_mut() a const buffer.
## Usage
Cargo.toml:
``` toml
[dependencies]
io-buffer = "1"
```
## Feature flags
* compress: enable [Compression] trait
* lz4: enable lz4 compression
* rand: enable `rand_buffer()` function
* fail: enable `fail` injection point "alloc_buf" of return buffer allocate with random uninit content