From: Ian Jackson Date: Sat, 17 Apr 2021 12:08:39 +0000 (+0100) Subject: packetframe: Allow privately constructing one out of non-Buf X-Git-Tag: otter-0.6.0~567 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=91641624a63c21069749a6047b29f713c6dfbd2b;p=otter.git packetframe: Allow privately constructing one out of non-Buf Signed-off-by: Ian Jackson --- diff --git a/src/packetframe.rs b/src/packetframe.rs index f64960f7..2bb53654 100644 --- a/src/packetframe.rs +++ b/src/packetframe.rs @@ -25,13 +25,13 @@ type BO = BigEndian; pub struct Fuse(Result); #[derive(Debug)] -pub struct FrameReader { +pub struct FrameReader { inner: Fuse, in_frame: Option, } #[derive(Debug)] -pub struct ReadFrame<'r,R:BufRead> { +pub struct ReadFrame<'r,R:Read> { fr: Result<&'r mut FrameReader, Option>, } @@ -116,8 +116,11 @@ impl Display for Broken { } } -impl FrameReader { - pub fn new(r: R) -> FrameReader { +impl FrameReader { + pub fn new(r: R) -> FrameReader where R:BufRead { + Self::new_unbuf(r) + } + fn new_unbuf(r: R) -> FrameReader { FrameReader { inner: Fuse(Ok(r)), in_frame: None } } @@ -166,7 +169,7 @@ impl FrameReader { } } -impl<'r, R:BufRead> Read for ReadFrame<'r, R> { +impl<'r, R:Read> Read for ReadFrame<'r, R> { #[throws(io::Error)] fn read(&mut self, buf: &mut [u8]) -> usize { if buf.len() == 0 { return 0 }