[][src]Struct hexchat::SafeUninit

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

An initially uninitialized 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 SafeUninits will be initialized when the init function is called, and will be dropped after your plugin is dropped.

A SafeUninit 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.

Methods

impl<T> SafeUninit<T>[src]

pub fn init(&self, instance: T)[src]

Initializes this SafeUninit with a value. Only works the first time it's called.

Trait Implementations

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

type Target = T

The resulting type after dereferencing.

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

Auto Trait Implementations

impl<T> !RefUnwindSafe for SafeUninit<T>

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

impl<T> Unpin for SafeUninit<T> where
    T: Unpin

impl<T> UnwindSafe for SafeUninit<T> where
    T: UnwindSafe

Blanket Implementations

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

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

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

impl<T> Erased for T

impl<T> From<T> for T[src]

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

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

type Error = Infallible

The type returned in the event of a conversion error.

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

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

The type returned in the event of a conversion error.