pub trait TransformableRead<T: Read>: Read {
// Required methods
fn transform(
self,
buffer_size: usize,
transform_fn: TransformFn,
) -> ReadTransformer<T> ⓘ;
fn transform_by_tuple(self, _: (usize, TransformFn)) -> ReadTransformer<T> ⓘ;
}
Expand description
Convenience trait which implemented by all Read
objects. Allows chaining of Read
objects.
§Example
ⓘ
let mut data = Cursor::new(vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10]).transform(
5,
Box::new(|buffer: &mut [u8], _position, _last_attempt| -> Option<(Vec<u8>, usize)> {
let buf = buffer
.iter()
.filter(|x| {
return *x % 2 == 0;
})
.cloned()
.collect::<Vec<_>>();
return Some((buf, buffer.len()));
}),
);
let mut out = vec![0; 5];
data.read_exact(&mut out).unwrap();
assert_eq!(out, [2, 4, 6, 8, 10]);