/// of `T` and releases memory. Since the way `Box` allocates and
/// releases memory is unspecified, the only valid pointer to pass
/// to this function is the one taken from another `Box` with
- /// `boxed::into_raw` function.
+ /// `Box::into_raw` function.
///
/// Function is unsafe, because improper use of this function may
/// lead to memory problems like double-free, for example if the
/// # Examples
/// ```
/// # #![feature(box_raw)]
- /// use std::boxed;
- ///
/// let seventeen = Box::new(17u32);
- /// let raw = boxed::into_raw(seventeen);
+ /// let raw = Box::into_raw(seventeen);
/// let boxed_again = unsafe { Box::from_raw(raw) };
/// ```
#[unstable(feature = "box_raw", reason = "may be renamed")]
#[test]
fn raw_sized() {
+ let x = Box::new(17);
+ let p = Box::into_raw(x);
unsafe {
- let x = Box::new(17);
- let p = boxed::into_raw(x);
assert_eq!(17, *p);
*p = 19;
let y = Box::from_raw(p);
}
}
+ let x: Box<Foo> = Box::new(Bar(17));
+ let p = Box::into_raw(x);
unsafe {
- let x: Box<Foo> = Box::new(Bar(17));
- let p = boxed::into_raw(x);
assert_eq!(17, (*p).get());
(*p).set(19);
let y: Box<Foo> = Box::from_raw(p);
//!
//! ```
//! # #![feature(box_raw)]
-//! use std::boxed;
+//! let my_speed: Box<i32> = Box::new(88);
+//! let my_speed: *mut i32 = Box::into_raw(my_speed);
//!
+//! // By taking ownership of the original `Box<T>` though
+//! // we are obligated to put it together later to be destroyed.
//! unsafe {
-//! let my_speed: Box<i32> = Box::new(88);
-//! let my_speed: *mut i32 = boxed::into_raw(my_speed);
-//!
-//! // By taking ownership of the original `Box<T>` though
-//! // we are obligated to put it together later to be destroyed.
//! drop(Box::from_raw(my_speed));
//! }
//! ```