Entry in std::collections::btree_set - Rust (original) (raw)

pub enum Entry<'a, T, A = Global>

where
    A: Allocator + Clone,

{
    Occupied(OccupiedEntry<'a, T, A>),
    Vacant(VacantEntry<'a, T, A>),
}

🔬This is a nightly-only experimental API. (btree_set_entry #133549)

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 BTreeSet.

§Examples

#![feature(btree_set_entry)]

use std::collections::btree_set::BTreeSet;

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

// Existing value (insert)
let entry = set.entry("a");
let _raw_o = 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 BTreeSet: {:?}", set);
assert!(set.iter().eq(&["a", "b", "c", "d", "e"]));

§

🔬This is a nightly-only experimental API. (btree_set_entry #133549)

An occupied entry.

§Examples

#![feature(btree_set_entry)]

use std::collections::btree_set::{Entry, BTreeSet};

let mut set = BTreeSet::from(["a", "b"]);

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

§

🔬This is a nightly-only experimental API. (btree_set_entry #133549)

A vacant entry.

§Examples

#![feature(btree_set_entry)]

use std::collections::btree_set::{Entry, BTreeSet};

let mut set = BTreeSet::new();

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

Source§

Source

🔬This is a nightly-only experimental API. (btree_set_entry #133549)

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

§Examples
#![feature(btree_set_entry)]

use std::collections::BTreeSet;

let mut set = BTreeSet::new();
let entry = set.entry("horseyland").insert();

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

Source

🔬This is a nightly-only experimental API. (btree_set_entry #133549)

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

§Examples
#![feature(btree_set_entry)]

use std::collections::BTreeSet;

let mut set = BTreeSet::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

🔬This is a nightly-only experimental API. (btree_set_entry #133549)

Returns a reference to this entry’s value.

§Examples
#![feature(btree_set_entry)]

use std::collections::BTreeSet;

let mut set = BTreeSet::new();
set.entry("poneyland").or_insert();

// existing key
assert_eq!(set.entry("poneyland").get(), &"poneyland");
// nonexistent key
assert_eq!(set.entry("horseland").get(), &"horseland");