diff --git a/src/imp/buf/mod.rs b/src/imp/buf/mod.rs index 44c20f0..04c4ed2 100644 --- a/src/imp/buf/mod.rs +++ b/src/imp/buf/mod.rs @@ -635,7 +635,14 @@ impl WriteExt for T { impl> Buf for io::Cursor { fn remaining(&self) -> usize { - self.get_ref().as_ref().len() - self.position() as usize + let len = self.get_ref().as_ref().len(); + let pos = self.position(); + + if pos >= len as u64 { + return 0; + } + + len - pos as usize } fn bytes(&self) -> &[u8] { @@ -653,7 +660,7 @@ impl> Buf for io::Cursor { impl + AsRef<[u8]>> MutBuf for io::Cursor { fn remaining(&self) -> usize { - self.get_ref().as_ref().len() - self.position() as usize + Buf::remaining(self) } /// Advance the internal cursor of the MutBuf