From 8bc84de0213d60e810620a97449f83dc1bc9f13e Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Fri, 11 Aug 2023 23:04:09 +0200 Subject: break!: privatize PosTrackingReader fields --- src/spans.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/spans.rs b/src/spans.rs index 4333bd1..c3d269d 100644 --- a/src/spans.rs +++ b/src/spans.rs @@ -12,7 +12,7 @@ use std::ops::Range; -use crate::Reader; +use crate::{IntoReader, Reader}; /// A trait to be implemented by readers that track their own position. pub trait GetPos { @@ -23,9 +23,19 @@ pub trait GetPos { /// Wraps a [`Reader`] so that it implements [`GetPos`]. pub struct PosTrackingReader { /// The wrapped reader. - pub reader: R, + reader: R, /// The current position. - pub position: usize, + position: usize, +} + +impl PosTrackingReader { + /// Wraps the given [`Reader`] so that it implements [`GetPos`] with the position starting from 0. + pub fn new<'a>(into_reader: impl IntoReader<'a, Reader = R>) -> Self { + Self { + reader: into_reader.into_reader(), + position: 0, + } + } } impl GetPos for PosTrackingReader { -- cgit v1.2.3