Trait TransformableRead

Source
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]);

Required Methods§

Source

fn transform( self, buffer_size: usize, transform_fn: TransformFn, ) -> ReadTransformer<T>

Source

fn transform_by_tuple(self, _: (usize, TransformFn)) -> ReadTransformer<T>

Implementors§