From 009fab4bdcf7c871035d5656d0b366b1c048d8a4 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 18 Apr 2021 12:34:49 +0100 Subject: [PATCH] packetframe: Fuse: introduce and use new() Signed-off-by: Ian Jackson --- src/packetframe.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/packetframe.rs b/src/packetframe.rs index b8edd722..0d60ad51 100644 --- a/src/packetframe.rs +++ b/src/packetframe.rs @@ -30,7 +30,7 @@ type BO = BigEndian; pub struct SenderError; #[derive(Debug)] -pub struct Fuse(Result); +pub struct Fuse{ inner: Result } /// An error saved by `Fuse` so it can be repeatedly returned. #[derive(Clone,Error,Debug)] @@ -110,9 +110,11 @@ impl From for io::Error { } impl Fuse { + pub fn new(rw: RW) -> Self { Fuse { inner: Ok(rw) } } + #[throws(io::Error)] pub fn get(&mut self) -> &mut RW { - self.0.as_mut().map_err(|broken| broken.clone())? + self.inner.as_mut().map_err(|broken| broken.clone())? } #[throws(io::Error)] @@ -122,7 +124,7 @@ impl Fuse { let inner = self.get()?; let r = f(inner); if let Err(e) = &r { - self.0 = Err(Broken { + self.inner = Err(Broken { msg: e.to_string(), kind: e.kind(), }); @@ -165,7 +167,7 @@ impl FrameReader { Self::new_unbuf(r) } fn new_unbuf(r: R) -> FrameReader { - FrameReader { inner: Fuse(Ok(r)), state: Idle } + FrameReader { inner: Fuse::new(r), state: Idle } } #[throws(io::Error)] @@ -278,7 +280,7 @@ impl<'r, R:Read> Read for ReadFrame<'r, R> { impl FrameWriter { pub fn new(w: W) -> FrameWriter { - FrameWriter { inner: Fuse(Ok(w)), in_frame: None } + FrameWriter { inner: Fuse::new(w), in_frame: None } } #[throws(io::Error)] -- 2.30.2