Skip to main content

OnceExt

Trait OnceExt 

pub trait OnceExt: Sealed {
    type OnceState;

    // Required methods
    fn call_once_py_attached(&self, py: Python<'_>, f: impl FnOnce());
    fn call_once_force_py_attached(
        &self,
        py: Python<'_>,
        f: impl FnOnce(&Self::OnceState),
    );
}
Available on crate feature tls only.
Expand description

Extension trait for Once to help avoid deadlocking when using a Once when attached to a Python thread.

Required Associated Types§

type OnceState

The state of Once

Required Methods§

fn call_once_py_attached(&self, py: Python<'_>, f: impl FnOnce())

Similar to call_once, but releases the Python GIL temporarily if blocking on another thread currently calling this Once.

fn call_once_force_py_attached( &self, py: Python<'_>, f: impl FnOnce(&Self::OnceState), )

Similar to call_once_force, but releases the Python GIL temporarily if blocking on another thread currently calling this Once.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl OnceExt for Once

§

type OnceState = OnceState

§

fn call_once_py_attached(&self, py: Python<'_>, f: impl FnOnce())

§

fn call_once_force_py_attached( &self, py: Python<'_>, f: impl FnOnce(&OnceState), )

Implementors§