# Enum hashbrown::hash_set::Entry

source · [−]

    pub enum Entry<'a, T, S, A = Global> where
        A: Allocator + Clone, {
        Occupied(OccupiedEntry<'a, T, S, A>),
        Vacant(VacantEntry<'a, T, S, A>),
    }

Expand description

A view into a single entry in a set, which may either be vacant or occupied.

This `enum` is constructed from the `entry` method on `HashSet`.

## Examples

    use hashbrown::hash_set::{Entry, HashSet, OccupiedEntry};

    let mut set = HashSet::new();
    set.extend(["a", "b", "c"]);
    assert_eq!(set.len(), 3);

    // Existing value (insert)
    let entry: Entry<_, _> = set.entry("a");
    let _raw_o: OccupiedEntry<_, _> = entry.insert();
    assert_eq!(set.len(), 3);
    // Nonexistent value (insert)
    set.entry("d").insert();

    // Existing value (or_insert)
    set.entry("b").or_insert();
    // Nonexistent value (or_insert)
    set.entry("e").or_insert();

    println!("Our HashSet: {:?}", set);

    let mut vec: Vec<_> = set.iter().copied().collect();
    // The `Iter` iterator produces items in arbitrary order, so the
    // items must be sorted to test them against a sorted array.
    vec.sort_unstable();
    assert_eq!(vec, ["a", "b", "c", "d", "e"]);

## Variants

### `Occupied(OccupiedEntry<'a, T, S, A>)`

An occupied entry.

#### Examples

    use hashbrown::hash_set::{Entry, HashSet};
    let mut set: HashSet<_> = ["a", "b"].into();

    match set.entry("a") {
        Entry::Vacant(_) => unreachable!(),
        Entry::Occupied(_) => { }
    }

### `Vacant(VacantEntry<'a, T, S, A>)`

A vacant entry.

#### Examples

    use hashbrown::hash_set::{Entry, HashSet};
    let mut set: HashSet<&str> = HashSet::new();

    match set.entry("a") {
        Entry::Occupied(_) => unreachable!(),
        Entry::Vacant(_) => { }
    }

## Implementations

source

### impl<'a, T, S, A: Allocator + Clone> Entry<'a, T, S, A>

source

#### pub fn insert(self) -> OccupiedEntry<'a, T, S, A> where
T: Hash,
S: BuildHasher,

Sets the value of the entry, and returns an OccupiedEntry.

##### Examples

    use hashbrown::HashSet;

    let mut set: HashSet<&str> = HashSet::new();
    let entry = set.entry("horseyland").insert();

    assert_eq!(entry.get(), &"horseyland");

source

#### pub fn or_insert(self) where
T: Hash,
S: BuildHasher,

Ensures a value is in the entry by inserting if it was vacant.

##### Examples

    use hashbrown::HashSet;

    let mut set: HashSet<&str> = HashSet::new();

    // nonexistent key
    set.entry("poneyland").or_insert();
    assert!(set.contains("poneyland"));

    // existing key
    set.entry("poneyland").or_insert();
    assert!(set.contains("poneyland"));
    assert_eq!(set.len(), 1);

source

#### pub fn get(&self) -> &T

Returns a reference to this entry’s value.

##### Examples

    use hashbrown::HashSet;

    let mut set: HashSet<&str> = HashSet::new();
    set.entry("poneyland").or_insert();
    // existing key
    assert_eq!(set.entry("poneyland").get(), &"poneyland");
    // nonexistent key
    assert_eq!(set.entry("horseland").get(), &"horseland");

## Trait Implementations

source

### impl<T: Debug, S, A: Allocator + Clone> Debug for Entry<'_, T, S, A>

source

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

Formats the value using the given formatter. Read more

## Auto Trait Implementations

### impl<'a, T, S, A> RefUnwindSafe for Entry<'a, T, S, A> where
A: RefUnwindSafe,
S: RefUnwindSafe,
T: RefUnwindSafe,

### impl<'a, T, S, A> Send for Entry<'a, T, S, A> where
A: Send,
S: Send,
T: Send,

### impl<'a, T, S, A> Sync for Entry<'a, T, S, A> where
A: Sync,
S: Sync,
T: Sync,

### impl<'a, T, S, A> Unpin for Entry<'a, T, S, A> where
T: Unpin,

### impl<'a, T, S, A = Global> !UnwindSafe for Entry<'a, T, S, 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,

const: unstable · source

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more

source

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

const: unstable · source

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

Mutably borrows from an owned value. Read more

source

### impl<T> From<T> for T

const: unstable · source

#### fn from(t: T) -> T

Returns the argument unchanged.

source

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

const: unstable · 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<T, U> TryFrom<U> for T where
U: Into<T>,

#### type Error = Infallible

The type returned in the event of a conversion error.

const: unstable · 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>,

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

The type returned in the event of a conversion error.

const: unstable · source

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

Performs the conversion.