pub struct SelfReference<'a, T, R>where
R: RefDef + 'a,{ /* private fields */ }
Expand description
A Self-Referential Helper.
Implementations§
Source§impl<'a, T, R> SelfReference<'a, T, R>where
R: RefDef + 'a,
impl<'a, T, R> SelfReference<'a, T, R>where
R: RefDef + 'a,
Sourcepub fn new<F>(object: T, init: F) -> Self
pub fn new<F>(object: T, init: F) -> Self
You will “never” able to hold object before its pinned. try initializing as empty static object. (using Option, NonNull or Empty enum field)
pub fn new_stable<F>(object: T, init: F) -> Self
Sourcepub fn reset<'s, F>(self: Pin<&'s mut Self>, f: F)
pub fn reset<'s, F>(self: Pin<&'s mut Self>, f: F)
reset referenceial object using object. object is now pinned so initializing referential type is safe. This is also useful when you consumed your own reference. (like in AsyncIterator)
Source§impl<'a, T, R> SelfReference<'a, T, R>
impl<'a, T, R> SelfReference<'a, T, R>
Source§impl<'a, T, R> SelfReference<'a, T, R>where
R: RefDef,
T: StableDeref,
impl<'a, T, R> SelfReference<'a, T, R>where
R: RefDef,
T: StableDeref,
Trait Implementations§
impl<'pin, 'a, T, R> Unpin for SelfReference<'a, T, R>where
R: RefDef + 'a,
PinnedFieldsOf<Wrapper<'pin, Self>>: UnsafeUnpin,
impl<'a, T, R> UnsafeUnpin for SelfReference<'a, T, R>where
R: RefDef,
T: StableDeref,
Auto Trait Implementations§
impl<'a, T, R> Freeze for SelfReference<'a, T, R>
impl<'a, T, R> RefUnwindSafe for SelfReference<'a, T, R>
impl<'a, T, R> Send for SelfReference<'a, T, R>
impl<'a, T, R> Sync for SelfReference<'a, T, R>
impl<'a, T, R> UnwindSafe for SelfReference<'a, T, R>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more