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()][Self::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()][Self::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 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()][Self::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()][Self::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!(),
}

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.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 32 bytes