Struct collections::boxed::Box
[−]
[src]
pub struct Box<T> where T: ?Sized(Unique<T>);
A pointer type for heap allocation.
See the module-level documentation for more.
Methods
impl<T> Box<T>
fn new(x: T) -> Box<T>
Allocates memory on the heap and then places x
into it.
Examples
fn main() { let five = Box::new(5); }let five = Box::new(5);
impl<T> Box<T> where T: ?Sized
unsafe fn from_raw(raw: *mut T) -> Box<T>
Constructs a box from a raw pointer.
After calling this function, the raw pointer is owned by the
resulting Box
. Specifically, the Box
destructor will call
the destructor of T
and free the allocated 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
via the Box::into_raw
function.
This function is unsafe because improper use may lead to memory problems. For example, a double-free may occur if the function is called twice on the same raw pointer.
fn into_raw(b: Box<T>) -> *mut T
Consumes the Box
, returning the wrapped raw pointer.
After calling this function, the caller is responsible for the
memory previously managed by the Box
. In particular, the
caller should properly destroy T
and release the memory. The
proper way to do so is to convert the raw pointer back into a
Box
with the Box::from_raw
function.
Examples
fn main() { let seventeen = Box::new(17); let raw = Box::into_raw(seventeen); let boxed_again = unsafe { Box::from_raw(raw) }; }let seventeen = Box::new(17); let raw = Box::into_raw(seventeen); let boxed_again = unsafe { Box::from_raw(raw) };
impl Box<Any + 'static>
fn downcast<T>(self) -> Result<Box<T>, Box<Any + 'static>> where T: Any
Attempt to downcast the box to a concrete type.
impl Box<Any + 'static + Send>
fn downcast<T>(self) -> Result<Box<T>, Box<Any + 'static + Send>> where T: Any
Attempt to downcast the box to a concrete type.