Trait nom::lib::std::ops::Placer
[−]
[src]
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
)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
type Place: InPlace<Data>
🔬 This is a nightly-only experimental API. (
placement_new_protocol
)Place
is the intermediate agent guarding the
uninitialized state for Data
.
Required Methods
fn make_place(self) -> Self::Place
🔬 This is a nightly-only experimental API. (
placement_new_protocol
)Creates a fresh place from self
.
Implementors
impl<'a, K, V> Placer<V> for Entry<'a, K, V> type Place = EntryPlace<'a, K, V>;
impl<T> Placer<T> for ExchangeHeapSingleton type Place = IntermediateBox<T>;
impl<'a, T> Placer<T> for FrontPlace<'a, T> type Place = FrontPlace<'a, T>;
impl<'a, T> Placer<T> for nom::lib::std::collections::vec_deque::PlaceBack<'a, T> type Place = PlaceBack<'a, T>;
impl<'a, T> Placer<T> for BackPlace<'a, T> type Place = BackPlace<'a, T>;
impl<'a, T> Placer<T> for PlaceFront<'a, T> type Place = PlaceFront<'a, T>;
impl<'a, T> Placer<T> for &'a mut BinaryHeap<T> where
T: 'a + Clone + Ord, type Place = BinaryHeapPlace<'a, T>;impl<'a, T> Placer<T> for nom::lib::std::vec::PlaceBack<'a, T> type Place = PlaceBack<'a, T>;