use core::raw::TraitObject;
use core::result::Result;
use core::result::Result::{Ok, Err};
+use core::ops::{Deref, DerefMut};
/// A value that represents the global exchange heap. This is the default
/// place that the `box` keyword allocates into when no place is supplied.
}
}
+impl<Sized? T> Deref<T> for Box<T> {
+ fn deref(&self) -> &T { &**self }
+}
+
+impl<Sized? T> DerefMut<T> for Box<T> {
+ fn deref_mut(&mut self) -> &mut T { &mut **self }
+}
+
#[cfg(test)]
mod test {
#[test]
let s = format!("{}", b);
assert_eq!(s, "&Any");
}
+
+ #[test]
+ fn deref() {
+ fn homura<T: Deref<i32>>(_: T) { }
+ homura(box 765i32);
+ }
}