# Trait core::ops::Boxed [−] [src]

    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)
    }Run

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

### `type Data`

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

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

### `type Place: BoxPlace<Self::Data>`

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

The place that will negotiate the storage of the data.

## Required Methods

### `unsafe fn finalize(filled: Self::Place) -> Self`

🔬 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

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)