Enum sea_orm_rocket::figment::value::Value
pub enum Value {
String(Tag, String),
Char(Tag, char),
Bool(Tag, bool),
Num(Tag, Num),
Empty(Tag, Empty),
Dict(Tag, BTreeMap<String, Value, Global>),
Array(Tag, Vec<Value, Global>),
}
Expand description
An enum representing all possible figment value variants.
Note that Value
implements From<T>
for all reasonable T
:
use figment::value::Value;
let v = Value::from("hello");
assert_eq!(v.as_str(), Some("hello"));
Variants
String(Tag, String)
A string.
Char(Tag, char)
A character.
Bool(Tag, bool)
A boolean.
Num(Tag, Num)
A numeric value.
Empty(Tag, Empty)
A value with no value.
Dict(Tag, BTreeMap<String, Value, Global>)
A dictionary: a map from String
to Value
.
Array(Tag, Vec<Value, Global>)
A sequence/array/vector.
Implementations
impl Value
impl Value
pub fn serialize<T>(value: T) -> Result<Value, Error>where
T: Serialize,
pub fn serialize<T>(value: T) -> Result<Value, Error>where
T: Serialize,
Serialize a Value
from any T: Serialize
.
use figment::value::{Value, Empty};
let value = Value::serialize(10i8).unwrap();
assert_eq!(value.to_i128(), Some(10));
let value = Value::serialize(()).unwrap();
assert_eq!(value, Empty::Unit.into());
let value = Value::serialize(vec![4, 5, 6]).unwrap();
assert_eq!(value, vec![4, 5, 6].into());
pub fn deserialize<'de, T>(&self) -> Result<T, Error>where
T: Deserialize<'de>,
pub fn deserialize<'de, T>(&self) -> Result<T, Error>where
T: Deserialize<'de>,
Deserialize self
into any deserializable T
.
use figment::value::Value;
let value = Value::from("hello");
let string: String = value.deserialize().unwrap();
assert_eq!(string, "hello");
pub fn find(self, path: &str) -> Option<Value>
pub fn find(self, path: &str) -> Option<Value>
Looks up and returns the value at path path
, where path
is of the
form a.b.c
where a
, b
, and c
are keys to dictionaries. If the
key is empty, simply returns self
. If the key is not empty and self
or any of the values for non-leaf keys in the path are not dictionaries,
returns None
.
This method consumes self
. See Value::find_ref()
for a
non-consuming variant.
Example
use figment::{value::Value, util::map};
let value = Value::from(map! {
"apple" => map! {
"bat" => map! {
"pie" => 4usize,
},
"cake" => map! {
"pumpkin" => 10usize,
}
}
});
assert!(value.clone().find("apple").is_some());
assert!(value.clone().find("apple.bat").is_some());
assert!(value.clone().find("apple.cake").is_some());
assert_eq!(value.clone().find("apple.bat.pie").unwrap().to_u128(), Some(4));
assert_eq!(value.clone().find("apple.cake.pumpkin").unwrap().to_u128(), Some(10));
assert!(value.clone().find("apple.pie").is_none());
assert!(value.clone().find("pineapple").is_none());
pub fn find_ref(&'a self, path: &str) -> Option<&'a Value>
pub fn find_ref(&'a self, path: &str) -> Option<&'a Value>
Exactly like Value::find()
but does not consume self
,
returning a reference to the found value, if any, instead.
Example
use figment::{value::Value, util::map};
let value = Value::from(map! {
"apple" => map! {
"bat" => map! {
"pie" => 4usize,
},
"cake" => map! {
"pumpkin" => 10usize,
}
}
});
assert!(value.find_ref("apple").is_some());
assert!(value.find_ref("apple.bat").is_some());
assert!(value.find_ref("apple.cake").is_some());
assert_eq!(value.find_ref("apple.bat.pie").unwrap().to_u128(), Some(4));
assert_eq!(value.find_ref("apple.cake.pumpkin").unwrap().to_u128(), Some(10));
assert!(value.find_ref("apple.pie").is_none());
assert!(value.find_ref("pineapple").is_none());
pub fn tag(&self) -> Tag
pub fn tag(&self) -> Tag
Returns the Tag
applied to this value.
use figment::{Figment, Profile, value::Value, util::map};
let map: Value = Figment::from(("key", "value")).extract().unwrap();
let value = map.find_ref("key").expect("value");
assert_eq!(value.as_str(), Some("value"));
assert!(!value.tag().is_default());
assert_eq!(value.tag().profile(), Some(Profile::Global));
let map: Value = Figment::from(("key", map!["key2" => 123])).extract().unwrap();
let value = map.find_ref("key.key2").expect("value");
assert_eq!(value.to_i128(), Some(123));
assert!(!value.tag().is_default());
assert_eq!(value.tag().profile(), Some(Profile::Global));
pub fn as_str(&self) -> Option<&str>
pub fn as_str(&self) -> Option<&str>
Converts self
into a &str
if self
is a Value::String
.
Example
use figment::value::Value;
let value: Value = 123.into();
let converted = value.as_str();
pub fn into_string(self) -> Option<String>
pub fn into_string(self) -> Option<String>
Converts self
into a String
if self
is a Value::String
.
Example
use figment::value::Value;
let value: Value = 123.into();
let converted = value.into_string();
pub fn to_char(&self) -> Option<char>
pub fn to_char(&self) -> Option<char>
Converts self
into a char
if self
is a Value::Char
.
Example
use figment::value::Value;
let value: Value = 123.into();
let converted = value.to_char();
pub fn to_bool(&self) -> Option<bool>
pub fn to_bool(&self) -> Option<bool>
Converts self
into a bool
if self
is a Value::Bool
.
Example
use figment::value::Value;
let value: Value = 123.into();
let converted = value.to_bool();
pub fn to_num(&self) -> Option<Num>
pub fn to_num(&self) -> Option<Num>
Converts self
into a Num
if self
is a Value::Num
.
Example
use figment::value::Value;
let value: Value = 123.into();
let converted = value.to_num();
pub fn to_empty(&self) -> Option<Empty>
pub fn to_empty(&self) -> Option<Empty>
Converts self
into a Empty
if self
is a Value::Empty
.
Example
use figment::value::Value;
let value: Value = 123.into();
let converted = value.to_empty();
pub fn as_dict(&self) -> Option<&BTreeMap<String, Value, Global>>
pub fn as_dict(&self) -> Option<&BTreeMap<String, Value, Global>>
Converts self
into a &Dict
if self
is a Value::Dict
.
Example
use figment::value::Value;
let value: Value = 123.into();
let converted = value.as_dict();
pub fn into_dict(self) -> Option<BTreeMap<String, Value, Global>>
pub fn into_dict(self) -> Option<BTreeMap<String, Value, Global>>
Converts self
into a Dict
if self
is a Value::Dict
.
Example
use figment::value::Value;
let value: Value = 123.into();
let converted = value.into_dict();
pub fn as_array(&self) -> Option<&[Value]>
pub fn as_array(&self) -> Option<&[Value]>
Converts self
into a &[Value]
if self
is a Value::Array
.
Example
use figment::value::Value;
let value: Value = 123.into();
let converted = value.as_array();
pub fn into_array(self) -> Option<Vec<Value, Global>>
pub fn into_array(self) -> Option<Vec<Value, Global>>
Converts self
into a Vec<Value>
if self
is a Value::Array
.
Example
use figment::value::Value;
let value: Value = 123.into();
let converted = value.into_array();
pub fn to_u128(&self) -> Option<u128>
pub fn to_u128(&self) -> Option<u128>
Converts self
into a u128
if self
is an unsigned Value::Num
variant.
Example
use figment::value::Value;
let value: Value = 123u8.into();
let converted = value.to_u128();
assert_eq!(converted, Some(123));
pub fn to_i128(&self) -> Option<i128>
pub fn to_i128(&self) -> Option<i128>
Converts self
into an i128
if self
is an signed Value::Num
variant.
Example
use figment::value::Value;
let value: Value = 123i8.into();
let converted = value.to_i128();
assert_eq!(converted, Some(123));
let value: Value = Value::from(5000i64);
assert_eq!(value.to_i128(), Some(5000i128));
pub fn to_actual(&self) -> Actual
pub fn to_actual(&self) -> Actual
Converts self
into the corresponding Actual
.
See also Num::to_actual()
and Empty::to_actual()
, which are
called internally by this method.
Example
use figment::{value::Value, error::Actual};
assert_eq!(Value::from('a').to_actual(), Actual::Char('a'));
assert_eq!(Value::from(&[1, 2, 3]).to_actual(), Actual::Seq);
impl Value
Marker trait for “magic” values. Primarily for use with [Either
].
Trait Implementations
impl<'de> Deserialize<'de> for Value
impl<'de> Deserialize<'de> for Value
fn deserialize<D>(de: D) -> Result<Value, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(de: D) -> Result<Value, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
impl<'de> Deserializer<'de> for &Value
impl<'de> Deserializer<'de> for &Value
type Error = Error
type Error = Error
fn deserialize_any<V>(self, v: V) -> Result<<V as Visitor<'de>>::Value, Error>where
V: Visitor<'de>,
fn deserialize_any<V>(self, v: V) -> Result<<V as Visitor<'de>>::Value, Error>where
V: Visitor<'de>,
Deserializer
to figure out how to drive the visitor based
on what data type is in the input. Read morefn deserialize_option<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, Error>where
V: Visitor<'de>,
fn deserialize_option<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, Error>where
V: Visitor<'de>,
Deserialize
type is expecting an optional value. Read morefn deserialize_enum<V>(
self,
&'static str,
&'static [&'static str],
v: V
) -> Result<<V as Visitor<'de>>::Value, Error>where
V: Visitor<'de>,
fn deserialize_enum<V>(
self,
&'static str,
&'static [&'static str],
v: V
) -> Result<<V as Visitor<'de>>::Value, Error>where
V: Visitor<'de>,
Deserialize
type is expecting an enum value with a
particular name and possible variants. Read morefn deserialize_newtype_struct<V>(
self,
_name: &'static str,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, Error>where
V: Visitor<'de>,
fn deserialize_newtype_struct<V>(
self,
_name: &'static str,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, Error>where
V: Visitor<'de>,
Deserialize
type is expecting a newtype struct with a
particular name. Read morefn deserialize_bool<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_bool<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a bool
value.fn deserialize_u8<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_u8<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a u8
value.fn deserialize_u16<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_u16<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a u16
value.fn deserialize_u32<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_u32<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a u32
value.fn deserialize_u64<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_u64<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a u64
value.fn deserialize_i8<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_i8<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting an i8
value.fn deserialize_i16<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_i16<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting an i16
value.fn deserialize_i32<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_i32<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting an i32
value.fn deserialize_i64<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_i64<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting an i64
value.fn deserialize_f32<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_f32<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a f32
value.fn deserialize_f64<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_f64<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a f64
value.fn deserialize_char<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_char<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a char
value.fn deserialize_str<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_str<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a string value and does
not benefit from taking ownership of buffered data owned by the
Deserializer
. Read morefn deserialize_string<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_string<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a string value and would
benefit from taking ownership of buffered data owned by the
Deserializer
. Read morefn deserialize_seq<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_seq<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a sequence of values.fn deserialize_bytes<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_bytes<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a byte array and does not
benefit from taking ownership of buffered data owned by the
Deserializer
. Read morefn deserialize_byte_buf<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_byte_buf<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a byte array and would
benefit from taking ownership of buffered data owned by the
Deserializer
. Read morefn deserialize_map<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_map<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a map of key-value pairs.fn deserialize_unit<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_unit<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a unit value.fn deserialize_struct<V>(
self,
name: &'static str,
fields: &'static [&'static str],
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_struct<V>(
self,
name: &'static str,
fields: &'static [&'static str],
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a struct with a particular
name and fields. Read morefn deserialize_ignored_any<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_ignored_any<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type needs to deserialize a value whose type
doesn’t matter because it is ignored. Read morefn deserialize_unit_struct<V>(
self,
name: &'static str,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_unit_struct<V>(
self,
name: &'static str,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a unit struct with a
particular name. Read morefn deserialize_tuple_struct<V>(
self,
name: &'static str,
len: usize,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_tuple_struct<V>(
self,
name: &'static str,
len: usize,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a tuple struct with a
particular name and number of fields. Read morefn deserialize_tuple<V>(
self,
len: usize,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_tuple<V>(
self,
len: usize,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting a sequence of values and
knows how many values there are without looking at the serialized data. Read morefn deserialize_identifier<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
fn deserialize_identifier<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, <&Value as Deserializer<'de>>::Error>where
V: Visitor<'de>,
Deserialize
type is expecting the name of a struct
field or the discriminant of an enum variant. Read moresourcefn deserialize_i128<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, Self::Error>where
V: Visitor<'de>,
fn deserialize_i128<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, Self::Error>where
V: Visitor<'de>,
sourcefn deserialize_u128<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, Self::Error>where
V: Visitor<'de>,
fn deserialize_u128<V>(
self,
visitor: V
) -> Result<<V as Visitor<'de>>::Value, Self::Error>where
V: Visitor<'de>,
sourcefn is_human_readable(&self) -> bool
fn is_human_readable(&self) -> bool
Deserialize
implementations should expect to
deserialize their human-readable form. Read moreimpl FromStr for Value
impl FromStr for Value
type Err = Infallible
type Err = Infallible
impl Serialize for Value
impl Serialize for Value
fn serialize<S>(
&self,
ser: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
ser: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
Auto Trait Implementations
impl RefUnwindSafe for Value
impl Send for Value
impl Sync for Value
impl Unpin for Value
impl UnwindSafe for Value
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
fn into_collection<A>(self) -> SmallVec<A>where
A: Array<Item = T>,
fn into_collection<A>(self) -> SmallVec<A>where
A: Array<Item = T>,
self
into a collection.