[][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> Sync for SafeUninit<T> where
    T: Send + Sync
[src]

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

type Target = T

The resulting type after dereferencing.

Auto Trait Implementations

impl<T> Send for SafeUninit<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