Stalin Binary Search

Idea is based on Stalin Sort ss

It's alike binary search but any checking element which is not target one is eliminated.

Complexity is~ O(log n) on first run however after~ n/2 runs Complxity will be O(1) guaranteed.

```rust

[cfg(test)]

mod tests { use super::*;

#[test] fn findonsorted() { let mut sorted = vec![1, 2, 3, 4, 5, 6, 7, 8, 9]; let find = sorted.stalinfind(3); assert!(find.issome()); asserteq!( find, Some(1), ); asserteq!( sorted, vec![1, 3, 4, 6, 7, 8, 9], ); if let Some(find3) = find { asserteq!( 3, sorted[find_3] ); } }

#[test] fn findonunsorted() { let mut unsorted = vec![33, 55, 3, 4, 7657, 6, 7, 8]; asserteq!( unsorted.stalinfind(3), Some(2), ); asserteq!( unsorted, vec![33, 55, 3, 7657, 7, 8], ); if let Some(find7) = unsorted.stalinfind(7) { asserteq!( 7, unsorted[find_7] ); } }

#[test] fn findfail() { let mut unsorted = vec![33, 55, 3, 4, 7657, 6, 7, 8]; asserteq!( unsorted.stalinfind(77), None, ); asserteq!( unsorted, vec![], ); }

#[test] fn findnotfail() { let mut unsorted = vec![33, 55, 3, 4, 7657, 6, 7, 8, 2]; asserteq!( unsorted.stalinfind(2), Some(0), ); assert_eq!( unsorted, vec![2], ); } } ```