Struct serde_json::map::OccupiedEntry
source · pub struct OccupiedEntry<'a> { /* private fields */ }
Expand description
An occupied Entry. It is part of the Entry
enum.
Implementations§
source§impl<'a> OccupiedEntry<'a>
impl<'a> OccupiedEntry<'a>
sourcepub fn key(&self) -> &String
pub fn key(&self) -> &String
Gets a reference to the key in the entry.
Examples
use serde_json::map::Entry;
let mut map = serde_json::Map::new();
map.insert("serde".to_owned(), json!(12));
match map.entry("serde") {
Entry::Occupied(occupied) => {
assert_eq!(occupied.key(), &"serde");
}
Entry::Vacant(_) => unimplemented!(),
}
sourcepub fn get(&self) -> &Value
pub fn get(&self) -> &Value
Gets a reference to the value in the entry.
Examples
use serde_json::map::Entry;
let mut map = serde_json::Map::new();
map.insert("serde".to_owned(), json!(12));
match map.entry("serde") {
Entry::Occupied(occupied) => {
assert_eq!(occupied.get(), 12);
}
Entry::Vacant(_) => unimplemented!(),
}
sourcepub fn get_mut(&mut self) -> &mut Value
pub fn get_mut(&mut self) -> &mut Value
Gets a mutable reference to the value in the entry.
Examples
use serde_json::map::Entry;
let mut map = serde_json::Map::new();
map.insert("serde".to_owned(), json!([1, 2, 3]));
match map.entry("serde") {
Entry::Occupied(mut occupied) => {
occupied.get_mut().as_array_mut().unwrap().push(json!(4));
}
Entry::Vacant(_) => unimplemented!(),
}
assert_eq!(map["serde"].as_array().unwrap().len(), 4);
Examples found in repository?
src/map.rs (line 614)
608 609 610 611 612 613 614 615 616 617 618 619
pub fn and_modify<F>(self, f: F) -> Self
where
F: FnOnce(&mut Value),
{
match self {
Entry::Occupied(mut entry) => {
f(entry.get_mut());
Entry::Occupied(entry)
}
Entry::Vacant(entry) => Entry::Vacant(entry),
}
}
sourcepub fn into_mut(self) -> &'a mut Value
pub fn into_mut(self) -> &'a mut Value
Converts the entry into a mutable reference to its value.
Examples
use serde_json::map::Entry;
let mut map = serde_json::Map::new();
map.insert("serde".to_owned(), json!([1, 2, 3]));
match map.entry("serde") {
Entry::Occupied(mut occupied) => {
occupied.into_mut().as_array_mut().unwrap().push(json!(4));
}
Entry::Vacant(_) => unimplemented!(),
}
assert_eq!(map["serde"].as_array().unwrap().len(), 4);
Examples found in repository?
src/map.rs (line 559)
556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585
pub fn or_insert(self, default: Value) -> &'a mut Value {
match self {
Entry::Vacant(entry) => entry.insert(default),
Entry::Occupied(entry) => entry.into_mut(),
}
}
/// Ensures a value is in the entry by inserting the result of the default
/// function if empty, and returns a mutable reference to the value in the
/// entry.
///
/// # Examples
///
/// ```
/// # use serde_json::json;
/// #
/// let mut map = serde_json::Map::new();
/// map.entry("serde").or_insert_with(|| json!("hoho"));
///
/// assert_eq!(map["serde"], "hoho".to_owned());
/// ```
pub fn or_insert_with<F>(self, default: F) -> &'a mut Value
where
F: FnOnce() -> Value,
{
match self {
Entry::Vacant(entry) => entry.insert(default()),
Entry::Occupied(entry) => entry.into_mut(),
}
}
sourcepub fn insert(&mut self, value: Value) -> Value
pub fn insert(&mut self, value: Value) -> Value
Sets the value of the entry with the OccupiedEntry
’s key, and returns
the entry’s old value.
Examples
use serde_json::map::Entry;
let mut map = serde_json::Map::new();
map.insert("serde".to_owned(), json!(12));
match map.entry("serde") {
Entry::Occupied(mut occupied) => {
assert_eq!(occupied.insert(json!(13)), 12);
assert_eq!(occupied.get(), 13);
}
Entry::Vacant(_) => unimplemented!(),
}
sourcepub fn remove(self) -> Value
pub fn remove(self) -> Value
Takes the value of the entry out of the map, and returns it.
Examples
use serde_json::map::Entry;
let mut map = serde_json::Map::new();
map.insert("serde".to_owned(), json!(12));
match map.entry("serde") {
Entry::Occupied(occupied) => {
assert_eq!(occupied.remove(), 12);
}
Entry::Vacant(_) => unimplemented!(),
}