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);
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);
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.
If serde_json’s “preserve_order” is enabled, .remove()
is
equivalent to .swap_remove()
, replacing this
entry’s position with the last element. If you need to preserve the
relative order of the keys in the map, use
.shift_remove()
instead.
§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!(),
}
sourcepub fn swap_remove(self) -> Value
pub fn swap_remove(self) -> Value
Takes the value of the entry out of the map, and returns it.
Like Vec::swap_remove
, the entry is removed by swapping it with the
last element of the map and popping it off. This perturbs the position
of what used to be the last element!
sourcepub fn shift_remove(self) -> Value
pub fn shift_remove(self) -> Value
Takes the value of the entry out of the map, and returns it.
Like Vec::remove
, the entry is removed by shifting all of the
elements that follow it, preserving their relative order. This perturbs
the index of all of those elements!
sourcepub fn remove_entry(self) -> (String, Value)
pub fn remove_entry(self) -> (String, Value)
Removes the entry from the map, returning the stored key and value.
If serde_json’s “preserve_order” is enabled, .remove_entry()
is
equivalent to .swap_remove_entry()
,
replacing this entry’s position with the last element. If you need to
preserve the relative order of the keys in the map, use
.shift_remove_entry()
instead.
§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) => {
let (key, value) = occupied.remove_entry();
assert_eq!(key, "serde");
assert_eq!(value, 12);
}
Entry::Vacant(_) => unimplemented!(),
}
sourcepub fn swap_remove_entry(self) -> (String, Value)
pub fn swap_remove_entry(self) -> (String, Value)
Removes the entry from the map, returning the stored key and value.
Like Vec::swap_remove
, the entry is removed by swapping it with the
last element of the map and popping it off. This perturbs the position
of what used to be the last element!
sourcepub fn shift_remove_entry(self) -> (String, Value)
pub fn shift_remove_entry(self) -> (String, Value)
Removes the entry from the map, returning the stored key and value.
Like Vec::remove
, the entry is removed by shifting all of the
elements that follow it, preserving their relative order. This perturbs
the index of all of those elements!