pub struct LesserLockedLazyDroped<T, G = fn() -> T> { /* private fields */ }
Expand description

The actual type of mutable statics attributed with #[dynamic(drop)] The method (new)Self::from_generator is unsafe because this kind of static can only safely be used through this attribute macros.

Implementations§

source§

impl<T, G> LesserLockedLazyDroped<T, G>
where T: 'static + Send, G: 'static + Generator<T> + Sync,

source

pub fn phase(&'static self) -> Phase

Returns the current phase and synchronize with the end of the transition to the returned phase.

source§

impl<T, G> LesserLockedLazyDroped<T, G>
where G: 'static + Generator<T> + Sync, T: 'static + Send,

source

pub fn read(&'static self) -> ReadGuard<'_, T>

Initialize if necessary and returns a read lock

§Panic

Panics if initialization panics or if initialization has panicked in a previous attempt to initialize.

source

pub fn fast_read(&'static self) -> Option<ReadGuard<'_, T>>

Initialize if necessary and returns some read lock if the lazy is not already write locked. If the lazy is already write locked it returns None

§Panic

If locks succeeds, panics if initialization panics or if initialization has panicked in a previous attempt to initialize.

source

pub fn try_read(&'static self) -> Result<ReadGuard<'_, T>, AccessError>

Get a read lock if the lazy is initialized or an AccessError

source

pub fn fast_try_read( &'static self, ) -> Option<Result<ReadGuard<'_, T>, AccessError>>

if the lazy is not already write locked: get a read lock if the lazy is initialized or an AccessError. Otherwise returns None

source

pub fn write(&'static self) -> WriteGuard<'_, T>

Initialize if necessary and returns a write lock

§Panic

Panics if initialization panics or if initialization has panicked in a previous attempt to initialize.

source

pub fn fast_write(&'static self) -> Option<WriteGuard<'_, T>>

Initialize if necessary and returns some write lock if the lazy is not already write locked. If the lazy is already read or write locked it returns None

§Panic

If locks succeeds, panics if initialization panics or if initialization has panicked in a previous attempt to initialize.

source

pub fn try_write(&'static self) -> Result<WriteGuard<'_, T>, AccessError>

Get a read lock if the lazy is initialized or an AccessError

source

pub fn fast_try_write( &'static self, ) -> Option<Result<WriteGuard<'_, T>, AccessError>>

if the lazy is not already read or write locked: get a write lock if the lazy is initialized or an AccessError . Otherwise returns None

source

pub fn init(&'static self) -> Phase

Initialize the lazy if no previous attempt to initialized it where performed

source§

impl<T, G> LesserLockedLazyDroped<T, G>

source

pub const unsafe fn from_generator(f: G) -> Self

Build a new static object.

§Safety

This function may be unsafe if build this object as anything else than a static or a thread local static would be the cause of undefined behavior

source

pub const unsafe fn from_generator_with_info(f: G, info: StaticInfo) -> Self

Build a new static object with debug informations.

§Safety

This function may be unsafe if build this object as anything else than a static or a thread local static would be the cause of undefined behavior

Trait Implementations§

source§

impl<T, G> Phased for LesserLockedLazyDroped<T, G>
where T: 'static, G: 'static + Generator<T>,

source§

fn phase(this: &Self) -> Phase

return the current phase

Auto Trait Implementations§

§

impl<T, G = fn() -> T> !Freeze for LesserLockedLazyDroped<T, G>

§

impl<T, G = fn() -> T> !RefUnwindSafe for LesserLockedLazyDroped<T, G>

§

impl<T, G> Send for LesserLockedLazyDroped<T, G>
where G: Send + Sync, T: Send,

§

impl<T, G> Sync for LesserLockedLazyDroped<T, G>
where G: Sync, T: Send,

§

impl<T, G> Unpin for LesserLockedLazyDroped<T, G>
where G: Unpin, T: Unpin,

§

impl<T, G = fn() -> T> !UnwindSafe for LesserLockedLazyDroped<T, G>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.