Skip to main content

tp_traverse

Function tp_traverse 

Source
#[doc(hidden)]
pub unsafe extern "C" fn tp_traverse<T>( slf: *mut PyObject, visit: visitproc, arg: *mut c_void, ) -> c_int
where T: PyClass,
Expand description

Calls an implementation of traverse for tp_traverse

NB cannot accept 'static visitor, this is a sanity check below:

use pyo3::prelude::*;
use pyo3::pyclass::{PyTraverseError, PyVisit};

#[pyclass]
struct Foo;

#[pymethods]
impl Foo {
    fn __traverse__(&self, _visit: PyVisit<'static>) -> Result<(), PyTraverseError> {
        Ok(())
    }
}

Elided lifetime should compile ok:

use pyo3::prelude::*;
use pyo3::pyclass::{PyTraverseError, PyVisit};

#[pyclass]
struct Foo;

#[pymethods]
impl Foo {
    fn __traverse__(&self, _visit: PyVisit<'_>) -> Result<(), PyTraverseError> {
        Ok(())
    }
}
⚠️ Internal Docs ⚠️ Not Public API 👉 Official Docs Here