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", so this trait is not object safe.