Function konst::slice::split_last[][src]

pub const fn split_last<T>(slice: &[T]) -> Option<(&T, &[T])>
Expand description

A const equivalent of <[T]>::split_last

Example

use konst::slice;

const fn find_last_even(mut slice: &[u32]) -> Option<usize> {
    let mut ret = 0u32;
    while let Some((last, rem)) = slice::split_last(slice) {
        if *last % 2 == 0 {
            return Some(rem.len());
        }

        // advances the slice
        slice = rem;
    }
    None
}

assert_eq!(find_last_even(&[3, 5]), None);

assert_eq!(find_last_even(&[3, 5, 8, 13, 21]), Some(2));

assert_eq!(find_last_even(&[3, 5, 8, 13, 21, 34, 55]), Some(5));

assert_eq!(find_last_even(&[3, 5, 8, 13, 21, 34, 55, 89, 144]), Some(8));