Skip to main content

OccupiedError

Struct OccupiedError 

Source
pub struct OccupiedError<'a, K, V, S, A = Global>
where A: Allocator,
{ pub entry: OccupiedEntry<'a, K, V, S, A>, pub value: V, }
Expand description

The error returned by try_insert when the key already exists.

Contains the occupied entry, and the value that was not inserted.

§Examples

use rune::alloc::hash_map::{HashMap, OccupiedError};
use rune::alloc::error::CustomError;

let mut map: HashMap<_, _> = [("a", 10), ("b", 20)].try_into()?;

// try_insert method returns mutable reference to the value if keys are vacant,
// but if the map did have key present, nothing is updated, and the provided
// value is returned inside `Err(_)` variant
match map.try_insert_or("a", 100) {
    Err(CustomError::Custom(OccupiedError { mut entry, value })) => {
        assert_eq!(entry.key(), &"a");
        assert_eq!(value, 100);
        assert_eq!(entry.insert(100), 10)
    }
    _ => unreachable!(),
}
assert_eq!(map[&"a"], 100);

Fields§

§entry: OccupiedEntry<'a, K, V, S, A>

The entry in the map that was already occupied.

§value: V

The value which was not inserted, because the entry was already occupied.