[][src]Crate timely_bytes

A simplified implementation of the bytes crate, with different features, less safety.

#Examples

use timely_bytes::rc::Bytes;

let bytes = vec![0u8; 1024];
let mut shared1 = Bytes::from(bytes);
let mut shared2 = shared1.extract_to(100);
let mut shared3 = shared1.extract_to(100);
let mut shared4 = shared2.extract_to(60);

assert_eq!(shared1.len(), 824);
assert_eq!(shared2.len(), 40);
assert_eq!(shared3.len(), 100);
assert_eq!(shared4.len(), 60);

for byte in shared1.iter_mut() { *byte = 1u8; }
for byte in shared2.iter_mut() { *byte = 2u8; }
for byte in shared3.iter_mut() { *byte = 3u8; }
for byte in shared4.iter_mut() { *byte = 4u8; }

drop(shared1);
drop(shared2);
drop(shared3);

if let Ok(bytes) = shared4.try_recover::<Vec<u8>>() {
    assert_eq!(bytes[200..1024].to_vec(), [1u8;824].to_vec());
    assert_eq!(bytes[60..100].to_vec(),   [2u8;40].to_vec());
    assert_eq!(bytes[100..200].to_vec(),  [3u8;100].to_vec());
    assert_eq!(bytes[0..60].to_vec(),     [4u8;60].to_vec());
}
else {
    panic!("unrecoverable!");
}

Modules

arc

An Arc-backed mutable byte slice backed by a common allocation.

rc

An Rc-backed mutable byte slice backed by a common allocation.