Struct LazyLock

Source
pub struct LazyLock<T, F = fn() -> T> { /* private fields */ }
Expand description

Wrapper for std::sync::LazyLock

This wrapper participates in cycle detection like all other primitives in this crate. It should only be possible to encounter cycles when acquiring mutexes in the initialisation function.

§Examples

use tracing_mutex::stdsync::tracing::LazyLock;

static LOCK: LazyLock<i32> = LazyLock::new(|| {
    println!("Hello, world!");
    42
});

// This should print "Hello, world!"
println!("{}", *LOCK);
// This should not.
println!("{}", *LOCK);

Implementations§

Source§

impl<T, F: FnOnce() -> T> LazyLock<T, F>

Source

pub const fn new(f: F) -> LazyLock<T, F>

Creates a new lazy value with the given initializing function.

Source

pub fn force(this: &LazyLock<T, F>) -> &T

Force this lazy lock to be evaluated.

This is equivalent to dereferencing, but is more explicit.

Trait Implementations§

Source§

impl<T: Debug, F> Debug for LazyLock<T, F>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T: Default> Default for LazyLock<T>

Source§

fn default() -> Self

Return a LazyLock that is initialized through Default.

Source§

impl<T, F: FnOnce() -> T> Deref for LazyLock<T, F>

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

§

impl<T, F = fn() -> T> !Freeze for LazyLock<T, F>

§

impl<T, F> RefUnwindSafe for LazyLock<T, F>

§

impl<T, F> Send for LazyLock<T, F>
where T: Send, F: Send,

§

impl<T, F> Sync for LazyLock<T, F>
where T: Sync + Send, F: Send,

§

impl<T, F> Unpin for LazyLock<T, F>
where T: Unpin, F: Unpin,

§

impl<T, F> UnwindSafe for LazyLock<T, F>
where T: UnwindSafe, F: UnwindSafe,

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

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

Source§

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>,

Source§

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.