[][src]Struct hexchat::SafeLazy

pub struct SafeLazy<T> where
    T: 'static, 
{ /* fields omitted */ }

A lazily-evaluated resource that is safe to use in a HexChat plugin.

It is recommended that you not use any other kind of static resource crate, because any static resource will not get dropped when your plugin is unloaded, leading to a memory leak if the resource contains a heap allocation. This includes thread_local!, lazy_static, once_cell, etc. It's not the crate that matters, it's the heap resource.

Any SafeLazys will be initialized the first time you use it, and will be dropped after your plugin is dropped.

A SafeLazy must always be in a static variable. To do otherwise is undefined.

Important

Any thread which accesses a safe static, mutex or no, must be killed inside your plugin's Drop implementation. To allow otherwise is undefined.

Trait Implementations

impl<T> Sync for SafeLazy<T> where
    T: Send + Sync
[src]

impl<T> Deref for SafeLazy<T>[src]

type Target = T

The resulting type after dereferencing.

Auto Trait Implementations

impl<T> Send for SafeLazy<T> where
    T: Send

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = !

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Erased for T