Skip to main content

PeekMut

Struct PeekMut 

1.12.0 ยท Source
pub struct PeekMut<'a, T, A = Global>
where T: 'a + Ord, A: Allocator,
{ /* private fields */ }
Expand description

Structure wrapping a mutable reference to the greatest item on a BinaryHeap.

This struct is created by the peek_mut method on BinaryHeap. See its documentation for more.

Implementationsยง

Sourceยง

impl<'a, T, A> PeekMut<'a, T, A>
where T: Ord, A: Allocator,

Source

pub fn refresh(&mut self) -> bool

๐Ÿ”ฌThis is a nightly-only experimental API. (binary_heap_peek_mut_refresh #138355)

Sifts the current element to its new position.

Afterwards refers to the new element. Returns if the element changed.

ยงExamples

The condition can be used to upper bound all elements in the heap. When only few elements are affected, the heapโ€™s sort ensures this is faster than a reconstruction from the raw element list and requires no additional allocation.

#![feature(binary_heap_peek_mut_refresh)]
use std::collections::BinaryHeap;

let mut heap: BinaryHeap<u32> = (0..128).collect();
let mut peek = heap.peek_mut().unwrap();

loop {
    *peek = 99;

    if !peek.refresh() {
        break;
    }
}

// Post condition, this is now an upper bound.
assert!(*peek < 100);

When the element remains the maximum after modification, the peek remains unchanged:

#![feature(binary_heap_peek_mut_refresh)]
use std::collections::BinaryHeap;

let mut heap: BinaryHeap<u32> = [1, 2, 3].into();
let mut peek = heap.peek_mut().unwrap();

assert_eq!(*peek, 3);
*peek = 42;

// When we refresh, the peek is updated to the new maximum.
assert!(!peek.refresh(), "42 is even larger than 3");
assert_eq!(*peek, 42);
1.18.0 ยท Source

pub fn pop(this: PeekMut<'a, T, A>) -> T

Removes the peeked value from the heap and returns it.

Trait Implementationsยง

1.17.0 ยท Sourceยง

impl<T, A> Debug for PeekMut<'_, T, A>
where T: Ord + Debug, A: Allocator,

Sourceยง

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
1.12.0 ยท Sourceยง

impl<T, A> Deref for PeekMut<'_, T, A>
where T: Ord, A: Allocator,

Sourceยง

type Target = T

The resulting type after dereferencing.
Sourceยง

fn deref(&self) -> &T

Dereferences the value.
1.12.0 ยท Sourceยง

impl<T, A> DerefMut for PeekMut<'_, T, A>
where T: Ord, A: Allocator,

Sourceยง

fn deref_mut(&mut self) -> &mut T

Mutably dereferences the value.
1.12.0 ยท Sourceยง

impl<T, A> Drop for PeekMut<'_, T, A>
where T: Ord, A: Allocator,

Sourceยง

fn drop(&mut self)

Executes the destructor for this type. Read more
Sourceยง

fn pin_drop(self: Pin<&mut Self>)

๐Ÿ”ฌThis is a nightly-only experimental API. (pin_ergonomics #130494)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementationsยง

ยง

impl<'a, T, A = Global> !UnwindSafe for PeekMut<'a, T, A>

ยง

impl<'a, T, A> Freeze for PeekMut<'a, T, A>

ยง

impl<'a, T, A> RefUnwindSafe for PeekMut<'a, T, A>

ยง

impl<'a, T, A> Send for PeekMut<'a, T, A>
where A: Send, T: Send,

ยง

impl<'a, T, A> Sync for PeekMut<'a, T, A>
where A: Sync, T: Sync,

ยง

impl<'a, T, A> Unpin for PeekMut<'a, T, A>

ยง

impl<'a, T, A> UnsafeUnpin for PeekMut<'a, T, A>

Blanket Implementationsยง

Sourceยง

impl<T> Any for T
where T: 'static + ?Sized,

Sourceยง

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Sourceยง

impl<T> Borrow<T> for T
where T: ?Sized,

Sourceยง

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Sourceยง

impl<T> BorrowMut<T> for T
where T: ?Sized,

Sourceยง

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Sourceยง

impl<T> From<T> for T

Sourceยง

fn from(t: T) -> T

Returns the argument unchanged.

Sourceยง

impl<T, U> Into<U> for T
where U: From<T>,

Sourceยง

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Sourceยง

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Sourceยง

type Target = T

๐Ÿ”ฌThis is a nightly-only experimental API. (arbitrary_self_types #44874)
The target type on which the method may be called.
Sourceยง

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Sourceยง

type Error = Infallible

The type returned in the event of a conversion error.
Sourceยง

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Sourceยง

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Sourceยง

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Sourceยง

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.