diff --git a/implementations/rust/oo/benches/codec.rs b/implementations/rust/oo/benches/codec.rs index f1055ae..90aa4dc 100644 --- a/implementations/rust/oo/benches/codec.rs +++ b/implementations/rust/oo/benches/codec.rs @@ -50,7 +50,7 @@ pub fn large_testdata_decoder_with_ann(c: &mut Criterion) { let mut bs = vec![]; fh.read_to_end(&mut bs).ok(); b.iter(|| { - let mut src = BytesBinarySource::new(&bs[..]); + let src = BytesBinarySource::new(&bs[..]); let mut r = IOValues::new(src.packed()).read_annotations(true); while let Some(Ok(_)) = r.next() {} }) @@ -63,7 +63,7 @@ pub fn large_testdata_decoder_without_ann(c: &mut Criterion) { let mut bs = vec![]; fh.read_to_end(&mut bs).ok(); b.iter(|| { - let mut src = BytesBinarySource::new(&bs[..]); + let src = BytesBinarySource::new(&bs[..]); let mut r = IOValues::new(src.packed()).read_annotations(false); while let Some(Ok(_)) = r.next() {} }) @@ -73,7 +73,7 @@ pub fn large_testdata_decoder_without_ann(c: &mut Criterion) { pub fn large_testdata_encoder(c: &mut Criterion) { c.bench_function("(oo) encode testdata.bin", |b| { let mut fh = io::BufReader::new(File::open("benches/testdata.bin").unwrap()); - let mut src = IOBinarySource::new(&mut fh); + let src = IOBinarySource::new(&mut fh); let vs = IOValues::new(src.packed()).read_annotations(true).collect::, _>>().unwrap(); b.iter_with_large_drop(|| { let mut bs = vec![]; diff --git a/implementations/rust/oo/src/packed/reader.rs b/implementations/rust/oo/src/packed/reader.rs index 633aac0..cbfbf01 100644 --- a/implementations/rust/oo/src/packed/reader.rs +++ b/implementations/rust/oo/src/packed/reader.rs @@ -24,12 +24,12 @@ use super::super::{ source::BinarySource, }; -pub struct PackedReader<'de, 'src, S: BinarySource<'de>> { - pub source: &'src mut S, +pub struct PackedReader<'de, S: BinarySource<'de>> { + pub source: S, phantom: PhantomData<&'de ()>, } -impl<'de, 'src, S: BinarySource<'de>> BinarySource<'de> for PackedReader<'de, 'src, S> { +impl<'de, S: BinarySource<'de>> BinarySource<'de> for PackedReader<'de, S> { #[inline(always)] fn mark(&mut self) -> io::Result { self.source.mark() @@ -72,9 +72,9 @@ fn out_of_range>(i: I) -> error::Error { error::Error::NumberOutOfRange(i.into()) } -impl<'de, 'src, S: BinarySource<'de>> PackedReader<'de, 'src, S> { +impl<'de, S: BinarySource<'de>> PackedReader<'de, S> { #[inline(always)] - pub fn new(source: &'src mut S) -> Self { + pub fn new(source: S) -> Self { PackedReader { source, phantom: PhantomData } } @@ -249,7 +249,7 @@ impl<'de, 'src, S: BinarySource<'de>> PackedReader<'de, 'src, S> { } } -impl<'de, 'src, S: BinarySource<'de>> Reader<'de> for PackedReader<'de, 'src, S> { +impl<'de, S: BinarySource<'de>> Reader<'de> for PackedReader<'de, S> { fn peek_class(&mut self) -> io::Result> { match Tag::try_from(match self.peek()? { None => return Ok(None), diff --git a/implementations/rust/oo/src/source.rs b/implementations/rust/oo/src/source.rs index ccd8c1b..cdd5204 100644 --- a/implementations/rust/oo/src/source.rs +++ b/implementations/rust/oo/src/source.rs @@ -39,11 +39,11 @@ pub trait BinarySource<'de>: Sized { }) } - fn packed(&mut self) -> super::PackedReader<'de, '_, Self> { + fn packed(self) -> super::PackedReader<'de, Self> { super::PackedReader::new(self) } - fn text(&mut self) -> super::TextReader<'de, '_, Self> { + fn text(self) -> super::TextReader<'de, Self> { super::TextReader::new(self) } } diff --git a/implementations/rust/oo/src/text/reader.rs b/implementations/rust/oo/src/text/reader.rs index 960adf2..f382672 100644 --- a/implementations/rust/oo/src/text/reader.rs +++ b/implementations/rust/oo/src/text/reader.rs @@ -41,15 +41,15 @@ impl<'r> From<&'r Classification> for NextToken { } } -pub struct TextReader<'de, 'src, S: BinarySource<'de>> { - pub source: &'src mut S, +pub struct TextReader<'de, S: BinarySource<'de>> { + pub source: S, classification_cache: Option, phantom: PhantomData<&'de ()>, } -impl<'de, 'src, S: BinarySource<'de>> TextReader<'de, 'src, S> +impl<'de, S: BinarySource<'de>> TextReader<'de, S> { - pub fn new(source: &'src mut S) -> Self { + pub fn new(source: S) -> Self { TextReader { source, classification_cache: None, @@ -338,7 +338,7 @@ impl<'de, 'src, S: BinarySource<'de>> TextReader<'de, 'src, S> } } -impl<'de, 'src, S: BinarySource<'de>> Reader<'de> for TextReader<'de, 'src, S> +impl<'de, S: BinarySource<'de>> Reader<'de> for TextReader<'de, S> { fn peek_class(&mut self) -> io::Result> { if let Some(a) = &self.classification_cache {