Struct IterCopiedRev

Source
pub struct IterCopiedRev<'a, T> { /* private fields */ }
Expand description

A const equivalent of iter::Rev<iter::Copied<slice::Iter<'a, T>>>

This const iterator can be created with

konst::slice::iter_copied(slice).rev()

§Version compatibility

This requires the "rust_1_61" feature.

§Example

use konst::iter;
use konst::slice::{self, IterCopiedRev};

const fn rfind_even(slice: &[u32]) -> Option<u32> {
    let iter: IterCopiedRev<'_, u32> = slice::iter_copied(slice).rev();
    iter::eval!(iter,find(|&elem| elem % 2 == 0))
}

assert_eq!(rfind_even(&[]), None);
assert_eq!(rfind_even(&[1]), None);
assert_eq!(rfind_even(&[1, 2]), Some(2));
assert_eq!(rfind_even(&[1, 2, 3, 4, 5]), Some(4));

Implementations§

Source§

impl<'a, T> IterCopiedRev<'a, T>
where T: Copy,

Source

pub const fn copy(&self) -> IterCopiedRev<'a, T>

Creates a clone of this iterator

Source

pub const fn rev(self) -> IterCopied<'a, T>

Reverses the iterator

Source

pub const fn next(self) -> Option<(T, IterCopiedRev<'a, T>)>

Advances the iterator and returns the next value.

Source

pub const fn next_back(self) -> Option<(T, IterCopiedRev<'a, T>)>

Removes and returns an element from the end of the iterator.

Source

pub const fn as_slice(&self) -> &'a [T]

Accesses the remaining slice.

Trait Implementations§

Auto Trait Implementations§

§

impl<'a, T> Freeze for IterCopiedRev<'a, T>

§

impl<'a, T> RefUnwindSafe for IterCopiedRev<'a, T>
where T: RefUnwindSafe,

§

impl<'a, T> Send for IterCopiedRev<'a, T>
where T: Sync,

§

impl<'a, T> Sync for IterCopiedRev<'a, T>
where T: Sync,

§

impl<'a, T> Unpin for IterCopiedRev<'a, T>

§

impl<'a, T> UnwindSafe for IterCopiedRev<'a, T>
where T: RefUnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 16 bytes