W3cubDocs

/Rust

Trait std::ops::Placer

pub trait Placer<Data> where Data: ?Sized {
    type Place: InPlace<Data>;
    fn make_place(self) -> Self::Place;
}
🔬 This is a nightly-only experimental API. (placement_new_protocol #27779)

Interface to implementations of PLACE <- EXPR.

PLACE <- EXPR effectively desugars into:

let p = PLACE;
let mut place = Placer::make_place(p);
let raw_place = Place::pointer(&mut place);
let value = EXPR;
unsafe {
    std::ptr::write(raw_place, value);
    InPlace::finalize(place)
}

The type of PLACE <- EXPR is derived from the type of PLACE; if the type of PLACE is P, then the final type of the whole expression is P::Place::Owner (see the InPlace and Boxed traits).

Values for types implementing this trait usually are transient intermediate values (e.g. the return value of Vec::emplace_back) or Copy, since the make_place method takes self by value.

Associated Types

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

Place is the intermedate agent guarding the uninitialized state for Data.

Required Methods

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

Creates a fresh place from self.

Implementors

© 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.Placer.html