pub fn find>(array: C, key: T) -> Option { let array = array.as_ref(); match array.len() { 0 => None, 1 => Some(0).filter(|_| array[0] == key), n => { let mid = n / 2; let (a1, a2) = array.split_at(mid); if key < array[mid] { find(a1, key) } else { find(a2, key).map(|i| i + mid) } } } }