Struct numpy::PyFixedString
source · #[repr(transparent)]pub struct PyFixedString<const N: usize>(pub [Py_UCS1; N]);Expand description
A newtype wrapper around [u8; N] to handle byte scalars while satisfying coherence.
Note that when creating arrays of ASCII strings without an explicit dtype,
NumPy will automatically determine the smallest possible array length at runtime.
For example,
array = numpy.array([b"foo", b"bar", b"foobar"])
yields S6 for array.dtype.
On the Rust side however, the length N of PyFixedString<N> must always be given
explicitly and as a compile-time constant. For this work reliably, the Python code
should set the dtype explicitly, e.g.
numpy.array([b"foo", b"bar", b"foobar"], dtype='S12')
always matching PyArray1<PyFixedString<12>>.
§Example
use numpy::{PyArray1, PyUntypedArrayMethods, PyFixedString};
let array = PyArray1::<PyFixedString<3>>::from_vec_bound(py, vec![[b'f', b'o', b'o'].into()]);
assert!(array.dtype().to_string().contains("S3"));Tuple Fields§
§0: [Py_UCS1; N]Trait Implementations§
source§impl<const N: usize> Clone for PyFixedString<N>
impl<const N: usize> Clone for PyFixedString<N>
source§fn clone(&self) -> PyFixedString<N>
fn clone(&self) -> PyFixedString<N>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moresource§impl<const N: usize> Debug for PyFixedString<N>
impl<const N: usize> Debug for PyFixedString<N>
source§impl<const N: usize> Display for PyFixedString<N>
impl<const N: usize> Display for PyFixedString<N>
source§impl<const N: usize> Element for PyFixedString<N>
impl<const N: usize> Element for PyFixedString<N>
source§const IS_COPY: bool = true
const IS_COPY: bool = true
Flag that indicates whether this type is trivially copyable. Read more
source§fn get_dtype_bound(py: Python<'_>) -> Bound<'_, PyArrayDescr>
fn get_dtype_bound(py: Python<'_>) -> Bound<'_, PyArrayDescr>
Returns the associated type descriptor (“dtype”) for the given element type.
source§fn get_dtype<'py>(py: Python<'py>) -> &'py PyArrayDescr
fn get_dtype<'py>(py: Python<'py>) -> &'py PyArrayDescr
👎Deprecated since 0.21.0: This will be replaced by
get_dtype_bound in the future.Returns the associated type descriptor (“dtype”) for the given element type.
source§impl<const N: usize> Hash for PyFixedString<N>
impl<const N: usize> Hash for PyFixedString<N>
source§impl<const N: usize> Ord for PyFixedString<N>
impl<const N: usize> Ord for PyFixedString<N>
source§fn cmp(&self, other: &PyFixedString<N>) -> Ordering
fn cmp(&self, other: &PyFixedString<N>) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
source§impl<const N: usize> PartialEq for PyFixedString<N>
impl<const N: usize> PartialEq for PyFixedString<N>
source§fn eq(&self, other: &PyFixedString<N>) -> bool
fn eq(&self, other: &PyFixedString<N>) -> bool
This method tests for
self and other values to be equal, and is used
by ==.source§impl<const N: usize> PartialOrd for PyFixedString<N>
impl<const N: usize> PartialOrd for PyFixedString<N>
source§fn partial_cmp(&self, other: &PyFixedString<N>) -> Option<Ordering>
fn partial_cmp(&self, other: &PyFixedString<N>) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self and other) and is used by the <=
operator. Read moreimpl<const N: usize> Copy for PyFixedString<N>
impl<const N: usize> Eq for PyFixedString<N>
impl<const N: usize> StructuralPartialEq for PyFixedString<N>
Auto Trait Implementations§
impl<const N: usize> Freeze for PyFixedString<N>
impl<const N: usize> RefUnwindSafe for PyFixedString<N>
impl<const N: usize> Send for PyFixedString<N>
impl<const N: usize> Sync for PyFixedString<N>
impl<const N: usize> Unpin for PyFixedString<N>
impl<const N: usize> UnwindSafe for PyFixedString<N>
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
Mutably borrows from an owned value. Read more
source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moresource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.