Rollup merge of #92902 - ssomers:docter_drain, r=yaahc
Improve the documentation of drain members hopefully fixes #92765
This commit is contained in:
commit
4fa71ed0f0
@ -746,9 +746,12 @@ impl<T: Ord> BinaryHeap<T> {
|
||||
self.rebuild_tail(start);
|
||||
}
|
||||
|
||||
/// Returns an iterator which retrieves elements in heap order.
|
||||
/// The retrieved elements are removed from the original heap.
|
||||
/// The remaining elements will be removed on drop in heap order.
|
||||
/// Clears the binary heap, returning an iterator over the removed elements
|
||||
/// in heap order. If the iterator is dropped before being fully consumed,
|
||||
/// it drops the remaining elements in heap order.
|
||||
///
|
||||
/// The returned iterator keeps a mutable borrow on the heap to optimize
|
||||
/// its implementation.
|
||||
///
|
||||
/// Note:
|
||||
/// * `.drain_sorted()` is *O*(*n* \* log(*n*)); much slower than `.drain()`.
|
||||
@ -1158,9 +1161,12 @@ impl<T> BinaryHeap<T> {
|
||||
self.len() == 0
|
||||
}
|
||||
|
||||
/// Clears the binary heap, returning an iterator over the removed elements.
|
||||
/// Clears the binary heap, returning an iterator over the removed elements
|
||||
/// in arbitrary order. If the iterator is dropped before being fully
|
||||
/// consumed, it drops the remaining elements in arbitrary order.
|
||||
///
|
||||
/// The elements are removed in arbitrary order.
|
||||
/// The returned iterator keeps a mutable borrow on the heap to optimize
|
||||
/// its implementation.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
|
@ -1215,21 +1215,25 @@ impl<T, A: Allocator> VecDeque<T, A> {
|
||||
unsafe { IterMut::new(ring, tail, head, PhantomData) }
|
||||
}
|
||||
|
||||
/// Creates a draining iterator that removes the specified range in the
|
||||
/// deque and yields the removed items.
|
||||
/// Removes the specified range from the deque in bulk, returning all
|
||||
/// removed elements as an iterator. If the iterator is dropped before
|
||||
/// being fully consumed, it drops the remaining removed elements.
|
||||
///
|
||||
/// Note 1: The element range is removed even if the iterator is not
|
||||
/// consumed until the end.
|
||||
/// The returned iterator keeps a mutable borrow on the queue to optimize
|
||||
/// its implementation.
|
||||
///
|
||||
/// Note 2: It is unspecified how many elements are removed from the deque,
|
||||
/// if the `Drain` value is not dropped, but the borrow it holds expires
|
||||
/// (e.g., due to `mem::forget`).
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if the starting point is greater than the end point or if
|
||||
/// the end point is greater than the length of the deque.
|
||||
///
|
||||
/// # Leaking
|
||||
///
|
||||
/// If the returned iterator goes out of scope without being dropped (due to
|
||||
/// [`mem::forget`], for example), the deque may have lost and leaked
|
||||
/// elements arbitrarily, including elements outside the range.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
@ -1240,7 +1244,7 @@ impl<T, A: Allocator> VecDeque<T, A> {
|
||||
/// assert_eq!(drained, [3]);
|
||||
/// assert_eq!(deque, [1, 2]);
|
||||
///
|
||||
/// // A full range clears all contents
|
||||
/// // A full range clears all contents, like `clear()` does
|
||||
/// deque.drain(..);
|
||||
/// assert!(deque.is_empty());
|
||||
/// ```
|
||||
|
@ -1628,17 +1628,24 @@ impl String {
|
||||
self.vec.clear()
|
||||
}
|
||||
|
||||
/// Creates a draining iterator that removes the specified range in the `String`
|
||||
/// and yields the removed `chars`.
|
||||
/// Removes the specified range from the string in bulk, returning all
|
||||
/// removed characters as an iterator.
|
||||
///
|
||||
/// Note: The element range is removed even if the iterator is not
|
||||
/// consumed until the end.
|
||||
/// The returned iterator keeps a mutable borrow on the string to optimize
|
||||
/// its implementation.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if the starting point or end point do not lie on a [`char`]
|
||||
/// boundary, or if they're out of bounds.
|
||||
///
|
||||
/// # Leaking
|
||||
///
|
||||
/// If the returned iterator goes out of scope without being dropped (due to
|
||||
/// [`core::mem::forget`], for example), the string may still contain a copy
|
||||
/// of any drained characters, or may have lost characters arbitrarily,
|
||||
/// including characters outside the range.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// Basic usage:
|
||||
@ -1652,7 +1659,7 @@ impl String {
|
||||
/// assert_eq!(t, "α is alpha, ");
|
||||
/// assert_eq!(s, "β is beta");
|
||||
///
|
||||
/// // A full range clears the string
|
||||
/// // A full range clears the string, like `clear()` does
|
||||
/// s.drain(..);
|
||||
/// assert_eq!(s, "");
|
||||
/// ```
|
||||
|
@ -1799,19 +1799,24 @@ impl<T, A: Allocator> Vec<T, A> {
|
||||
self.len += count;
|
||||
}
|
||||
|
||||
/// Creates a draining iterator that removes the specified range in the vector
|
||||
/// and yields the removed items.
|
||||
/// Removes the specified range from the vector in bulk, returning all
|
||||
/// removed elements as an iterator. If the iterator is dropped before
|
||||
/// being fully consumed, it drops the remaining removed elements.
|
||||
///
|
||||
/// When the iterator **is** dropped, all elements in the range are removed
|
||||
/// from the vector, even if the iterator was not fully consumed. If the
|
||||
/// iterator **is not** dropped (with [`mem::forget`] for example), it is
|
||||
/// unspecified how many elements are removed.
|
||||
/// The returned iterator keeps a mutable borrow on the vector to optimize
|
||||
/// its implementation.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if the starting point is greater than the end point or if
|
||||
/// the end point is greater than the length of the vector.
|
||||
///
|
||||
/// # Leaking
|
||||
///
|
||||
/// If the returned iterator goes out of scope without being dropped (due to
|
||||
/// [`mem::forget`], for example), the vector may have lost and leaked
|
||||
/// elements arbitrarily, including elements outside the range.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
@ -1820,7 +1825,7 @@ impl<T, A: Allocator> Vec<T, A> {
|
||||
/// assert_eq!(v, &[1]);
|
||||
/// assert_eq!(u, &[2, 3]);
|
||||
///
|
||||
/// // A full range clears the vector
|
||||
/// // A full range clears the vector, like `clear()` does
|
||||
/// v.drain(..);
|
||||
/// assert_eq!(v, &[]);
|
||||
/// ```
|
||||
|
@ -547,6 +547,10 @@ impl<K, V, S> HashMap<K, V, S> {
|
||||
/// Clears the map, returning all key-value pairs as an iterator. Keeps the
|
||||
/// allocated memory for reuse.
|
||||
///
|
||||
/// If the returned iterator is dropped before being fully consumed, it
|
||||
/// drops the remaining key-value pairs. The returned iterator keeps a
|
||||
/// mutable borrow on the vector to optimize its implementation.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
|
@ -227,7 +227,12 @@ impl<T, S> HashSet<T, S> {
|
||||
self.base.is_empty()
|
||||
}
|
||||
|
||||
/// Clears the set, returning all elements in an iterator.
|
||||
/// Clears the set, returning all elements as an iterator. Keeps the
|
||||
/// allocated memory for reuse.
|
||||
///
|
||||
/// If the returned iterator is dropped before being fully consumed, it
|
||||
/// drops the remaining elements. The returned iterator keeps a mutable
|
||||
/// borrow on the vector to optimize its implementation.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
|
Loading…
x
Reference in New Issue
Block a user