Primitive Type array
Expand description
A fixed-size array, denoted [T; N]
, for the element type, T
, and the
non-negative compile-time constant size, N
.
There are two syntactic forms for creating an array:
-
A list with each element, i.e.,
[x, y, z]
. -
A repeat expression
[expr; N]
whereN
is how many times to repeatexpr
in the array.expr
must either be:- A value of a type implementing the
Copy
trait - A
const
value
- A value of a type implementing the
Note that [expr; 0]
is allowed, and produces an empty array.
This will still evaluate expr
, however, and immediately drop the resulting value, so
be mindful of side effects.
Arrays of any size implement the following traits if the element type allows it:
Copy
Clone
Debug
IntoIterator
(implemented for[T; N]
,&[T; N]
and&mut [T; N]
)PartialEq
,PartialOrd
,Eq
,Ord
Hash
AsRef
,AsMut
Borrow
,BorrowMut
Arrays of sizes from 0 to 32 (inclusive) implement the Default
trait
if the element type allows it. As a stopgap, trait implementations are
statically generated up to size 32.
Arrays of sizes from 1 to 12 (inclusive) implement From<Tuple>
, where Tuple
is a homogeneous tuple of appropriate length.
Arrays coerce to slices ([T]
), so a slice method may be called on
an array. Indeed, this provides most of the API for working with arrays.
Slices have a dynamic size and do not coerce to arrays. Instead, use
slice.try_into().unwrap()
or <ArrayType>::try_from(slice).unwrap()
.
Array’s try_from(slice)
implementations (and the corresponding slice.try_into()
array implementations) succeed if the input slice length is the same as the result
array length. They optimize especially well when the optimizer can easily determine
the slice length, e.g. <[u8; 4]>::try_from(&slice[4..8]).unwrap()
. Array implements
TryFrom returning:
[T; N]
copies from the slice’s elements&[T; N]
references the original slice’s elements&mut [T; N]
references the original slice’s elements
You can move elements out of an array with a slice pattern. If you want
one element, see mem::replace
.
§Examples
let mut array: [i32; 3] = [0; 3];
array[1] = 1;
array[2] = 2;
assert_eq!([1, 2], &array[1..]);
// This loop prints: 0 1 2
for x in array {
print!("{x} ");
}
You can also iterate over reference to the array’s elements:
You can use <ArrayType>::try_from(slice)
or slice.try_into()
to get an array from
a slice:
let bytes: [u8; 3] = [1, 0, 2];
assert_eq!(1, u16::from_le_bytes(<[u8; 2]>::try_from(&bytes[0..2]).unwrap()));
assert_eq!(512, u16::from_le_bytes(bytes[1..3].try_into().unwrap()));
You can use a slice pattern to move elements out of an array:
fn move_away(_: String) { /* Do interesting things. */ }
let [john, roa] = ["John".to_string(), "Roa".to_string()];
move_away(john);
move_away(roa);
Arrays can be created from homogeneous tuples of appropriate length:
§Editions
Prior to Rust 1.53, arrays did not implement IntoIterator
by value, so the method call
array.into_iter()
auto-referenced into a slice iterator. Right now, the old
behavior is preserved in the 2015 and 2018 editions of Rust for compatibility, ignoring
IntoIterator
by value. In the future, the behavior on the 2015 and 2018 edition
might be made consistent to the behavior of later editions.
// Rust 2015 and 2018:
let array: [i32; 3] = [0; 3];
// This creates a slice iterator, producing references to each value.
for item in array.into_iter().enumerate() {
let (i, x): (usize, &i32) = item;
println!("array[{i}] = {x}");
}
// The `array_into_iter` lint suggests this change for future compatibility:
for item in array.iter().enumerate() {
let (i, x): (usize, &i32) = item;
println!("array[{i}] = {x}");
}
// You can explicitly iterate an array by value using `IntoIterator::into_iter`
for item in IntoIterator::into_iter(array).enumerate() {
let (i, x): (usize, i32) = item;
println!("array[{i}] = {x}");
}
Starting in the 2021 edition, array.into_iter()
uses IntoIterator
normally to iterate
by value, and iter()
should be used to iterate by reference like previous editions.
// Rust 2021:
let array: [i32; 3] = [0; 3];
// This iterates by reference:
for item in array.iter().enumerate() {
let (i, x): (usize, &i32) = item;
println!("array[{i}] = {x}");
}
// This iterates by value:
for item in array.into_iter().enumerate() {
let (i, x): (usize, i32) = item;
println!("array[{i}] = {x}");
}
Future language versions might start treating the array.into_iter()
syntax on editions 2015 and 2018 the same as on edition 2021. So code using
those older editions should still be written with this change in mind, to
prevent breakage in the future. The safest way to accomplish this is to
avoid the into_iter
syntax on those editions. If an edition update is not
viable/desired, there are multiple alternatives:
- use
iter
, equivalent to the old behavior, creating references - use
IntoIterator::into_iter
, equivalent to the post-2021 behavior (Rust 1.53+) - replace
for ... in array.into_iter() {
withfor ... in array {
, equivalent to the post-2021 behavior (Rust 1.53+)
// Rust 2015 and 2018:
let array: [i32; 3] = [0; 3];
// This iterates by reference:
for item in array.iter() {
let x: &i32 = item;
println!("{x}");
}
// This iterates by value:
for item in IntoIterator::into_iter(array) {
let x: i32 = item;
println!("{x}");
}
// This iterates by value:
for item in array {
let x: i32 = item;
println!("{x}");
}
// IntoIter can also start a chain.
// This iterates by value:
for item in IntoIterator::into_iter(array).enumerate() {
let (i, x): (usize, i32) = item;
println!("array[{i}] = {x}");
}
Implementations§
Source§impl<T, const N: usize> [MaybeUninit<T>; N]
impl<T, const N: usize> [MaybeUninit<T>; N]
Source§impl<const N: usize> [u8; N]
impl<const N: usize> [u8; N]
Sourcepub const fn as_ascii(&self) -> Option<&[Char; N]>
🔬This is a nightly-only experimental API. (ascii_char
#110998)Available on non-crate feature ferrocene_certified
only.
pub const fn as_ascii(&self) -> Option<&[Char; N]>
ascii_char
#110998)ferrocene_certified
only.Converts this array of bytes into an array of ASCII characters,
or returns None
if any of the characters is non-ASCII.
§Examples
Sourcepub const unsafe fn as_ascii_unchecked(&self) -> &[Char; N]
🔬This is a nightly-only experimental API. (ascii_char
#110998)Available on non-crate feature ferrocene_certified
only.
pub const unsafe fn as_ascii_unchecked(&self) -> &[Char; N]
ascii_char
#110998)ferrocene_certified
only.Converts this array of bytes into an array of ASCII characters, without checking whether they’re valid.
§Safety
Every byte in the array must be in 0..=127
, or else this is UB.
Source§impl<T, const N: usize> [T; N]
impl<T, const N: usize> [T; N]
1.55.0 · Sourcepub fn map<F, U>(self, f: F) -> [U; N]where
F: FnMut(T) -> U,
Available on non-crate feature ferrocene_certified
only.
pub fn map<F, U>(self, f: F) -> [U; N]where
F: FnMut(T) -> U,
ferrocene_certified
only.Returns an array of the same size as self
, with function f
applied to each element
in order.
If you don’t necessarily need a new fixed-size array, consider using
Iterator::map
instead.
§Note on performance and stack usage
Unfortunately, usages of this method are currently not always optimized as well as they could be. This mainly concerns large arrays, as mapping over small arrays seem to be optimized just fine. Also note that in debug mode (i.e. without any optimizations), this method can use a lot of stack space (a few times the size of the array or more).
Therefore, in performance-critical code, try to avoid using this method
on large arrays or check the emitted code. Also try to avoid chained
maps (e.g. arr.map(...).map(...)
).
In many cases, you can instead use Iterator::map
by calling .iter()
or .into_iter()
on your array. [T; N]::map
is only necessary if you
really need a new array of the same size as the result. Rust’s lazy
iterators tend to get optimized very well.
§Examples
Sourcepub fn try_map<R>(
self,
f: impl FnMut(T) -> R,
) -> <R::Residual as Residual<[R::Output; N]>>::TryType
🔬This is a nightly-only experimental API. (array_try_map
#79711)Available on non-crate feature ferrocene_certified
only.
pub fn try_map<R>( self, f: impl FnMut(T) -> R, ) -> <R::Residual as Residual<[R::Output; N]>>::TryType
array_try_map
#79711)ferrocene_certified
only.A fallible function f
applied to each element on array self
in order to
return an array the same size as self
or the first error encountered.
The return type of this function depends on the return type of the closure.
If you return Result<T, E>
from the closure, you’ll get a Result<[T; N], E>
.
If you return Option<T>
from the closure, you’ll get an Option<[T; N]>
.
§Examples
#![feature(array_try_map)]
let a = ["1", "2", "3"];
let b = a.try_map(|v| v.parse::<u32>()).unwrap().map(|v| v + 1);
assert_eq!(b, [2, 3, 4]);
let a = ["1", "2a", "3"];
let b = a.try_map(|v| v.parse::<u32>());
assert!(b.is_err());
use std::num::NonZero;
let z = [1, 2, 0, 3, 4];
assert_eq!(z.try_map(NonZero::new), None);
let a = [1, 2, 3];
let b = a.try_map(NonZero::new);
let c = b.map(|x| x.map(NonZero::get));
assert_eq!(c, Some(a));
1.57.0 (const: 1.57.0) · Sourcepub const fn as_slice(&self) -> &[T]
pub const fn as_slice(&self) -> &[T]
Returns a slice containing the entire array. Equivalent to &s[..]
.
1.57.0 (const: 1.89.0) · Sourcepub const fn as_mut_slice(&mut self) -> &mut [T]
pub const fn as_mut_slice(&mut self) -> &mut [T]
Returns a mutable slice containing the entire array. Equivalent to
&mut s[..]
.
1.77.0 (const: 1.91.0) · Sourcepub const fn each_ref(&self) -> [&T; N]
Available on non-crate feature ferrocene_certified
only.
pub const fn each_ref(&self) -> [&T; N]
ferrocene_certified
only.Borrows each element and returns an array of references with the same
size as self
.
§Example
let floats = [3.1, 2.7, -1.0];
let float_refs: [&f64; 3] = floats.each_ref();
assert_eq!(float_refs, [&3.1, &2.7, &-1.0]);
This method is particularly useful if combined with other methods, like
map
. This way, you can avoid moving the original
array if its elements are not Copy
.
1.77.0 (const: 1.91.0) · Sourcepub const fn each_mut(&mut self) -> [&mut T; N]
Available on non-crate feature ferrocene_certified
only.
pub const fn each_mut(&mut self) -> [&mut T; N]
ferrocene_certified
only.Borrows each element mutably and returns an array of mutable references
with the same size as self
.
§Example
Sourcepub fn split_array_ref<const M: usize>(&self) -> (&[T; M], &[T])
🔬This is a nightly-only experimental API. (split_array
#90091)Available on non-crate feature ferrocene_certified
only.
pub fn split_array_ref<const M: usize>(&self) -> (&[T; M], &[T])
split_array
#90091)ferrocene_certified
only.Divides one array reference into two at an index.
The first will contain all indices from [0, M)
(excluding
the index M
itself) and the second will contain all
indices from [M, N)
(excluding the index N
itself).
§Panics
Panics if M > N
.
§Examples
#![feature(split_array)]
let v = [1, 2, 3, 4, 5, 6];
{
let (left, right) = v.split_array_ref::<0>();
assert_eq!(left, &[]);
assert_eq!(right, &[1, 2, 3, 4, 5, 6]);
}
{
let (left, right) = v.split_array_ref::<2>();
assert_eq!(left, &[1, 2]);
assert_eq!(right, &[3, 4, 5, 6]);
}
{
let (left, right) = v.split_array_ref::<6>();
assert_eq!(left, &[1, 2, 3, 4, 5, 6]);
assert_eq!(right, &[]);
}
Sourcepub fn split_array_mut<const M: usize>(&mut self) -> (&mut [T; M], &mut [T])
🔬This is a nightly-only experimental API. (split_array
#90091)Available on non-crate feature ferrocene_certified
only.
pub fn split_array_mut<const M: usize>(&mut self) -> (&mut [T; M], &mut [T])
split_array
#90091)ferrocene_certified
only.Sourcepub fn rsplit_array_ref<const M: usize>(&self) -> (&[T], &[T; M])
🔬This is a nightly-only experimental API. (split_array
#90091)Available on non-crate feature ferrocene_certified
only.
pub fn rsplit_array_ref<const M: usize>(&self) -> (&[T], &[T; M])
split_array
#90091)ferrocene_certified
only.Divides one array reference into two at an index from the end.
The first will contain all indices from [0, N - M)
(excluding
the index N - M
itself) and the second will contain all
indices from [N - M, N)
(excluding the index N
itself).
§Panics
Panics if M > N
.
§Examples
#![feature(split_array)]
let v = [1, 2, 3, 4, 5, 6];
{
let (left, right) = v.rsplit_array_ref::<0>();
assert_eq!(left, &[1, 2, 3, 4, 5, 6]);
assert_eq!(right, &[]);
}
{
let (left, right) = v.rsplit_array_ref::<2>();
assert_eq!(left, &[1, 2, 3, 4]);
assert_eq!(right, &[5, 6]);
}
{
let (left, right) = v.rsplit_array_ref::<6>();
assert_eq!(left, &[]);
assert_eq!(right, &[1, 2, 3, 4, 5, 6]);
}
Sourcepub fn rsplit_array_mut<const M: usize>(&mut self) -> (&mut [T], &mut [T; M])
🔬This is a nightly-only experimental API. (split_array
#90091)Available on non-crate feature ferrocene_certified
only.
pub fn rsplit_array_mut<const M: usize>(&mut self) -> (&mut [T], &mut [T; M])
split_array
#90091)ferrocene_certified
only.Trait Implementations§
1.0.0 (const: unstable) · Source§impl<T, const N: usize> AsMut<[T]> for [T; N]
Available on non-crate feature ferrocene_certified
only.
impl<T, const N: usize> AsMut<[T]> for [T; N]
ferrocene_certified
only.Source§impl<T, const N: usize> AsMut<[T; N]> for Simd<T, N>
Available on non-crate feature ferrocene_certified
only.
impl<T, const N: usize> AsMut<[T; N]> for Simd<T, N>
ferrocene_certified
only.1.0.0 (const: unstable) · Source§impl<T, const N: usize> AsRef<[T]> for [T; N]
Available on non-crate feature ferrocene_certified
only.
impl<T, const N: usize> AsRef<[T]> for [T; N]
ferrocene_certified
only.Source§impl<T, const N: usize> AsRef<[T; N]> for Simd<T, N>
Available on non-crate feature ferrocene_certified
only.
impl<T, const N: usize> AsRef<[T; N]> for Simd<T, N>
ferrocene_certified
only.1.4.0 (const: unstable) · Source§impl<T, const N: usize> Borrow<[T]> for [T; N]
Available on non-crate feature ferrocene_certified
only.
impl<T, const N: usize> Borrow<[T]> for [T; N]
ferrocene_certified
only.1.4.0 (const: unstable) · Source§impl<T, const N: usize> BorrowMut<[T]> for [T; N]
Available on non-crate feature ferrocene_certified
only.
impl<T, const N: usize> BorrowMut<[T]> for [T; N]
ferrocene_certified
only.Source§fn borrow_mut(&mut self) -> &mut [T]
fn borrow_mut(&mut self) -> &mut [T]
1.58.0 · Source§impl<T: Clone, const N: usize> Clone for [T; N]
Available on non-crate feature ferrocene_certified
only.
impl<T: Clone, const N: usize> Clone for [T; N]
ferrocene_certified
only.1.0.0 · Source§impl<T: Debug, const N: usize> Debug for [T; N]
Available on non-crate feature ferrocene_certified
only.
impl<T: Debug, const N: usize> Debug for [T; N]
ferrocene_certified
only.1.71.0 · Source§impl<T> From<[T; N]> for (T₁, T₂, …, Tₙ)
Available on non-crate feature ferrocene_certified
only.This trait is implemented for tuples up to twelve items long.
impl<T> From<[T; N]> for (T₁, T₂, …, Tₙ)
ferrocene_certified
only.This trait is implemented for tuples up to twelve items long.
Source§impl<T, const N: usize> From<[T; N]> for Simd<T, N>
Available on non-crate feature ferrocene_certified
only.
impl<T, const N: usize> From<[T; N]> for Simd<T, N>
ferrocene_certified
only.Source§impl<T, const N: usize> From<[bool; N]> for Mask<T, N>
Available on non-crate feature ferrocene_certified
only.
impl<T, const N: usize> From<[bool; N]> for Mask<T, N>
ferrocene_certified
only.1.17.0 (const: unstable) · Source§impl From<[u16; 8]> for IpAddr
Available on non-crate feature ferrocene_certified
only.
impl From<[u16; 8]> for IpAddr
ferrocene_certified
only.1.16.0 (const: unstable) · Source§impl From<[u16; 8]> for Ipv6Addr
Available on non-crate feature ferrocene_certified
only.
impl From<[u16; 8]> for Ipv6Addr
ferrocene_certified
only.1.17.0 (const: unstable) · Source§impl From<[u8; 16]> for IpAddr
Available on non-crate feature ferrocene_certified
only.
impl From<[u8; 16]> for IpAddr
ferrocene_certified
only.Source§fn from(octets: [u8; 16]) -> IpAddr
fn from(octets: [u8; 16]) -> IpAddr
Creates an IpAddr::V6
from a sixteen element byte array.
§Examples
use std::net::{IpAddr, Ipv6Addr};
let addr = IpAddr::from([
0x19u8, 0x18u8, 0x17u8, 0x16u8, 0x15u8, 0x14u8, 0x13u8, 0x12u8,
0x11u8, 0x10u8, 0x0fu8, 0x0eu8, 0x0du8, 0x0cu8, 0x0bu8, 0x0au8,
]);
assert_eq!(
IpAddr::V6(Ipv6Addr::new(
0x1918, 0x1716, 0x1514, 0x1312,
0x1110, 0x0f0e, 0x0d0c, 0x0b0a,
)),
addr
);
1.9.0 (const: unstable) · Source§impl From<[u8; 16]> for Ipv6Addr
Available on non-crate feature ferrocene_certified
only.
impl From<[u8; 16]> for Ipv6Addr
ferrocene_certified
only.1.17.0 (const: unstable) · Source§impl From<[u8; 4]> for IpAddr
Available on non-crate feature ferrocene_certified
only.
impl From<[u8; 4]> for IpAddr
ferrocene_certified
only.1.9.0 (const: unstable) · Source§impl From<[u8; 4]> for Ipv4Addr
Available on non-crate feature ferrocene_certified
only.
impl From<[u8; 4]> for Ipv4Addr
ferrocene_certified
only.1.71.0 · Source§impl<T> From<(T₁, T₂, …, Tₙ)> for [T; N]
Available on non-crate feature ferrocene_certified
only.This trait is implemented for tuples up to twelve items long.
impl<T> From<(T₁, T₂, …, Tₙ)> for [T; N]
ferrocene_certified
only.This trait is implemented for tuples up to twelve items long.
Source§impl<T, const N: usize> From<Mask<T, N>> for [bool; N]
Available on non-crate feature ferrocene_certified
only.
impl<T, const N: usize> From<Mask<T, N>> for [bool; N]
ferrocene_certified
only.Source§impl<T, const N: usize> From<Simd<T, N>> for [T; N]
Available on non-crate feature ferrocene_certified
only.
impl<T, const N: usize> From<Simd<T, N>> for [T; N]
ferrocene_certified
only.1.0.0 · Source§impl<T: Hash, const N: usize> Hash for [T; N]
Available on non-crate feature ferrocene_certified
only.The hash of an array is the same as that of the corresponding slice,
as required by the Borrow
implementation.
impl<T: Hash, const N: usize> Hash for [T; N]
ferrocene_certified
only.The hash of an array is the same as that of the corresponding slice,
as required by the Borrow
implementation.
1.50.0 (const: unstable) · Source§impl<T, I, const N: usize> Index<I> for [T; N]
Available on non-crate feature ferrocene_certified
only.
impl<T, I, const N: usize> Index<I> for [T; N]
ferrocene_certified
only.1.50.0 (const: unstable) · Source§impl<T, I, const N: usize> IndexMut<I> for [T; N]
Available on non-crate feature ferrocene_certified
only.
impl<T, I, const N: usize> IndexMut<I> for [T; N]
ferrocene_certified
only.1.0.0 · Source§impl<'a, T, const N: usize> IntoIterator for &'a [T; N]
Available on non-crate feature ferrocene_certified
only.
impl<'a, T, const N: usize> IntoIterator for &'a [T; N]
ferrocene_certified
only.1.0.0 · Source§impl<'a, T, const N: usize> IntoIterator for &'a mut [T; N]
Available on non-crate feature ferrocene_certified
only.
impl<'a, T, const N: usize> IntoIterator for &'a mut [T; N]
ferrocene_certified
only.1.53.0 · Source§impl<T, const N: usize> IntoIterator for [T; N]
Available on non-crate feature ferrocene_certified
only.
impl<T, const N: usize> IntoIterator for [T; N]
ferrocene_certified
only.Source§fn into_iter(self) -> Self::IntoIter
fn into_iter(self) -> Self::IntoIter
Creates a consuming iterator, that is, one that moves each value out of the array (from start to end).
The array cannot be used after calling this unless T
implements
Copy
, so the whole array is copied.
Arrays have special behavior when calling .into_iter()
prior to the
2021 edition – see the array Editions section for more information.
1.0.0 · Source§impl<T: Ord, const N: usize> Ord for [T; N]
Available on non-crate feature ferrocene_certified
only.Implements comparison of arrays lexicographically.
impl<T: Ord, const N: usize> Ord for [T; N]
ferrocene_certified
only.Implements comparison of arrays lexicographically.
1.0.0 (const: unstable) · Source§impl<T, U, const N: usize> PartialEq<&[U]> for [T; N]where
T: PartialEq<U>,
Available on non-crate feature ferrocene_certified
only.
impl<T, U, const N: usize> PartialEq<&[U]> for [T; N]where
T: PartialEq<U>,
ferrocene_certified
only.Source§impl<const N: usize> PartialEq<&[u8; N]> for ByteStr
Available on non-crate feature ferrocene_certified
only.
impl<const N: usize> PartialEq<&[u8; N]> for ByteStr
ferrocene_certified
only.1.0.0 (const: unstable) · Source§impl<T, U, const N: usize> PartialEq<&mut [U]> for [T; N]where
T: PartialEq<U>,
Available on non-crate feature ferrocene_certified
only.
impl<T, U, const N: usize> PartialEq<&mut [U]> for [T; N]where
T: PartialEq<U>,
ferrocene_certified
only.1.0.0 (const: unstable) · Source§impl<T, U, const N: usize> PartialEq<[U]> for [T; N]where
T: PartialEq<U>,
Available on non-crate feature ferrocene_certified
only.
impl<T, U, const N: usize> PartialEq<[U]> for [T; N]where
T: PartialEq<U>,
ferrocene_certified
only.1.0.0 (const: unstable) · Source§impl<T, U, const N: usize> PartialEq<[U; N]> for &[T]where
T: PartialEq<U>,
Available on non-crate feature ferrocene_certified
only.
impl<T, U, const N: usize> PartialEq<[U; N]> for &[T]where
T: PartialEq<U>,
ferrocene_certified
only.1.0.0 (const: unstable) · Source§impl<T, U, const N: usize> PartialEq<[U; N]> for &mut [T]where
T: PartialEq<U>,
Available on non-crate feature ferrocene_certified
only.
impl<T, U, const N: usize> PartialEq<[U; N]> for &mut [T]where
T: PartialEq<U>,
ferrocene_certified
only.1.0.0 (const: unstable) · Source§impl<T, U, const N: usize> PartialEq<[U; N]> for [T]where
T: PartialEq<U>,
Available on non-crate feature ferrocene_certified
only.
impl<T, U, const N: usize> PartialEq<[U; N]> for [T]where
T: PartialEq<U>,
ferrocene_certified
only.1.0.0 (const: unstable) · Source§impl<T, U, const N: usize> PartialEq<[U; N]> for [T; N]where
T: PartialEq<U>,
Available on non-crate feature ferrocene_certified
only.
impl<T, U, const N: usize> PartialEq<[U; N]> for [T; N]where
T: PartialEq<U>,
ferrocene_certified
only.Source§impl<const N: usize> PartialEq<[u8; N]> for ByteStr
Available on non-crate feature ferrocene_certified
only.
impl<const N: usize> PartialEq<[u8; N]> for ByteStr
ferrocene_certified
only.Source§impl<const N: usize> PartialEq<ByteStr> for &[u8; N]
Available on non-crate feature ferrocene_certified
only.
impl<const N: usize> PartialEq<ByteStr> for &[u8; N]
ferrocene_certified
only.Source§impl<const N: usize> PartialEq<ByteStr> for [u8; N]
Available on non-crate feature ferrocene_certified
only.
impl<const N: usize> PartialEq<ByteStr> for [u8; N]
ferrocene_certified
only.1.0.0 · Source§impl<T: PartialOrd, const N: usize> PartialOrd for [T; N]
Available on non-crate feature ferrocene_certified
only.Implements comparison of arrays lexicographically.
impl<T: PartialOrd, const N: usize> PartialOrd for [T; N]
ferrocene_certified
only.Implements comparison of arrays lexicographically.
Source§impl<'b, const N: usize> Pattern for &'b [char; N]
Available on non-crate feature ferrocene_certified
only.Searches for chars that are equal to any of the char
s in the array.
impl<'b, const N: usize> Pattern for &'b [char; N]
ferrocene_certified
only.Searches for chars that are equal to any of the char
s in the array.
§Examples
Source§type Searcher<'a> = CharArrayRefSearcher<'a, 'b, N>
type Searcher<'a> = CharArrayRefSearcher<'a, 'b, N>
pattern
#27721)Source§fn into_searcher<'a>(self, haystack: &'a str) -> CharArrayRefSearcher<'a, 'b, N>
fn into_searcher<'a>(self, haystack: &'a str) -> CharArrayRefSearcher<'a, 'b, N>
pattern
#27721)self
and the haystack
to search in.Source§fn is_contained_in<'a>(self, haystack: &'a str) -> bool
fn is_contained_in<'a>(self, haystack: &'a str) -> bool
pattern
#27721)Source§fn is_prefix_of<'a>(self, haystack: &'a str) -> bool
fn is_prefix_of<'a>(self, haystack: &'a str) -> bool
pattern
#27721)Source§fn strip_prefix_of<'a>(self, haystack: &'a str) -> Option<&'a str>
fn strip_prefix_of<'a>(self, haystack: &'a str) -> Option<&'a str>
pattern
#27721)Source§fn is_suffix_of<'a>(self, haystack: &'a str) -> boolwhere
CharArrayRefSearcher<'a, 'b, N>: ReverseSearcher<'a>,
fn is_suffix_of<'a>(self, haystack: &'a str) -> boolwhere
CharArrayRefSearcher<'a, 'b, N>: ReverseSearcher<'a>,
pattern
#27721)Source§fn strip_suffix_of<'a>(self, haystack: &'a str) -> Option<&'a str>where
CharArrayRefSearcher<'a, 'b, N>: ReverseSearcher<'a>,
fn strip_suffix_of<'a>(self, haystack: &'a str) -> Option<&'a str>where
CharArrayRefSearcher<'a, 'b, N>: ReverseSearcher<'a>,
pattern
#27721)Source§fn as_utf8_pattern(&self) -> Option<Utf8Pattern<'_>>
fn as_utf8_pattern(&self) -> Option<Utf8Pattern<'_>>
pattern
#27721)Source§impl<const N: usize> Pattern for [char; N]
Available on non-crate feature ferrocene_certified
only.Searches for chars that are equal to any of the char
s in the array.
impl<const N: usize> Pattern for [char; N]
ferrocene_certified
only.Searches for chars that are equal to any of the char
s in the array.
§Examples
Source§type Searcher<'a> = CharArraySearcher<'a, N>
type Searcher<'a> = CharArraySearcher<'a, N>
pattern
#27721)Source§fn into_searcher<'a>(self, haystack: &'a str) -> CharArraySearcher<'a, N>
fn into_searcher<'a>(self, haystack: &'a str) -> CharArraySearcher<'a, N>
pattern
#27721)self
and the haystack
to search in.Source§fn is_contained_in<'a>(self, haystack: &'a str) -> bool
fn is_contained_in<'a>(self, haystack: &'a str) -> bool
pattern
#27721)Source§fn is_prefix_of<'a>(self, haystack: &'a str) -> bool
fn is_prefix_of<'a>(self, haystack: &'a str) -> bool
pattern
#27721)Source§fn strip_prefix_of<'a>(self, haystack: &'a str) -> Option<&'a str>
fn strip_prefix_of<'a>(self, haystack: &'a str) -> Option<&'a str>
pattern
#27721)Source§fn is_suffix_of<'a>(self, haystack: &'a str) -> boolwhere
CharArraySearcher<'a, N>: ReverseSearcher<'a>,
fn is_suffix_of<'a>(self, haystack: &'a str) -> boolwhere
CharArraySearcher<'a, N>: ReverseSearcher<'a>,
pattern
#27721)Source§fn strip_suffix_of<'a>(self, haystack: &'a str) -> Option<&'a str>where
CharArraySearcher<'a, N>: ReverseSearcher<'a>,
fn strip_suffix_of<'a>(self, haystack: &'a str) -> Option<&'a str>where
CharArraySearcher<'a, N>: ReverseSearcher<'a>,
pattern
#27721)Source§fn as_utf8_pattern(&self) -> Option<Utf8Pattern<'_>>
fn as_utf8_pattern(&self) -> Option<Utf8Pattern<'_>>
pattern
#27721)1.51.0 · Source§impl<T, const N: usize> SlicePattern for [T; N]
Available on non-crate feature ferrocene_certified
only.
impl<T, const N: usize> SlicePattern for [T; N]
ferrocene_certified
only.1.34.0 (const: unstable) · Source§impl<'a, T, const N: usize> TryFrom<&'a [T]> for &'a [T; N]
Available on non-crate feature ferrocene_certified
only.Tries to create an array ref &[T; N]
from a slice ref &[T]
. Succeeds if
slice.len() == N
.
impl<'a, T, const N: usize> TryFrom<&'a [T]> for &'a [T; N]
ferrocene_certified
only.Tries to create an array ref &[T; N]
from a slice ref &[T]
. Succeeds if
slice.len() == N
.
1.34.0 (const: unstable) · Source§impl<T, const N: usize> TryFrom<&[T]> for [T; N]where
T: Copy,
Available on non-crate feature ferrocene_certified
only.Tries to create an array [T; N]
by copying from a slice &[T]
.
Succeeds if slice.len() == N
.
impl<T, const N: usize> TryFrom<&[T]> for [T; N]where
T: Copy,
ferrocene_certified
only.Tries to create an array [T; N]
by copying from a slice &[T]
.
Succeeds if slice.len() == N
.
1.34.0 (const: unstable) · Source§impl<'a, T, const N: usize> TryFrom<&'a mut [T]> for &'a mut [T; N]
Available on non-crate feature ferrocene_certified
only.Tries to create a mutable array ref &mut [T; N]
from a mutable slice ref
&mut [T]
. Succeeds if slice.len() == N
.
impl<'a, T, const N: usize> TryFrom<&'a mut [T]> for &'a mut [T; N]
ferrocene_certified
only.Tries to create a mutable array ref &mut [T; N]
from a mutable slice ref
&mut [T]
. Succeeds if slice.len() == N
.
1.59.0 (const: unstable) · Source§impl<T, const N: usize> TryFrom<&mut [T]> for [T; N]where
T: Copy,
Available on non-crate feature ferrocene_certified
only.Tries to create an array [T; N]
by copying from a mutable slice &mut [T]
.
Succeeds if slice.len() == N
.
impl<T, const N: usize> TryFrom<&mut [T]> for [T; N]where
T: Copy,
ferrocene_certified
only.Tries to create an array [T; N]
by copying from a mutable slice &mut [T]
.
Succeeds if slice.len() == N
.
impl<T: CloneFromCell, const N: usize> CloneFromCell for [T; N]
ferrocene_certified
only.impl<T: ConstParamTy_, const N: usize> ConstParamTy_ for [T; N]
impl<T: Copy, const N: usize> Copy for [T; N]
ferrocene_certified
only.impl<T: Eq, const N: usize> Eq for [T; N]
ferrocene_certified
only.impl<T, const N: usize> StructuralPartialEq for [T; N]
Auto Trait Implementations§
impl<T, const N: usize> Freeze for [MaybeUninit<T>; N]where
T: Freeze,
impl<T, const N: usize> RefUnwindSafe for [MaybeUninit<T>; N]where
T: RefUnwindSafe,
impl<T, const N: usize> Send for [MaybeUninit<T>; N]where
T: Send,
impl<T, const N: usize> Sync for [MaybeUninit<T>; N]where
T: Sync,
impl<T, const N: usize> Unpin for [MaybeUninit<T>; N]where
T: Unpin,
impl<T, const N: usize> UnwindSafe for [MaybeUninit<T>; N]where
T: UnwindSafe,
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
ferrocene_certified
only.