From 3c182e422611801d9d723f99d328725a8794ca8d Mon Sep 17 00:00:00 2001 From: Brian Koropoff Date: Fri, 29 Aug 2014 01:13:43 -0700 Subject: [PATCH] Relax lifetime bounds on Reader/Writer impls for trait boxes Cargo needs this to be able to instantiate `TerminfoTerminal>` for 'a other than 'static. --- src/libstd/io/mod.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 38aa58f1c6a..46c7fee57d3 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -945,10 +945,16 @@ pub trait Reader { } } +#[cfg(stage0)] impl Reader for Box { fn read(&mut self, buf: &mut [u8]) -> IoResult { self.read(buf) } } +#[cfg(not(stage0))] +impl<'a> Reader for Box { + fn read(&mut self, buf: &mut [u8]) -> IoResult { self.read(buf) } +} + impl<'a> Reader for &'a mut Reader+'a { fn read(&mut self, buf: &mut [u8]) -> IoResult { self.read(buf) } } @@ -1295,6 +1301,7 @@ pub trait Writer { } } +#[cfg(stage0)] impl Writer for Box { #[inline] fn write(&mut self, buf: &[u8]) -> IoResult<()> { self.write(buf) } @@ -1303,6 +1310,15 @@ impl Writer for Box { fn flush(&mut self) -> IoResult<()> { self.flush() } } +#[cfg(not(stage0))] +impl<'a> Writer for Box { + #[inline] + fn write(&mut self, buf: &[u8]) -> IoResult<()> { self.write(buf) } + + #[inline] + fn flush(&mut self) -> IoResult<()> { self.flush() } +} + impl<'a> Writer for &'a mut Writer+'a { #[inline] fn write(&mut self, buf: &[u8]) -> IoResult<()> { self.write(buf) }