Skip to main content

Value

Enum Value 

Source
pub enum Value {
    Null,
    Bool(bool),
    Number(Number),
    String(String),
    Array(Vec<Value>),
    Object(Object),
}
Expand description

A JSON document, with every number kept in its lexical form.

Reading one goes through serde_json’s raw value, so a number arrives with the precision the document wrote and the crate imposes no arbitrary_precision feature on anything that depends on it.

Variants§

§

Null

null.

§

Bool(bool)

true or false.

§

Number(Number)

A number.

§

String(String)

A string.

§

Array(Vec<Value>)

An array.

§

Object(Object)

An object.

Implementations§

Source§

impl Value

Source

pub fn get(&self, key: &str) -> Option<&Self>

The member named key, None unless this is an object holding it.

Source

pub const fn as_object(&self) -> Option<&Object>

The object this holds, None for every other kind.

Source

pub fn as_array(&self) -> Option<&[Self]>

The array this holds, None for every other kind.

Source

pub fn as_str(&self) -> Option<&str>

The string this holds, None for every other kind.

Source

pub const fn is_null(&self) -> bool

Whether this is null.

Source

pub fn into_serde_json( self, path: &mut Path, ) -> Result<Value, ValueConversionError>

This document as a serde_json::Value, keeping every number exact.

A number converts only when serde_json writes it back in the text this document carried, so a decimal is never altered on the way out: FHIR regards 0.010 as different from 0.01 (https://hl7.org/fhir/R4/datatypes.html#decimal). A serde_json built with arbitrary_precision keeps every lexical form, and one built without it keeps whole numbers and the decimals f64 writes back unchanged. Object keys stay in the sorted order Object holds them in, which carries no meaning: “the order of properties of an object is not significant in the JSON representation” (https://hl7.org/fhir/R4/json.html).

§Errors

Returns ValueConversionError naming the element path of the first number serde_json would alter or cannot hold.

Source

pub fn to_serde_json( &self, path: &mut Path, ) -> Result<Value, ValueConversionError>

A copy of this document as a serde_json::Value, keeping every number exact.

The document is cloned first, so prefer Value::into_serde_json where the caller owns it. The number rule is the same.

§Errors

Returns ValueConversionError naming the element path of the first number serde_json would alter or cannot hold.

Source

pub fn from_serde_json(value: Value) -> Self

A serde_json::Value as this document.

A number arrives in the text serde_json holds for it, which is the form the document carried when serde_json was built with arbitrary_precision and the f64 rendering of it otherwise. Read a FHIR document whose decimals must stay exact through this crate’s own Value decoder instead; this direction serves the HTTP edge and test fixtures, where the document is already a serde_json::Value.

Trait Implementations§

Source§

impl Clone for Value

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Value

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Value

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Value

Source§

fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for Value

Source§

impl From<i32> for Value

Source§

fn from(value: i32) -> Self

Converts to this type from the input type.
Source§

impl From<u32> for Value

Source§

fn from(value: u32) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for Value

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for Value

Source§

fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error>

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Value

Auto Trait Implementations§

§

impl Freeze for Value

§

impl RefUnwindSafe for Value

§

impl Send for Value

§

impl Sync for Value

§

impl Unpin for Value

§

impl UnsafeUnpin for Value

§

impl UnwindSafe for Value

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.