pyo3::sync

Trait OnceExt

Source
pub trait OnceExt: Sealed {
    // 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(&OnceState),
    );
}
Expand description

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

Required Methods§

Source

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.

Source

fn call_once_force_py_attached( &self, py: Python<'_>, f: impl FnOnce(&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§

Source§

impl OnceExt for Once

Source§

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

Source§

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

Implementors§