pub trait Emplace<T>: Sized + Deref {
type Output: Deref<Target = Self::Target>;
// Required method
fn try_emplace<N>(n: N) -> Result<Self::Output, <N as TryNew>::Error>
where N: TryNew<Output = T>;
// Provided method
fn emplace<N>(n: N) -> Self::Output
where N: New<Output = T> { ... }
}
Expand description
A pointer type that may be “emplaced” as a stable address which a New
may be used to
construct a value with.
The Emplace<T>::Output
type is usually either Self
or Pin<Self>
depending on the API of
Self
with respect to [DerefMut
].
For example, Arc<T>
, Box<T>
, and Rc<T>
are all Emplace<T, Output = Pin<Self>>
.
However, cxx::UniquePtr<T>: Emplace<T, Output = Self>
, since cxx::UniquePtr<T>
already only
allows obtaining pinned mutable references to T
due to its more restrictive API, and hence
cxx::UniquePtr<T>
does not need to be pinned itself.
Required Associated Types§
Required Methods§
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.