Rollup merge of #122817 - ultrabear:ultrabear_btreedoc, r=Nilstrieb
Doc Guarantee: BTree(Set|Map): `IntoIter` Iterate in Sorted by key Order This Doc-only PR adds text to the IntoIterator implementation and IntoIter type for both BTreeMap and BTreeSet that states that the returned items will be in sorted-by-key order, this is a guarantee that is made by the iter() and iter_mut() methods of BTreeMap/Set and BTreeMap respectively, but not on into_iter methods or types. I don't know how the IntoIter iteration would not be sorted by key, and I would like to rely on that behavior for my prefix_array crate. The text appended to IntoIter documentation is based on each types respective iter() method documentation, as is the text used in the IntoIterator documentation; they are slightly inconsistent between Set/Map, but they are consistent within their own types documentation.
This commit is contained in:
commit
fa99ebc7cf
@ -72,7 +72,7 @@ pub(super) const MIN_LEN: usize = node::MIN_LEN_AFTER_SPLIT;
|
||||
/// `BTreeMap` that observed the logic error and not result in undefined behavior. This could
|
||||
/// include panics, incorrect results, aborts, memory leaks, and non-termination.
|
||||
///
|
||||
/// Iterators obtained from functions such as [`BTreeMap::iter`], [`BTreeMap::values`], or
|
||||
/// Iterators obtained from functions such as [`BTreeMap::iter`], [`BTreeMap::into_iter`], [`BTreeMap::values`], or
|
||||
/// [`BTreeMap::keys`] produce their items in order by key, and take worst-case logarithmic and
|
||||
/// amortized constant time per item returned.
|
||||
///
|
||||
@ -415,7 +415,7 @@ impl<'a, K: 'a, V: 'a> Default for IterMut<'a, K, V> {
|
||||
}
|
||||
}
|
||||
|
||||
/// An owning iterator over the entries of a `BTreeMap`.
|
||||
/// An owning iterator over the entries of a `BTreeMap`, sorted by key.
|
||||
///
|
||||
/// This `struct` is created by the [`into_iter`] method on [`BTreeMap`]
|
||||
/// (provided by the [`IntoIterator`] trait). See its documentation for more.
|
||||
@ -1637,6 +1637,7 @@ impl<K, V, A: Allocator + Clone> IntoIterator for BTreeMap<K, V, A> {
|
||||
type Item = (K, V);
|
||||
type IntoIter = IntoIter<K, V, A>;
|
||||
|
||||
/// Gets an owning iterator over the entries of the map, sorted by key.
|
||||
fn into_iter(self) -> IntoIter<K, V, A> {
|
||||
let mut me = ManuallyDrop::new(self);
|
||||
if let Some(root) = me.root.take() {
|
||||
|
@ -27,7 +27,7 @@ use crate::alloc::{Allocator, Global};
|
||||
/// `BTreeSet` that observed the logic error and not result in undefined behavior. This could
|
||||
/// include panics, incorrect results, aborts, memory leaks, and non-termination.
|
||||
///
|
||||
/// Iterators returned by [`BTreeSet::iter`] produce their items in order, and take worst-case
|
||||
/// Iterators returned by [`BTreeSet::iter`] and [`BTreeSet::into_iter`] produce their items in order, and take worst-case
|
||||
/// logarithmic and amortized constant time per item returned.
|
||||
///
|
||||
/// [`Cell`]: core::cell::Cell
|
||||
@ -140,7 +140,7 @@ impl<T: fmt::Debug> fmt::Debug for Iter<'_, T> {
|
||||
}
|
||||
}
|
||||
|
||||
/// An owning iterator over the items of a `BTreeSet`.
|
||||
/// An owning iterator over the items of a `BTreeSet` in ascending order.
|
||||
///
|
||||
/// This `struct` is created by the [`into_iter`] method on [`BTreeSet`]
|
||||
/// (provided by the [`IntoIterator`] trait). See its documentation for more.
|
||||
@ -1237,7 +1237,7 @@ impl<T, A: Allocator + Clone> IntoIterator for BTreeSet<T, A> {
|
||||
type Item = T;
|
||||
type IntoIter = IntoIter<T, A>;
|
||||
|
||||
/// Gets an iterator for moving out the `BTreeSet`'s contents.
|
||||
/// Gets an iterator for moving out the `BTreeSet`'s contents in ascending order.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
|
Loading…
x
Reference in New Issue
Block a user