struct PyTypeBuilder {Show 19 fields
slots: Vec<PyType_Slot>,
method_defs: Vec<PyMethodDef>,
member_defs: Vec<PyMemberDef>,
getset_builders: HashMap<&'static CStr, GetSetDefBuilder>,
cleanup: Vec<Box<dyn Fn(&PyTypeBuilder, *mut PyTypeObject)>>,
tp_base: *mut PyTypeObject,
tp_dealloc: destructor,
tp_dealloc_with_gc: destructor,
is_mapping: bool,
is_sequence: bool,
has_new: bool,
has_dealloc: bool,
has_getitem: bool,
has_setitem: bool,
has_traverse: bool,
has_clear: bool,
dict_offset: Option<Py_ssize_t>,
class_flags: c_ulong,
buffer_procs: PyBufferProcs,
}
Fields§
§slots: Vec<PyType_Slot>
§method_defs: Vec<PyMethodDef>
§member_defs: Vec<PyMemberDef>
§getset_builders: HashMap<&'static CStr, GetSetDefBuilder>
§cleanup: Vec<Box<dyn Fn(&PyTypeBuilder, *mut PyTypeObject)>>
Used to patch the type objects for the things there’s no PyType_FromSpec API for… there’s no reason this should work, except for that it does and we have tests.
tp_base: *mut PyTypeObject
§tp_dealloc: destructor
§tp_dealloc_with_gc: destructor
§is_mapping: bool
§is_sequence: bool
§has_new: bool
§has_dealloc: bool
§has_getitem: bool
§has_setitem: bool
§has_traverse: bool
§has_clear: bool
§dict_offset: Option<Py_ssize_t>
§class_flags: c_ulong
§buffer_procs: PyBufferProcs
Available on non-
Py_3_9
and non-Py_LIMITED_API
only.Implementations§
Source§impl PyTypeBuilder
impl PyTypeBuilder
Sourceunsafe fn push_slot<T>(&mut self, slot: c_int, pfunc: *mut T)
unsafe fn push_slot<T>(&mut self, slot: c_int, pfunc: *mut T)
§Safety
The given pointer must be of the correct type for the given slot
Sourceunsafe fn push_raw_vec_slot<T>(&mut self, slot: c_int, data: Vec<T>)
unsafe fn push_raw_vec_slot<T>(&mut self, slot: c_int, data: Vec<T>)
§Safety
It is the caller’s responsibility that data
is of the correct type for the given slot.
fn pymethod_def(&mut self, def: &PyMethodDefType)
fn finalize_methods_and_properties(&mut self) -> Vec<GetSetDefDestructor>
fn set_is_basetype(self, is_basetype: bool) -> Self
Sourceunsafe fn class_items(self, iter: PyClassItemsIter) -> Self
unsafe fn class_items(self, iter: PyClassItemsIter) -> Self
§Safety
All slots in the PyClassItemsIter should be correct
fn type_doc(self, type_doc: &'static CStr) -> Self
fn offsets( self, dict_offset: Option<Py_ssize_t>, weaklist_offset: Option<Py_ssize_t>, ) -> Self
fn build( self, py: Python<'_>, name: &'static str, module_name: Option<&'static str>, basicsize: usize, ) -> PyResult<PyClassTypeObject>
Auto Trait Implementations§
impl Freeze for PyTypeBuilder
impl !RefUnwindSafe for PyTypeBuilder
impl !Send for PyTypeBuilder
impl !Sync for PyTypeBuilder
impl Unpin for PyTypeBuilder
impl !UnwindSafe for PyTypeBuilder
Blanket Implementations§
Source§impl<T> AssertNotZeroSized for T
impl<T> AssertNotZeroSized for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more