Sha256: bec4e25645ef4ba882554954e1438e531664add959e99b2da6b00ed349e593df

Contents?: true

Size: 752 Bytes

Versions: 124

Compression:

Stored size: 752 Bytes

Contents

use std::cmp::Ordering;

pub fn find<C, T>(elements: C, needle: T) -> Option<usize>
    where
        C: AsRef<[T]>,
        T: Ord,

{
    let mut base = 0usize;
    let mut slice: &[T] = elements.as_ref();

    loop {
        let (head, tail) = slice.split_at(slice.len() >> 1);
        if let Some(middle_element) = tail.first() {
            match middle_element.cmp(&needle) {
                Ordering::Less => {
                    base += head.len() + 1;
                    slice = &tail[1..];
                }
                Ordering::Greater => slice = head,
                Ordering::Equal => {
                    return Some(base + head.len());
                }
            }
        } else {
            return None;
        }
    }
}

Version data entries

124 entries across 124 versions & 1 rubygems

Version Path
trackler-2.2.1.179 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.178 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.177 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.176 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.175 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.174 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.173 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.172 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.171 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.170 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.169 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.167 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.166 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.165 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.164 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.163 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.162 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.161 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.160 tracks/rust/exercises/binary-search/example.rs
trackler-2.2.1.159 tracks/rust/exercises/binary-search/example.rs