W3cubDocs

/Rust

Trait std::ops::Boxed

pub trait Boxed {
    type Data;
    type Place: BoxPlace<Self::Data>;
    unsafe fn finalize(filled: Self::Place) -> Self;
}
🔬 This is a nightly-only experimental API. (placement_new_protocol #27779)

Core trait for the box EXPR form.

box EXPR effectively desugars into:

let mut place = BoxPlace::make_place();
let raw_place = Place::pointer(&mut place);
let value = EXPR;
unsafe {
    ::std::ptr::write(raw_place, value);
    Boxed::finalize(place)
}

The type of box EXPR is supplied from its surrounding context; in the above expansion, the result type T is used to determine which implementation of Boxed to use, and that <T as Boxed> in turn dictates determines which implementation of BoxPlace to use, namely: <<T as Boxed>::Place as BoxPlace>.

Associated Types

🔬 This is a nightly-only experimental API. (placement_new_protocol #27779)

The kind of data that is stored in this kind of box.

🔬 This is a nightly-only experimental API. (placement_new_protocol #27779)

The place that will negotiate the storage of the data.

Required Methods

🔬 This is a nightly-only experimental API. (placement_new_protocol #27779)

Converts filled place into final owning value, shifting deallocation/cleanup responsibilities (if any remain), over to returned instance of Self and forgetting filled.

Implementors

  • impl<T> Boxed for Box<T>

© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/ops/trait.Boxed.html