Skip to content

Commit b070feb

Browse files
authored
Rollup merge of rust-lang#38208 - frewsxcv:btreesetdocs, r=alexcrichton
Improvements to `BTreeSet` documentation. None
2 parents 551cb06 + fe0d092 commit b070feb

File tree

1 file changed

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

1 file changed

+58
-11
lines changed

src/libcollections/btree/set.rs

Lines changed: 58 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -74,53 +74,89 @@ 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
8494
#[stable(feature = "rust1", since = "1.0.0")]
8595
pub struct IntoIter<T> {
8696
iter: ::btree_map::IntoIter<T, ()>,
8797
}
8898

89-
/// An iterator over a sub-range of BTreeSet's items.
99+
/// An iterator over a sub-range of `BTreeSet`'s items.
100+
///
101+
/// This structure is created by the [`range`] method on [`BTreeSet`].
102+
///
103+
/// [`BTreeSet`]: struct.BTreeSet.html
104+
/// [`range`]: struct.BTreeSet.html#method.range
90105
pub struct Range<'a, T: 'a> {
91106
iter: ::btree_map::Range<'a, T, ()>,
92107
}
93108

94109
/// A lazy iterator producing elements in the set difference (in-order).
110+
///
111+
/// This structure is created by the [`difference`] method on [`BTreeSet`].
112+
///
113+
/// [`BTreeSet`]: struct.BTreeSet.html
114+
/// [`difference`]: struct.BTreeSet.html#method.difference
95115
#[stable(feature = "rust1", since = "1.0.0")]
96116
pub struct Difference<'a, T: 'a> {
97117
a: Peekable<Iter<'a, T>>,
98118
b: Peekable<Iter<'a, T>>,
99119
}
100120

101121
/// A lazy iterator producing elements in the set symmetric difference (in-order).
122+
///
123+
/// This structure is created by the [`symmetric_difference`] method on
124+
/// [`BTreeSet`].
125+
///
126+
/// [`BTreeSet`]: struct.BTreeSet.html
127+
/// [`symmetric_difference`]: struct.BTreeSet.html#method.symmetric_difference
102128
#[stable(feature = "rust1", since = "1.0.0")]
103129
pub struct SymmetricDifference<'a, T: 'a> {
104130
a: Peekable<Iter<'a, T>>,
105131
b: Peekable<Iter<'a, T>>,
106132
}
107133

108134
/// A lazy iterator producing elements in the set intersection (in-order).
135+
///
136+
/// This structure is created by the [`intersection`] method on [`BTreeSet`].
137+
///
138+
/// [`BTreeSet`]: struct.BTreeSet.html
139+
/// [`intersection`]: struct.BTreeSet.html#method.intersection
109140
#[stable(feature = "rust1", since = "1.0.0")]
110141
pub struct Intersection<'a, T: 'a> {
111142
a: Peekable<Iter<'a, T>>,
112143
b: Peekable<Iter<'a, T>>,
113144
}
114145

115146
/// A lazy iterator producing elements in the set union (in-order).
147+
///
148+
/// This structure is created by the [`union`] method on [`BTreeSet`].
149+
///
150+
/// [`BTreeSet`]: struct.BTreeSet.html
151+
/// [`union`]: struct.BTreeSet.html#method.union
116152
#[stable(feature = "rust1", since = "1.0.0")]
117153
pub struct Union<'a, T: 'a> {
118154
a: Peekable<Iter<'a, T>>,
119155
b: Peekable<Iter<'a, T>>,
120156
}
121157

122158
impl<T: Ord> BTreeSet<T> {
123-
/// Makes a new BTreeSet with a reasonable choice of B.
159+
/// Makes a new `BTreeSet` with a reasonable choice of B.
124160
///
125161
/// # Examples
126162
///
@@ -137,21 +173,32 @@ impl<T: Ord> BTreeSet<T> {
137173
}
138174

139175
impl<T> BTreeSet<T> {
140-
/// Gets an iterator over the BTreeSet's contents.
176+
/// Gets an iterator that visits the values in the `BTreeSet` in ascending order.
141177
///
142178
/// # Examples
143179
///
144180
/// ```
145181
/// use std::collections::BTreeSet;
146182
///
147-
/// let set: BTreeSet<usize> = [1, 2, 3, 4].iter().cloned().collect();
183+
/// let set: BTreeSet<usize> = [1, 2, 3].iter().cloned().collect();
184+
/// let mut set_iter = set.iter();
185+
/// assert_eq!(set_iter.next(), Some(&1));
186+
/// assert_eq!(set_iter.next(), Some(&2));
187+
/// assert_eq!(set_iter.next(), Some(&3));
188+
/// assert_eq!(set_iter.next(), None);
189+
/// ```
148190
///
149-
/// for x in set.iter() {
150-
/// println!("{}", x);
151-
/// }
191+
/// Values returned by the iterator are returned in ascending order:
152192
///
153-
/// let v: Vec<_> = set.iter().cloned().collect();
154-
/// assert_eq!(v, [1, 2, 3, 4]);
193+
/// ```
194+
/// use std::collections::BTreeSet;
195+
///
196+
/// let set: BTreeSet<usize> = [3, 1, 2].iter().cloned().collect();
197+
/// let mut set_iter = set.iter();
198+
/// assert_eq!(set_iter.next(), Some(&1));
199+
/// assert_eq!(set_iter.next(), Some(&2));
200+
/// assert_eq!(set_iter.next(), Some(&3));
201+
/// assert_eq!(set_iter.next(), None);
155202
/// ```
156203
#[stable(feature = "rust1", since = "1.0.0")]
157204
pub fn iter(&self) -> Iter<T> {

0 commit comments

Comments
 (0)