pub struct CurrentGuard<'a, T: Any> { /* private fields */ }Available on crate features
std and unsafe_layout only.Expand description
๐
A guard that temporarily sets a global current ptr for T, restoring the old one on drop.
๐ sys/mem
When dropped, it restores the previous pointer or sets a placeholder if none existed.โ
This is useful for tracking the current instance of a type within a thread.
ยงVendored
This is adapted work from current.
Implementationsยง
Sourceยงimpl<T: Any> CurrentGuard<'_, T>
impl<T: Any> CurrentGuard<'_, T>
Sourcepub fn new(current: &mut T) -> CurrentGuard<'_, T>
pub fn new(current: &mut T) -> CurrentGuard<'_, T>
Creates a new current guard for the given value.
When this guard is dropped, the previous pointer (if any) will be restored.
ยงSafety
- This function modifies global state within a thread-local map.
- It ensures that only one mutable reference to a given
Texists at a time. - Improper use may lead to stale pointers if lifetimes are not respected.
ยงExamples
let mut my_value = MyType::new();
let guard = CurrentGuard::new(&mut my_value);Trait Implementationsยง
Sourceยงimpl<T: Any> Drop for CurrentGuard<'_, T>
impl<T: Any> Drop for CurrentGuard<'_, T>
Auto Trait Implementationsยง
impl<'a, T> !Send for CurrentGuard<'a, T>
impl<'a, T> !Sync for CurrentGuard<'a, T>
impl<'a, T> !UnwindSafe for CurrentGuard<'a, T>
impl<'a, T> Freeze for CurrentGuard<'a, T>
impl<'a, T> RefUnwindSafe for CurrentGuard<'a, T>where
T: RefUnwindSafe,
impl<'a, T> Unpin for CurrentGuard<'a, T>
impl<'a, T> UnsafeUnpin for CurrentGuard<'a, T>
Blanket Implementationsยง
Sourceยงimpl<T> AnyExt for T
impl<T> AnyExt for T
Sourceยงfn type_hash_with<H: Hasher>(&self, hasher: H) -> u64
fn type_hash_with<H: Hasher>(&self, hasher: H) -> u64
Returns a deterministic hash of the
TypeId of Self using a custom hasher.Sourceยงfn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
Sourceยงfn as_any_box(self: Box<Self>) -> Box<dyn Any>where
Self: Sized,
fn as_any_box(self: Box<Self>) -> Box<dyn Any>where
Self: Sized,
Available on crate feature
alloc only.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
Sourceยงimpl<T> ByteSized for T
impl<T> ByteSized for T
Sourceยงconst BYTE_ALIGN: usize = _
const BYTE_ALIGN: usize = _
The alignment of this type in bytes.
Sourceยงfn byte_align(&self) -> usize
fn byte_align(&self) -> usize
Returns the alignment of this type in bytes.
Sourceยงfn ptr_size_ratio(&self) -> [usize; 2]
fn ptr_size_ratio(&self) -> [usize; 2]
Sourceยงimpl<T> MemExt for Twhere
T: ?Sized,
impl<T> MemExt for Twhere
T: ?Sized,
Sourceยงconst NEEDS_DROP: bool = _
const NEEDS_DROP: bool = _
Know whether dropping values of this type matters, in compile-time.
Sourceยงfn mem_align_of<T>() -> usize
fn mem_align_of<T>() -> usize
Returns the minimum alignment of the type in bytes. Read more
Sourceยงfn mem_align_of_val(&self) -> usize
fn mem_align_of_val(&self) -> usize
Returns the alignment of the pointed-to value in bytes. Read more
Sourceยงfn mem_size_of<T>() -> usize
fn mem_size_of<T>() -> usize
Returns the size of a type in bytes. Read more
Sourceยงfn mem_size_of_val(&self) -> usize
fn mem_size_of_val(&self) -> usize
Returns the size of the pointed-to value in bytes. Read more
Sourceยงfn mem_needs_drop(&self) -> bool
fn mem_needs_drop(&self) -> bool
Returns
true if dropping values of this type matters. Read moreSourceยงfn mem_forget(self)where
Self: Sized,
fn mem_forget(self)where
Self: Sized,
Forgets about
self without running its destructor. Read moreSourceยงfn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
Sourceยงunsafe fn mem_zeroed<T>() -> T
unsafe fn mem_zeroed<T>() -> T
Available on crate feature
unsafe_layout only.Returns the value of type
T represented by the all-zero byte-pattern. Read moreSourceยงunsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
Available on crate feature
unsafe_layout only.Returns the value of type
T represented by the all-zero byte-pattern. Read moreSourceยงfn mem_as_bytes(&self) -> &[u8] โ
fn mem_as_bytes(&self) -> &[u8] โ
Available on crate feature
unsafe_slice only.