diff options
| author | Felix S. Klock II <pnkfelix@pnkfx.org> | 2014-10-06 15:46:09 +0200 |
|---|---|---|
| committer | Felix S. Klock II <pnkfelix@pnkfx.org> | 2014-10-06 15:59:22 +0200 |
| commit | d1e0f7259e2f6dfc5754520730244f4e8b5248a5 (patch) | |
| tree | 8444a01070ebca57989ec98d1438499c9a59595e | |
| parent | 9a2286d3a13c4a97340c99c86c718654f6cb2ed6 (diff) | |
| download | rust-d1e0f7259e2f6dfc5754520730244f4e8b5248a5.tar.gz rust-d1e0f7259e2f6dfc5754520730244f4e8b5248a5.zip | |
Add example to doc for `slice::ImmutableSlice::binary_search`.
Fix #17817.
| -rw-r--r-- | src/libcore/slice.rs | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/src/libcore/slice.rs b/src/libcore/slice.rs index 9f925f9d371..c7ffd8f5617 100644 --- a/src/libcore/slice.rs +++ b/src/libcore/slice.rs @@ -223,10 +223,32 @@ pub trait ImmutableSlice<'a, T> { /// order code that indicates whether its argument is `Less`, /// `Equal` or `Greater` the desired target. /// - /// If the value is found then `Found` is returned, containing the - /// index of the matching element; if the value is not found then + /// If a matching value is found then returns `Found`, containing + /// the index for the matched element; if no match is found then /// `NotFound` is returned, containing the index where a matching /// element could be inserted while maintaining sorted order. + /// + /// # Example + /// + /// Looks up a series of four elements. The first is found, with a + /// uniquely determined position; the second and third are not + /// found; the fourth could match any position in `[1,4]`. + /// + /// ```rust + /// use std::slice::{Found, NotFound}; + /// let s = [0i, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]; + /// let s = s.as_slice(); + /// + /// let seek = 13; + /// assert_eq!(s.binary_search(|probe| probe.cmp(&seek)), Found(9)); + /// let seek = 4; + /// assert_eq!(s.binary_search(|probe| probe.cmp(&seek)), NotFound(7)); + /// let seek = 100; + /// assert_eq!(s.binary_search(|probe| probe.cmp(&seek)), NotFound(13)); + /// let seek = 1; + /// let r = s.binary_search(|probe| probe.cmp(&seek)); + /// assert!(match r { Found(1...4) => true, _ => false, }); + /// ``` #[unstable = "waiting on unboxed closures"] fn binary_search(&self, f: |&T| -> Ordering) -> BinarySearchResult; @@ -1043,6 +1065,24 @@ pub trait ImmutableOrdSlice<T: Ord> { /// index of the matching element; if the value is not found then /// `NotFound` is returned, containing the index where a matching /// element could be inserted while maintaining sorted order. + /// + /// # Example + /// + /// Looks up a series of four elements. The first is found, with a + /// uniquely determined position; the second and third are not + /// found; the fourth could match any position in `[1,4]`. + /// + /// ```rust + /// use std::slice::{Found, NotFound}; + /// let s = [0i, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]; + /// let s = s.as_slice(); + /// + /// assert_eq!(s.binary_search_elem(&13), Found(9)); + /// assert_eq!(s.binary_search_elem(&4), NotFound(7)); + /// assert_eq!(s.binary_search_elem(&100), NotFound(13)); + /// let r = s.binary_search_elem(&1); + /// assert!(match r { Found(1...4) => true, _ => false, }); + /// ``` #[unstable = "name likely to change"] fn binary_search_elem(&self, x: &T) -> BinarySearchResult; } |
