Struct ArrayString
#[repr(C)]
pub struct ArrayString<const CAP: usize> { /* private fields */ }
A string with a fixed capacity.
The ArrayString is a string backed by a fixed size array. It keeps track
of its length, and is parameterized by CAP for the maximum capacity.
CAP is of type usize but is range limited to u32::MAX (or u16 on 16-bit targets);
attempting to create larger arrayvecs with larger capacity will panic.
The string is a contiguous value that you can store directly on the stack if needed.
Implementations
impl<const CAP: usize> ArrayString<CAP>
fn new() -> ArrayString<CAP>Create a new empty
ArrayString.Capacity is inferred from the type parameter.
use ArrayString; let mut string = new; string.push_str; assert_eq!; assert_eq!;const fn new_const() -> ArrayString<CAP>Create a new empty
ArrayString(const fn).Capacity is inferred from the type parameter.
use ArrayString; static ARRAY: = new_const;const fn len(&self) -> usizeReturn the length of the string.
const fn is_empty(&self) -> boolReturns whether the string is empty.
fn from(s: &str) -> Result<Self, CapacityError<&str>>Create a new
ArrayStringfrom astr.Capacity is inferred from the type parameter.
Errors if the backing array is not large enough to fit the string.
use ArrayString; let mut string = from.unwrap; assert_eq!; assert_eq!; assert_eq!;fn from_byte_string(b: &[u8; CAP]) -> Result<Self, Utf8Error>Create a new
ArrayStringfrom a byte string literal.Errors if the byte string literal is not valid UTF-8.
use ArrayString; let string = from_byte_string.unwrap;fn zero_filled() -> SelfCreate a new
ArrayStringvalue fully filled with ASCII NULL characters (\0). Useful to be used as a buffer to collect external data or as a buffer for intermediate processing.use ArrayString; let string = zero_filled; assert_eq!;const fn capacity(&self) -> usizeReturn the capacity of the
ArrayString.use ArrayString; let string = new; assert_eq!;const fn is_full(&self) -> boolReturn if the
ArrayStringis completely filled.use ArrayString; let mut string = new; assert!; string.push_str; assert!;const fn remaining_capacity(&self) -> usizeReturns the capacity left in the
ArrayString.use ArrayString; let mut string = from.unwrap; string.pop; assert_eq!;fn push(&mut self, c: char)Adds the given char to the end of the string.
Panics if the backing array is not large enough to fit the additional char.
use ArrayString; let mut string = new; string.push; string.push; assert_eq!;fn try_push(&mut self, c: char) -> Result<(), CapacityError<char>>Adds the given char to the end of the string.
Returns
Okif the push succeeds.Errors if the backing array is not large enough to fit the additional char.
use ArrayString; let mut string = new; string.try_push.unwrap; string.try_push.unwrap; let overflow = string.try_push; assert_eq!; assert_eq!;fn push_str(&mut self, s: &str)Adds the given string slice to the end of the string.
Panics if the backing array is not large enough to fit the string.
use ArrayString; let mut string = new; string.push_str; string.push_str; assert_eq!;fn try_push_str<'a>(&mut self, s: &'a str) -> Result<(), CapacityError<&'a str>>Adds the given string slice to the end of the string.
Returns
Okif the push succeeds.Errors if the backing array is not large enough to fit the string.
use ArrayString; let mut string = new; string.try_push_str.unwrap; let overflow1 = string.try_push_str; string.try_push_str.unwrap; let overflow2 = string.try_push_str; assert_eq!; assert_eq!; assert_eq!;fn pop(&mut self) -> Option<char>Removes the last character from the string and returns it.
Returns
Noneif thisArrayStringis empty.use ArrayString; let mut s = from.unwrap; assert_eq!; assert_eq!; assert_eq!; assert_eq!;fn truncate(&mut self, new_len: usize)Shortens this
ArrayStringto the specified length.If
new_lenis greater than the string’s current length, this has no effect.Panics if
new_lendoes not lie on acharboundary.use ArrayString; let mut string = from.unwrap; string.truncate; assert_eq!; string.truncate; assert_eq!;fn remove(&mut self, idx: usize) -> charRemoves a
charfrom thisArrayStringat a byte position and returns it.This is an
O(n)operation, as it requires copying every element in the array.Panics if
idxis larger than or equal to theArrayString’s length, or if it does not lie on acharboundary.use ArrayString; let mut s = from.unwrap; assert_eq!; assert_eq!; assert_eq!;fn clear(&mut self)Make the string empty.
unsafe fn set_len(&mut self, length: usize)Set the strings’s length.
This function is
unsafebecause it changes the notion of the number of “valid” bytes in the string. Use with care.This method uses debug assertions to check the validity of
lengthand may use other debug assertions.fn as_str(&self) -> &strReturn a string slice of the whole
ArrayString.fn as_mut_str(&mut self) -> &mut strReturn a mutable string slice of the whole
ArrayString.fn as_ptr(&self) -> *const u8Return a raw pointer to the string's buffer.
fn as_mut_ptr(&mut self) -> *mut u8Return a raw mutable pointer to the string's buffer.
Trait Implementations
impl<'a, const CAP: usize> TryFrom<&'a str> for ArrayString<CAP>
type Error = CapacityError<&'a str>;fn try_from(f: &'a str) -> Result<Self, Self::Error>
impl<'a, const CAP: usize> TryFrom<Arguments<'a>> for ArrayString<CAP>
type Error = CapacityError<Error>;fn try_from(f: Arguments<'a>) -> Result<Self, Self::Error>
impl<const CAP: usize> AsRef<Path> for ArrayString<CAP>
fn as_ref(&self) -> &Path
impl<const CAP: usize> AsRef<str> for ArrayString<CAP>
fn as_ref(&self) -> &str
impl<const CAP: usize> Borrow<str> for ArrayString<CAP>
fn borrow(&self) -> &str
impl<const CAP: usize> BorrowMut<str> for ArrayString<CAP>
fn borrow_mut(&mut self) -> &mut str
impl<const CAP: usize> Clone for ArrayString<CAP>
fn clone(&self) -> ArrayString<CAP>fn clone_from(&mut self, rhs: &Self)
impl<const CAP: usize> Copy for ArrayString<CAP>
impl<const CAP: usize> Debug for ArrayString<CAP>
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl<const CAP: usize> Default for ArrayString<CAP>
fn default() -> ArrayString<CAP>Return an empty
ArrayString
impl<const CAP: usize> Deref for ArrayString<CAP>
type Target = str;fn deref(&self) -> &str
impl<const CAP: usize> DerefMut for ArrayString<CAP>
fn deref_mut(&mut self) -> &mut str
impl<const CAP: usize> Display for ArrayString<CAP>
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl<const CAP: usize> Eq for ArrayString<CAP>
impl<const CAP: usize> FromStr for ArrayString<CAP>
type Err = CapacityError;fn from_str(s: &str) -> Result<Self, Self::Err>
impl<const CAP: usize> Hash for ArrayString<CAP>
fn hash<H: Hasher>(&self, h: &mut H)
impl<const CAP: usize> Ord for ArrayString<CAP>
fn cmp(&self, rhs: &Self) -> Ordering
impl<const CAP: usize> PartialEq for ArrayString<CAP>
fn eq(&self, rhs: &Self) -> bool
impl<const CAP: usize> PartialEq<str> for ArrayString<CAP>
fn eq(&self, rhs: &str) -> bool
impl<const CAP: usize> PartialOrd for ArrayString<CAP>
fn partial_cmp(&self, rhs: &Self) -> Option<Ordering>fn lt(&self, rhs: &Self) -> boolfn le(&self, rhs: &Self) -> boolfn gt(&self, rhs: &Self) -> boolfn ge(&self, rhs: &Self) -> bool
impl<const CAP: usize> PartialOrd<str> for ArrayString<CAP>
fn partial_cmp(&self, rhs: &str) -> Option<Ordering>fn lt(&self, rhs: &str) -> boolfn le(&self, rhs: &str) -> boolfn gt(&self, rhs: &str) -> boolfn ge(&self, rhs: &str) -> bool
impl<const CAP: usize> Write for ArrayString<CAP>
fn write_char(&mut self, c: char) -> Resultfn write_str(&mut self, s: &str) -> Result
Auto Trait Implementations
impl<const CAP: usize> Freeze for ArrayString<CAP>
where
[MaybeUninit<u8>; CAP]: Freeze,
impl<const CAP: usize> RefUnwindSafe for ArrayString<CAP>
where
[MaybeUninit<u8>; CAP]: RefUnwindSafe,
impl<const CAP: usize> Send for ArrayString<CAP>
where
[MaybeUninit<u8>; CAP]: Send,
impl<const CAP: usize> Sync for ArrayString<CAP>
where
[MaybeUninit<u8>; CAP]: Sync,
impl<const CAP: usize> Unpin for ArrayString<CAP>
where
[MaybeUninit<u8>; CAP]: Unpin,
impl<const CAP: usize> UnsafeUnpin for ArrayString<CAP>
where
[MaybeUninit<u8>; CAP]: UnsafeUnpin,
impl<const CAP: usize> UnwindSafe for ArrayString<CAP>
where
[MaybeUninit<u8>; CAP]: UnwindSafe,
Blanket Implementations
impl<P, T> Receiver for ArrayString<CAP>
where
P: Deref<Target = T> + ?Sized,
T: ?Sized,
type Target = T;
impl<T> Any for ArrayString<CAP>
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for ArrayString<CAP>
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for ArrayString<CAP>
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for ArrayString<CAP>
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for ArrayString<CAP>
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for ArrayString<CAP>
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T> ToString for ArrayString<CAP>
where
T: Display + ?Sized,
fn to_string(&self) -> String
impl<T, U> Into<U> for ArrayString<CAP>
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for ArrayString<CAP>
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for ArrayString<CAP>
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>