#[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(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 duplicate 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(py: Python<'_>) -> Bound<'_, PyArrayDescr>
fn get_dtype(py: Python<'_>) -> Bound<'_, PyArrayDescr>
Returns the associated type descriptor (“dtype”) for the given element type.
Source§fn clone_ref(&self, _py: Python<'_>) -> Self
fn clone_ref(&self, _py: Python<'_>) -> Self
Create a clone of the value while the GIL is guaranteed to be held.
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§impl<const N: usize> PartialOrd for PyFixedString<N>
impl<const N: usize> PartialOrd for PyFixedString<N>
impl<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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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.