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() }
|
||||
}
|
||||
|
||||
impl UncheckedBoxAnyDowncast for Box<NetworkStream + Send> {
|
||||
unsafe fn downcast_unchecked<T: 'static>(self) -> Box<T> {
|
||||
let to = *mem::transmute::<&Box<NetworkStream + Send>, &raw::TraitObject>(&self);
|
||||
// Prevent double-free.
|
||||
mem::forget(self);
|
||||
mem::transmute(to.data)
|
||||
impl UnsafeAnyExt for NetworkStream + Send {
|
||||
unsafe fn downcast_ref_unchecked<T: 'static>(&self) -> &T {
|
||||
mem::transmute(mem::transmute::<&NetworkStream + Send,
|
||||
raw::TraitObject>(self).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