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>

source

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!(),
}
source

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!(),
}
source

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);
source

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);
source

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!(),
}
source

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!(),
}
source

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!

source

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!

source

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!(),
}
source

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!

source

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!

Auto Trait Implementations§

§

impl<'a> Freeze for OccupiedEntry<'a>

§

impl<'a> RefUnwindSafe for OccupiedEntry<'a>

§

impl<'a> Send for OccupiedEntry<'a>

§

impl<'a> Sync for OccupiedEntry<'a>

§

impl<'a> Unpin for OccupiedEntry<'a>

§

impl<'a> !UnwindSafe for OccupiedEntry<'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,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

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>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
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>,

source§

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

The type returned in the event of a conversion error.
source§

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

Performs the conversion.