Skip to content

Commit 68654b9

Browse files
authored
Rollup merge of rust-lang#38208 - frewsxcv:btreesetdocs, r=GuillaumeGomez
Improvements to `BTreeSet` documentation. None
2 parents 56cec2e + 457c282 commit 68654b9

File tree

1 file changed

+60
-11
lines changed
  • src/libcollections/btree

1 file changed

+60
-11
lines changed

src/libcollections/btree/set.rs

Lines changed: 60 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -74,53 +74,91 @@ pub struct BTreeSet<T> {
7474
map: BTreeMap<T, ()>,
7575
}
7676

77-
/// An iterator over a BTreeSet's items.
77+
/// An iterator over a `BTreeSet`'s items.
78+
///
79+
/// This structure is created by the [`iter()`] method on [`BTreeSet`].
80+
///
81+
/// [`BTreeSet`]: struct.BTreeSet.html
82+
/// [`iter()`]: struct.BTreeSet.html#method.iter
7883
#[stable(feature = "rust1", since = "1.0.0")]
7984
pub struct Iter<'a, T: 'a> {
8085
iter: Keys<'a, T, ()>,
8186
}
8287

83-
/// An owning iterator over a BTreeSet's items.
88+
/// An owning iterator over a `BTreeSet`'s items.
89+
///
90+
/// This structure is created by the [`into_iter()`] method on [`BTreeSet`]
91+
/// [`BTreeSet`] (provided by the [`IntoIterator`] trait).
92+
///
93+
/// [`BTreeSet`]: struct.BTreeSet.html
94+
/// [`IntoIterator`]: ../../iter/trait.IntoIterator.html
95+
/// [`into_iter()`]: ../../iter/trait.IntoIterator.html#tymethod.into_iter
8496
#[stable(feature = "rust1", since = "1.0.0")]
8597
pub struct IntoIter<T> {
8698
iter: ::btree_map::IntoIter<T, ()>,
8799
}
88100

89-
/// An iterator over a sub-range of BTreeSet's items.
101+
/// An iterator over a sub-range of `BTreeSet`'s items.
102+
///
103+
/// This structure is created by the [`range()`] method on [`BTreeSet`].
104+
///
105+
/// [`BTreeSet`]: struct.BTreeSet.html
106+
/// [`range()`]: struct.BTreeSet.html#method.range
90107
pub struct Range<'a, T: 'a> {
91108
iter: ::btree_map::Range<'a, T, ()>,
92109
}
93110

94111
/// A lazy iterator producing elements in the set difference (in-order).
112+
///
113+
/// This structure is created by the [`difference()`] method on [`BTreeSet`].
114+
///
115+
/// [`BTreeSet`]: struct.BTreeSet.html
116+
/// [`difference()`]: struct.BTreeSet.html#method.difference
95117
#[stable(feature = "rust1", since = "1.0.0")]
96118
pub struct Difference<'a, T: 'a> {
97119
a: Peekable<Iter<'a, T>>,
98120
b: Peekable<Iter<'a, T>>,
99121
}
100122

101123
/// A lazy iterator producing elements in the set symmetric difference (in-order).
124+
///
125+
/// This structure is created by the [`symmetric_difference()`] method on
126+
/// [`BTreeSet`].
127+
///
128+
/// [`BTreeSet`]: struct.BTreeSet.html
129+
/// [`symmetric_difference()`]: struct.BTreeSet.html#method.symmetric_difference
102130
#[stable(feature = "rust1", since = "1.0.0")]
103131
pub struct SymmetricDifference<'a, T: 'a> {
104132
a: Peekable<Iter<'a, T>>,
105133
b: Peekable<Iter<'a, T>>,
106134
}
107135

108136
/// A lazy iterator producing elements in the set intersection (in-order).
137+
///
138+
/// This structure is created by the [`intersection()`] method on [`BTreeSet`].
139+
///
140+
/// [`BTreeSet`]: struct.BTreeSet.html
141+
/// [`intersection()`]: struct.BTreeSet.html#method.intersection
109142
#[stable(feature = "rust1", since = "1.0.0")]
110143
pub struct Intersection<'a, T: 'a> {
111144
a: Peekable<Iter<'a, T>>,
112145
b: Peekable<Iter<'a, T>>,
113146
}
114147

115148
/// A lazy iterator producing elements in the set union (in-order).
149+
///
150+
/// This structure is created by the [`union()`] method on [`BTreeSet`].
151+
///
152+
/// [`BTreeSet`]: struct.BTreeSet.html
153+
/// [`union()`]: struct.BTreeSet.html#method.union
116154
#[stable(feature = "rust1", since = "1.0.0")]
117155
pub struct Union<'a, T: 'a> {
118156
a: Peekable<Iter<'a, T>>,
119157
b: Peekable<Iter<'a, T>>,
120158
}
121159

122160
impl<T: Ord> BTreeSet<T> {
123-
/// Makes a new BTreeSet with a reasonable choice of B.
161+
/// Makes a new `BTreeSet` with a reasonable choice of B.
124162
///
125163
/// # Examples
126164
///
@@ -137,21 +175,32 @@ impl<T: Ord> BTreeSet<T> {
137175
}
138176

139177
impl<T> BTreeSet<T> {
140-
/// Gets an iterator over the BTreeSet's contents.
178+
/// Gets an iterator that visits the values in the `BTreeSet` in ascending order.
141179
///
142180
/// # Examples
143181
///
144182
/// ```
145183
/// use std::collections::BTreeSet;
146184
///
147-
/// let set: BTreeSet<usize> = [1, 2, 3, 4].iter().cloned().collect();
185+
/// let set: BTreeSet<usize> = [1, 2, 3].iter().cloned().collect();
186+
/// let mut set_iter = set.iter();
187+
/// assert_eq!(set_iter.next(), Some(&1));
188+
/// assert_eq!(set_iter.next(), Some(&2));
189+
/// assert_eq!(set_iter.next(), Some(&3));
190+
/// assert_eq!(set_iter.next(), None);
191+
/// ```
148192
///
149-
/// for x in set.iter() {
150-
/// println!("{}", x);
151-
/// }
193+
/// Values returned by the iterator are returned in ascending order:
152194
///
153-
/// let v: Vec<_> = set.iter().cloned().collect();
154-
/// assert_eq!(v, [1, 2, 3, 4]);
195+
/// ```
196+
/// use std::collections::BTreeSet;
197+
///
198+
/// let set: BTreeSet<usize> = [3, 1, 2].iter().cloned().collect();
199+
/// let mut set_iter = set.iter();
200+
/// assert_eq!(set_iter.next(), Some(&1));
201+
/// assert_eq!(set_iter.next(), Some(&2));
202+
/// assert_eq!(set_iter.next(), Some(&3));
203+
/// assert_eq!(set_iter.next(), None);
155204
/// ```
156205
#[stable(feature = "rust1", since = "1.0.0")]
157206
pub fn iter(&self) -> Iter<T> {

0 commit comments

Comments
 (0)