Skip to main content

FindMutView

Struct FindMutView 

Source
pub struct FindMutView<'a, T, Idx, K>
where T: Ord, Idx: LenType, K: Kind,
{ /* private fields */ }
Expand description

Implementations§

Source§

impl<T, Idx, K> FindMutView<'_, T, Idx, K>
where T: Ord, Idx: LenType, K: Kind,

Source

pub fn pop(self) -> T

This will pop the element from the list.

Complexity is worst-case O(1).

§Example
use heapless::sorted_linked_list::{Max, SortedLinkedList};
let mut ll: SortedLinkedList<_, Max, 3, u8> = SortedLinkedList::new_u8();

ll.push(1).unwrap();
ll.push(2).unwrap();
ll.push(3).unwrap();

// Find a value and update it
let mut find = ll.find_mut(|v| *v == 2).unwrap();
find.pop();

assert_eq!(ll.pop(), Some(3));
assert_eq!(ll.pop(), Some(1));
assert_eq!(ll.pop(), None);
Source

pub fn finish(self)

This will resort the element into the correct position in the list if needed. The resorting will only happen if the element has been accessed mutably.

Same as calling drop.

Complexity is worst-case O(n).

§Example
use heapless::sorted_linked_list::{Max, SortedLinkedList};
let mut ll: SortedLinkedList<_, Max, 3, u8> = SortedLinkedList::new_u8();

ll.push(1).unwrap();
ll.push(2).unwrap();
ll.push(3).unwrap();

let mut find = ll.find_mut(|v| *v == 2).unwrap();
find.finish(); // No resort, we did not access the value.

let mut find = ll.find_mut(|v| *v == 2).unwrap();
*find += 1000;
find.finish(); // Will resort, we accessed (and updated) the value.

assert_eq!(ll.pop(), Some(1002));
assert_eq!(ll.pop(), Some(3));
assert_eq!(ll.pop(), Some(1));
assert_eq!(ll.pop(), None);

Trait Implementations§

Source§

impl<T, Idx, K> Deref for FindMutView<'_, T, Idx, K>
where T: Ord, Idx: LenType, K: Kind,

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<T, Idx, K> DerefMut for FindMutView<'_, T, Idx, K>
where T: Ord, Idx: LenType, K: Kind,

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl<T, Idx, K> Drop for FindMutView<'_, T, Idx, K>
where T: Ord, Idx: LenType, K: Kind,

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
§

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

🔬This is a nightly-only experimental API. (pin_ergonomics)
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, Idx, K> !UnwindSafe for FindMutView<'a, T, Idx, K>

§

impl<'a, T, Idx, K> Freeze for FindMutView<'a, T, Idx, K>
where &'a mut SortedLinkedListInner<T, Idx, K, SortedLinkedListStorageInner<[Node<T, Idx>]>>: Freeze, Idx: Freeze,

§

impl<'a, T, Idx, K> RefUnwindSafe for FindMutView<'a, T, Idx, K>
where &'a mut SortedLinkedListInner<T, Idx, K, SortedLinkedListStorageInner<[Node<T, Idx>]>>: RefUnwindSafe, Idx: RefUnwindSafe,

§

impl<'a, T, Idx, K> Send for FindMutView<'a, T, Idx, K>
where &'a mut SortedLinkedListInner<T, Idx, K, SortedLinkedListStorageInner<[Node<T, Idx>]>>: Send,

§

impl<'a, T, Idx, K> Sync for FindMutView<'a, T, Idx, K>
where &'a mut SortedLinkedListInner<T, Idx, K, SortedLinkedListStorageInner<[Node<T, Idx>]>>: Sync,

§

impl<'a, T, Idx, K> Unpin for FindMutView<'a, T, Idx, K>
where &'a mut SortedLinkedListInner<T, Idx, K, SortedLinkedListStorageInner<[Node<T, Idx>]>>: Unpin, Idx: Unpin,

§

impl<'a, T, Idx, K> UnsafeUnpin for FindMutView<'a, T, Idx, K>
where &'a mut SortedLinkedListInner<T, Idx, K, SortedLinkedListStorageInner<[Node<T, Idx>]>>: UnsafeUnpin, Idx: UnsafeUnpin,

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn into(self) -> U

Calls U::from(self).

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

§

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

§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
§

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

§

type Error = !

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
§

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

§

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

The type returned in the event of a conversion error.
§

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

Performs the conversion.