pub unsafe trait TryNew: Sized {
type Output;
type Error;
// Required method
unsafe fn try_new(
self,
this: Pin<&mut MaybeUninit<Self::Output>>,
) -> Result<(), Self::Error>;
// Provided method
fn with<F>(self, post: F) -> TryWith<Self, F> { ... }
}Expand description
An in-place constructor for a particular type, which can potentially fail.
Emplacing a TryNew may allocate even when construction fails; prefer to
use Result<impl New> when possible, instead.
§Safety
TryNew::try_new() must leave its destination argument in a valid,
initialized state when it returns Ok.
Required Associated Types§
Required Methods§
Sourceunsafe fn try_new(
self,
this: Pin<&mut MaybeUninit<Self::Output>>,
) -> Result<(), Self::Error>
unsafe fn try_new( self, this: Pin<&mut MaybeUninit<Self::Output>>, ) -> Result<(), Self::Error>
Try to construct a new value using the arguments stored in self.
§Safety
this must be freshly-created memory; this function must not
be used to mutate a previously-pinned pointer that has had self: Pin
functions called on it.
Provided Methods§
Sourcefn with<F>(self, post: F) -> TryWith<Self, F>
fn with<F>(self, post: F) -> TryWith<Self, F>
Adds a post-construction operation.
This function is analogous to New::with(); see its documentation for
more information.
Note: The return value of this function should not be relied upon; a
future version will replace it with impl TryNew.
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.