pub trait SliceBorrowed: Slice {
// Required method
fn get(&self, index: usize) -> Option<&Self::Output>;
// Provided methods
fn array_chunks<const N: usize>(&self) -> ArrayChunksBorrowed<'_, Self, N> ⓘ { ... }
fn array_windows<const N: usize>(&self) -> ArrayWindowsBorrowed<'_, Self, N> ⓘ { ... }
fn chunks(&self, size: usize) -> ChunksBorrowed<'_, Self> ⓘ { ... }
fn map<F: Fn(&Self::Output) -> R, R>(self, f: F) -> MapBorrowed<Self, F>
where Self: Sized { ... }
fn cloned(self) -> Cloned<Self>
where Self: Sized,
Self::Output: Clone { ... }
fn iter(&self) -> IterBorrowed<'_, Self> ⓘ { ... }
fn windows(&self, size: usize) -> WindowsBorrowed<'_, Self> ⓘ { ... }
}
Expand description
A Slice
that can return borrowed values.
Required Methods§
Provided Methods§
Sourcefn array_chunks<const N: usize>(&self) -> ArrayChunksBorrowed<'_, Self, N> ⓘ
fn array_chunks<const N: usize>(&self) -> ArrayChunksBorrowed<'_, Self, N> ⓘ
Return an iterator over arrays covering consecutive portions of the slice.
Analagous to [slice::array_chunks
].
§Panics
If N == 0
, panics.
§Examples
let slice = [1, 2, 3, 4, 5];
let mut iter = slice.array_chunks::<2>();
assert_eq!(iter.next(), Some([&1, &2]));
assert_eq!(iter.next(), Some([&3, &4]));
assert!(iter.next().is_none());
assert_eq!(iter.remainder(), [5]);
Sourcefn array_windows<const N: usize>(&self) -> ArrayWindowsBorrowed<'_, Self, N> ⓘ
fn array_windows<const N: usize>(&self) -> ArrayWindowsBorrowed<'_, Self, N> ⓘ
Return a slice/iterator over arrays covering overlapping portions of the slice.
Analagous to slice::array_windows
.
§Panics
If N == 0
, panics.
§Examples
let slice = [1, 2, 3, 4, 5];
let mut windows = slice.array_windows::<3>();
assert_eq!(windows.next(), Some([&1, &2, &3]));
assert_eq!(windows.next(), Some([&2, &3, &4]));
assert_eq!(windows.next(), Some([&3, &4, &5]));
assert!(windows.next().is_none());
assert_eq!(windows.get_owned(1), Some([&2, &3, &4]));
Sourcefn chunks(&self, size: usize) -> ChunksBorrowed<'_, Self> ⓘ
fn chunks(&self, size: usize) -> ChunksBorrowed<'_, Self> ⓘ
Return an iterator over slices covering consecutive portions of the slice.
Analagous to slice::chunks
.
§Panics
If size == 0
, panics.
§Examples
let slice = [1, 2, 3, 4, 5];
let mut iter = slice.chunks(2);
assert_eq!(iter.next().unwrap(), [1, 2]);
assert_eq!(iter.next().unwrap(), [3, 4]);
assert_eq!(iter.next().unwrap(), [5]);
assert!(iter.next().is_none());
Sourcefn map<F: Fn(&Self::Output) -> R, R>(self, f: F) -> MapBorrowed<Self, F>where
Self: Sized,
fn map<F: Fn(&Self::Output) -> R, R>(self, f: F) -> MapBorrowed<Self, F>where
Self: Sized,
Call a closure on index, returning a new type.
Analagous to Iterator::map
.
§Examples
let slice = [0, 1, 2].map(|x| x != 0);
assert_eq!(slice, [false, true, true]);
Sourcefn cloned(self) -> Cloned<Self>
fn cloned(self) -> Cloned<Self>
Create a new slice that clones each value on access.
Analagous to self.map(Clone::clone)
.
§Examples
struct Foo(u32);
impl Clone for Foo {
fn clone(&self) -> Foo { Foo(self.0 + 1) }
}
let slice = [Foo(1), Foo(2)];
assert_eq!(slice.cloned(), [Foo(2), Foo(3)]);
Sourcefn iter(&self) -> IterBorrowed<'_, Self> ⓘ
fn iter(&self) -> IterBorrowed<'_, Self> ⓘ
Creates an iterator over the slice.
§Examples
let slice = [1, 2].chain([3]);
let mut iter = slice.iter();
assert_eq!(iter.next(), Some(&1));
assert_eq!(iter.next(), Some(&2));
assert_eq!(iter.next(), Some(&3));
assert!(iter.next().is_none());
Sourcefn windows(&self, size: usize) -> WindowsBorrowed<'_, Self> ⓘ
fn windows(&self, size: usize) -> WindowsBorrowed<'_, Self> ⓘ
Return a slice/iterator over slices covering overlapping portions of the slice.
Analagous to slice::windows
.
§Panics
If size == 0
, panics.
§Examples
let slice = [1, 2, 3, 4, 5];
let mut windows = slice.windows(3);
assert_eq!(windows.next().unwrap(), [1, 2, 3]);
assert_eq!(windows.next().unwrap(), [2, 3, 4]);
assert_eq!(windows.next().unwrap(), [3, 4, 5]);
assert!(windows.next().is_none());
assert_eq!(windows.get_owned(1).unwrap(), [2, 3, 4]);
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.