Rollup merge of #92706 - umanwizard:btree, r=dtolnay
Clarify explicitly that BTree{Map,Set} are ordered. One of the main reasons one would want to use a BTree{Map,Set} rather than a Hash{Map,Set} is because they maintain their keys in sorted order; but this was never explicitly stated in the top-level docs (it was only indirectly alluded to there, and stated explicitly in the docs for `iter`, `values`, etc.) This PR states the ordering guarantee more prominently.
This commit is contained in:
commit
039d6dc289
@ -34,7 +34,7 @@
|
||||
// An empty map is represented either by the absence of a root node or by a
|
||||
// root node that is an empty leaf.
|
||||
|
||||
/// A map based on a [B-Tree].
|
||||
/// An ordered map based on a [B-Tree].
|
||||
///
|
||||
/// B-Trees represent a fundamental compromise between cache-efficiency and actually minimizing
|
||||
/// the amount of work performed in a search. In theory, a binary search tree (BST) is the optimal
|
||||
@ -68,6 +68,10 @@
|
||||
/// incorrect results, aborts, memory leaks, or non-termination) but will not be undefined
|
||||
/// behavior.
|
||||
///
|
||||
/// Iterators obtained from functions such as [`BTreeMap::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.
|
||||
///
|
||||
/// [B-Tree]: https://en.wikipedia.org/wiki/B-tree
|
||||
/// [`Cell`]: core::cell::Cell
|
||||
/// [`RefCell`]: core::cell::RefCell
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
// FIXME(conventions): implement bounded iterators
|
||||
|
||||
/// A set based on a B-Tree.
|
||||
/// An ordered set based on a B-Tree.
|
||||
///
|
||||
/// See [`BTreeMap`]'s documentation for a detailed discussion of this collection's performance
|
||||
/// benefits and drawbacks.
|
||||
@ -27,6 +27,9 @@
|
||||
/// incorrect results, aborts, memory leaks, or non-termination) but will not be undefined
|
||||
/// behavior.
|
||||
///
|
||||
/// Iterators returned by [`BTreeSet::iter`] produce their items in order, and take worst-case
|
||||
/// logarithmic and amortized constant time per item returned.
|
||||
///
|
||||
/// [`Ord`]: core::cmp::Ord
|
||||
/// [`Cell`]: core::cell::Cell
|
||||
/// [`RefCell`]: core::cell::RefCell
|
||||
|
@ -14,7 +14,7 @@
|
||||
#[cfg(not(no_global_oom_handling))]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub mod btree_map {
|
||||
//! A map based on a B-Tree.
|
||||
//! An ordered map based on a B-Tree.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub use super::btree::map::*;
|
||||
}
|
||||
@ -22,7 +22,7 @@ pub mod btree_map {
|
||||
#[cfg(not(no_global_oom_handling))]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub mod btree_set {
|
||||
//! A set based on a B-Tree.
|
||||
//! An ordered set based on a B-Tree.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub use super::btree::set::*;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user