Trait PyTypeInfo
pub unsafe trait PyTypeInfo: Sized {
const NAME: &'static str;
const MODULE: Option<&'static str>;
// Required method
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject;
// Provided methods
fn type_object(py: Python<'_>) -> Bound<'_, PyType> { ... }
fn is_type_of(object: &Bound<'_, PyAny>) -> bool { ... }
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool { ... }
}tls only.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.
§Safety
Implementations must provide an implementation for type_object_raw which infallibly produces a
non-null pointer to the corresponding Python type object.
is_type_of must only return true for objects which can safely be treated as instances of Self.
is_exact_type_of must only return true for objects whose type is exactly Self.
Required Associated Constants§
Required Methods§
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
Returns the PyTypeObject instance for this type.
Provided Methods§
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
Returns the safe abstraction over the type object.
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_type_of(object: &Bound<'_, PyAny>) -> bool
Checks if object is an instance of this type or a subclass of this type.
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
Checks if object is an instance of this type.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".