Update for unsafe-any changes.
This commit is contained in:
20
src/net.rs
20
src/net.rs
@@ -105,12 +105,20 @@ impl<'a> Writer for &'a mut NetworkStream {
|
|||||||
fn flush(&mut self) -> IoResult<()> { (**self).flush() }
|
fn flush(&mut self) -> IoResult<()> { (**self).flush() }
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UncheckedBoxAnyDowncast for Box<NetworkStream + Send> {
|
impl UnsafeAnyExt for NetworkStream + Send {
|
||||||
unsafe fn downcast_unchecked<T: 'static>(self) -> Box<T> {
|
unsafe fn downcast_ref_unchecked<T: 'static>(&self) -> &T {
|
||||||
let to = *mem::transmute::<&Box<NetworkStream + Send>, &raw::TraitObject>(&self);
|
mem::transmute(mem::transmute::<&NetworkStream + Send,
|
||||||
// Prevent double-free.
|
raw::TraitObject>(self).data)
|
||||||
mem::forget(self);
|
}
|
||||||
mem::transmute(to.data)
|
|
||||||
|
unsafe fn downcast_mut_unchecked<T: 'static>(&mut self) -> &mut T {
|
||||||
|
mem::transmute(mem::transmute::<&mut NetworkStream + Send,
|
||||||
|
raw::TraitObject>(self).data)
|
||||||
|
}
|
||||||
|
|
||||||
|
unsafe fn downcast_unchecked<T: 'static>(self: Box<NetworkStream + Send>) -> Box<T> {
|
||||||
|
mem::transmute(mem::transmute::<Box<NetworkStream + Send>,
|
||||||
|
raw::TraitObject>(self).data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user