Add missing documentation examples for BinaryHeap.
As part of the ongoing effort to document all methods with examples, this commit adds the missing examples for the `BinaryHeap` collection type. This is part of issue #29348.
This commit is contained in:
parent
8f0479b2a5
commit
118b975c80
@ -167,6 +167,49 @@ use vec::{self, Vec};
|
|||||||
/// item's ordering relative to any other item, as determined by the `Ord`
|
/// item's ordering relative to any other item, as determined by the `Ord`
|
||||||
/// trait, changes while it is in the heap. This is normally only possible
|
/// trait, changes while it is in the heap. This is normally only possible
|
||||||
/// through `Cell`, `RefCell`, global state, I/O, or unsafe code.
|
/// through `Cell`, `RefCell`, global state, I/O, or unsafe code.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use std::collections::BinaryHeap;
|
||||||
|
///
|
||||||
|
/// // type inference lets us omit an explicit type signature (which
|
||||||
|
/// // would be `BinaryHeap<i32>` in this example).
|
||||||
|
/// let mut heap = BinaryHeap::new();
|
||||||
|
///
|
||||||
|
/// // We can use peek to look at the next item in the heap. In this case,
|
||||||
|
/// // there's no items in there yet so we get None.
|
||||||
|
/// assert_eq!(heap.peek(), None);
|
||||||
|
///
|
||||||
|
/// // Let's add some scores...
|
||||||
|
/// heap.push(1);
|
||||||
|
/// heap.push(5);
|
||||||
|
/// heap.push(2);
|
||||||
|
///
|
||||||
|
/// // Now peek shows the most important item in the heap.
|
||||||
|
/// assert_eq!(heap.peek(), Some(&5));
|
||||||
|
///
|
||||||
|
/// // We can check the length of a heap.
|
||||||
|
/// assert_eq!(heap.len(), 3);
|
||||||
|
///
|
||||||
|
/// // We can iterate over the items in the heap, although they are returned in
|
||||||
|
/// // a random order.
|
||||||
|
/// for x in heap.iter() {
|
||||||
|
/// println!("{}", x);
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// // If we instead pop these scores, they should come back in order.
|
||||||
|
/// assert_eq!(heap.pop(), Some(5));
|
||||||
|
/// assert_eq!(heap.pop(), Some(2));
|
||||||
|
/// assert_eq!(heap.pop(), Some(1));
|
||||||
|
/// assert_eq!(heap.pop(), None);
|
||||||
|
///
|
||||||
|
/// // We can clear the heap of any remaining items.
|
||||||
|
/// heap.clear();
|
||||||
|
///
|
||||||
|
/// // The heap should now be empty.
|
||||||
|
/// assert!(heap.is_empty())
|
||||||
|
/// ```
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub struct BinaryHeap<T> {
|
pub struct BinaryHeap<T> {
|
||||||
data: Vec<T>,
|
data: Vec<T>,
|
||||||
@ -331,6 +374,17 @@ impl<T: Ord> BinaryHeap<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Discards as much additional capacity as possible.
|
/// Discards as much additional capacity as possible.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use std::collections::BinaryHeap;
|
||||||
|
/// let mut heap: BinaryHeap<i32> = BinaryHeap::with_capacity(100);
|
||||||
|
///
|
||||||
|
/// assert!(heap.capacity() >= 100);
|
||||||
|
/// heap.shrink_to_fit();
|
||||||
|
/// assert!(heap.capacity() == 0);
|
||||||
|
/// ```
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub fn shrink_to_fit(&mut self) {
|
pub fn shrink_to_fit(&mut self) {
|
||||||
self.data.shrink_to_fit();
|
self.data.shrink_to_fit();
|
||||||
@ -571,12 +625,36 @@ impl<T: Ord> BinaryHeap<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the length of the binary heap.
|
/// Returns the length of the binary heap.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use std::collections::BinaryHeap;
|
||||||
|
/// let mut heap = BinaryHeap::from(vec![1, 3]);
|
||||||
|
///
|
||||||
|
/// assert_eq!(heap.len(), 2);
|
||||||
|
/// ```
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub fn len(&self) -> usize {
|
pub fn len(&self) -> usize {
|
||||||
self.data.len()
|
self.data.len()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Checks if the binary heap is empty.
|
/// Checks if the binary heap is empty.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use std::collections::BinaryHeap;
|
||||||
|
/// let mut heap = BinaryHeap::new();
|
||||||
|
///
|
||||||
|
/// assert!(heap.is_empty());
|
||||||
|
///
|
||||||
|
/// heap.push(3);
|
||||||
|
/// heap.push(5);
|
||||||
|
/// heap.push(1);
|
||||||
|
///
|
||||||
|
/// assert!(!heap.is_empty());
|
||||||
|
/// ```
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub fn is_empty(&self) -> bool {
|
pub fn is_empty(&self) -> bool {
|
||||||
self.len() == 0
|
self.len() == 0
|
||||||
@ -585,6 +663,21 @@ impl<T: Ord> BinaryHeap<T> {
|
|||||||
/// Clears the binary heap, returning an iterator over the removed elements.
|
/// Clears the binary heap, returning an iterator over the removed elements.
|
||||||
///
|
///
|
||||||
/// The elements are removed in arbitrary order.
|
/// The elements are removed in arbitrary order.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use std::collections::BinaryHeap;
|
||||||
|
/// let mut heap = BinaryHeap::from(vec![1, 3]);
|
||||||
|
///
|
||||||
|
/// assert!(!heap.is_empty());
|
||||||
|
///
|
||||||
|
/// for x in heap.drain() {
|
||||||
|
/// println!("{}", x);
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// assert!(heap.is_empty());
|
||||||
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
#[stable(feature = "drain", since = "1.6.0")]
|
#[stable(feature = "drain", since = "1.6.0")]
|
||||||
pub fn drain(&mut self) -> Drain<T> {
|
pub fn drain(&mut self) -> Drain<T> {
|
||||||
@ -592,6 +685,19 @@ impl<T: Ord> BinaryHeap<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Drops all items from the binary heap.
|
/// Drops all items from the binary heap.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use std::collections::BinaryHeap;
|
||||||
|
/// let mut heap = BinaryHeap::from(vec![1, 3]);
|
||||||
|
///
|
||||||
|
/// assert!(!heap.is_empty());
|
||||||
|
///
|
||||||
|
/// heap.clear();
|
||||||
|
///
|
||||||
|
/// assert!(heap.is_empty());
|
||||||
|
/// ```
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub fn clear(&mut self) {
|
pub fn clear(&mut self) {
|
||||||
self.drain();
|
self.drain();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user