Skip to content

Commit 599bea8

Browse files
cuvipergitbot
authored and
gitbot
committed
Fill in a BTreeSet::entry example
1 parent dd7cc2f commit 599bea8

File tree

1 file changed

+31
-1
lines changed
  • alloc/src/collections/btree

1 file changed

+31
-1
lines changed

alloc/src/collections/btree/set.rs

+31-1
Original file line numberDiff line numberDiff line change
@@ -993,7 +993,37 @@ impl<T, A: Allocator + Clone> BTreeSet<T, A> {
993993
///
994994
/// # Examples
995995
///
996-
/// TODO
996+
/// ```
997+
/// #![feature(btree_set_entry)]
998+
///
999+
/// use std::collections::BTreeSet;
1000+
/// use std::collections::btree_set::Entry::*;
1001+
///
1002+
/// let mut singles = BTreeSet::new();
1003+
/// let mut dupes = BTreeSet::new();
1004+
///
1005+
/// for ch in "a short treatise on fungi".chars() {
1006+
/// if let Vacant(dupe_entry) = dupes.entry(ch) {
1007+
/// // We haven't already seen a duplicate, so
1008+
/// // check if we've at least seen it once.
1009+
/// match singles.entry(ch) {
1010+
/// Vacant(single_entry) => {
1011+
/// // We found a new character for the first time.
1012+
/// single_entry.insert()
1013+
/// }
1014+
/// Occupied(single_entry) => {
1015+
/// // We've already seen this once, "move" it to dupes.
1016+
/// single_entry.remove();
1017+
/// dupe_entry.insert();
1018+
/// }
1019+
/// }
1020+
/// }
1021+
/// }
1022+
///
1023+
/// assert!(!singles.contains(&'t') && dupes.contains(&'t'));
1024+
/// assert!(singles.contains(&'u') && !dupes.contains(&'u'));
1025+
/// assert!(!singles.contains(&'v') && !dupes.contains(&'v'));
1026+
/// ```
9971027
#[inline]
9981028
#[unstable(feature = "btree_set_entry", issue = "133549")]
9991029
pub fn entry(&mut self, value: T) -> Entry<'_, T, A>

0 commit comments

Comments
 (0)