pub unsafe trait PyTypeInfo: Sized {
const NAME: &'static str;
const MODULE: Option<&'static str>;
const TYPE_HINT: PyStaticExpr = _;
// 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 { ... }
}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§
Provided Associated Constants§
Sourceconst TYPE_HINT: PyStaticExpr = _
const TYPE_HINT: PyStaticExpr = _
Provides the full python type as a type hint.
Required Methods§
Sourcefn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
Returns the PyTypeObject instance for this type.
Provided Methods§
Sourcefn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
Returns the safe abstraction over the type object.
Sourcefn 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.
Sourcefn 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".