diff options
Diffstat (limited to 'src/libstd/sys/windows/io.rs')
| -rw-r--r-- | src/libstd/sys/windows/io.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/libstd/sys/windows/io.rs b/src/libstd/sys/windows/io.rs index f0da2323f4f..e44dcbe164d 100644 --- a/src/libstd/sys/windows/io.rs +++ b/src/libstd/sys/windows/io.rs @@ -22,6 +22,18 @@ impl<'a> IoSlice<'a> { } #[inline] + pub fn advance(&mut self, n: usize) { + if (self.vec.len as usize) < n { + panic!("advancing IoSlice beyond its length"); + } + + unsafe { + self.vec.len -= n as c::ULONG; + self.vec.buf = self.vec.buf.add(n); + } + } + + #[inline] pub fn as_slice(&self) -> &[u8] { unsafe { slice::from_raw_parts(self.vec.buf as *mut u8, self.vec.len as usize) @@ -49,6 +61,18 @@ impl<'a> IoSliceMut<'a> { } #[inline] + pub fn advance(&mut self, n: usize) { + if (self.vec.len as usize) < n { + panic!("advancing IoSliceMut beyond its length"); + } + + unsafe { + self.vec.len -= n as c::ULONG; + self.vec.buf = self.vec.buf.add(n); + } + } + + #[inline] pub fn as_slice(&self) -> &[u8] { unsafe { slice::from_raw_parts(self.vec.buf as *mut u8, self.vec.len as usize) |
