Struct PyASCIIObject
#[repr(C)]pub struct PyASCIIObject {
pub ob_base: PyObject,
pub length: isize,
pub hash: isize,
pub state: u32,
}tls only.Fields§
§ob_base: PyObject§length: isize§hash: isizePy_3_11 or non-PyPy only.state: u32A bit field with various properties.
Rust doesn’t expose bitfields. So we have accessor functions for retrieving values.
Before 3.12: unsigned int interned:2; // SSTATE_* constants. unsigned int kind:3; // PyUnicode_*_KIND constants. unsigned int compact:1; unsigned int ascii:1; unsigned int ready:1; unsigned int :24;
3.12, and 3.13 unsigned int interned:2; // SSTATE_* constants. unsigned int kind:3; // PyUnicode_*_KIND constants. unsigned int compact:1; unsigned int ascii:1; unsigned int statically_allocated:1; unsigned int :24; on 3.14 and higher PyO3 doesn’t access the internal state
Implementations§
§impl PyASCIIObject
Interacting with the bitfield is not actually well-defined, so we mark these APIs unsafe.
impl PyASCIIObject
Interacting with the bitfield is not actually well-defined, so we mark these APIs unsafe.
pub unsafe fn interned(&self) -> u32
Available on neither GraalPy nor Py_3_14.
pub unsafe fn interned(&self) -> u32
GraalPy nor Py_3_14.Get the interned field of the PyASCIIObject state bitfield.
Returns one of: SSTATE_NOT_INTERNED, SSTATE_INTERNED_MORTAL,
SSTATE_INTERNED_IMMORTAL, or SSTATE_INTERNED_IMMORTAL_STATIC.
pub unsafe fn set_interned(&mut self, val: u32)
Available on neither GraalPy nor Py_3_14.
pub unsafe fn set_interned(&mut self, val: u32)
GraalPy nor Py_3_14.Set the interned field of the PyASCIIObject state bitfield.
Calling this function with an argument that is not SSTATE_NOT_INTERNED,
SSTATE_INTERNED_MORTAL, SSTATE_INTERNED_IMMORTAL, or
SSTATE_INTERNED_IMMORTAL_STATIC is invalid.
pub unsafe fn kind(&self) -> u32
Available on neither GraalPy nor Py_3_14.
pub unsafe fn kind(&self) -> u32
GraalPy nor Py_3_14.Get the kind field of the PyASCIIObject state bitfield.
Returns one of:
PyUnicode_1BYTE_KIND, PyUnicode_2BYTE_KIND, or PyUnicode_4BYTE_KIND.
pub unsafe fn set_kind(&mut self, val: u32)
Available on neither GraalPy nor Py_3_14.
pub unsafe fn set_kind(&mut self, val: u32)
GraalPy nor Py_3_14.Set the kind field of the PyASCIIObject state bitfield.
Calling this function with an argument that is not
PyUnicode_1BYTE_KIND, PyUnicode_2BYTE_KIND, or PyUnicode_4BYTE_KIND is invalid.
pub unsafe fn compact(&self) -> u32
Available on neither GraalPy nor Py_3_14.
pub unsafe fn compact(&self) -> u32
GraalPy nor Py_3_14.Get the compact field of the PyASCIIObject state bitfield.
Returns either 0 or 1.
pub unsafe fn set_compact(&mut self, val: u32)
Available on neither GraalPy nor Py_3_14.
pub unsafe fn set_compact(&mut self, val: u32)
GraalPy nor Py_3_14.Set the compact flag of the PyASCIIObject state bitfield.
Calling this function with an argument that is neither 0 nor 1 is invalid.
pub unsafe fn ascii(&self) -> u32
Available on neither GraalPy nor Py_3_14.
pub unsafe fn ascii(&self) -> u32
GraalPy nor Py_3_14.Get the ascii field of the PyASCIIObject state bitfield.
Returns either 0 or 1.
pub unsafe fn set_ascii(&mut self, val: u32)
Available on neither GraalPy nor Py_3_14 and not (Py_3_14 and Py_GIL_DISABLED) only.
pub unsafe fn set_ascii(&mut self, val: u32)
GraalPy nor Py_3_14 and not (Py_3_14 and Py_GIL_DISABLED) only.Set the ascii flag of the PyASCIIObject state bitfield.
Calling this function with an argument that is neither 0 nor 1 is invalid.
pub unsafe fn statically_allocated(&self) -> u32
Available on neither GraalPy nor Py_3_14 and Py_3_12 only.
pub unsafe fn statically_allocated(&self) -> u32
GraalPy nor Py_3_14 and Py_3_12 only.Get the statically_allocated field of the PyASCIIObject state bitfield.
Returns either 0 or 1.
pub unsafe fn set_statically_allocated(&mut self, val: u32)
Available on neither GraalPy nor Py_3_14 and Py_3_12 only.
pub unsafe fn set_statically_allocated(&mut self, val: u32)
GraalPy nor Py_3_14 and Py_3_12 only.Set the statically_allocated flag of the PyASCIIObject state bitfield.
Calling this function with an argument that is neither 0 nor 1 is invalid.
Auto Trait Implementations§
impl Freeze for PyASCIIObject
impl RefUnwindSafe for PyASCIIObject
impl !Send for PyASCIIObject
impl !Sync for PyASCIIObject
impl Unpin for PyASCIIObject
impl UnsafeUnpin for PyASCIIObject
impl UnwindSafe for PyASCIIObject
Blanket Implementations§
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
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>
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