pub unsafe trait PyTypeInfo: Sized {
    type AsRefTarget: PyNativeType;

    const NAME: &'static str;
    const MODULE: Option<&'static str>;

    fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject;

    fn type_object(py: Python<'_>) -> &PyType { ... }
    fn is_type_of(object: &PyAny) -> bool { ... }
    fn is_exact_type_of(object: &PyAny) -> bool { ... }
Expand description

Python type information. All Python native types (e.g., PyDict) and #[pyclass] structs implement this trait.

This trait is marked unsafe because:

  • specifying the incorrect layout can lead to memory errors
  • the return value of type_object must always point to the same PyTypeObject instance

It is safely implemented by the pyclass macro.


Implementations must provide an implementation for type_object_raw which infallibly produces a non-null pointer to the corresponding Python type object.

Required Associated Types

Utility type to make Py::as_ref work.

Required Associated Constants

Class name.

Module name, if any.

Required Methods

Returns the PyTypeObject instance for this type.

Provided Methods

Returns the safe abstraction over the type object.

Checks if object is an instance of this type or a subclass of this type.

Checks if object is an instance of this type.