#[non_exhaustive]pub enum Value {
Integer(Integer),
Bytes(Vec<u8>),
Float(f64),
Text(String),
Bool(bool),
Null,
Tag(u64, Box<Value>),
Array(Vec<Value>),
Map(Vec<(Value, Value)>),
}
Expand description
A representation of a dynamic CBOR value that can handled dynamically
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Integer(Integer)
An integer
Bytes(Vec<u8>)
Bytes
Float(f64)
A float
Text(String)
A string
Bool(bool)
A boolean
Null
Null
Tag(u64, Box<Value>)
Tag
Array(Vec<Value>)
An array
Map(Vec<(Value, Value)>)
A map
Implementations§
Source§impl Value
impl Value
Sourcepub fn deserialized<'de, T: Deserialize<'de>>(&self) -> Result<T, Error>
pub fn deserialized<'de, T: Deserialize<'de>>(&self) -> Result<T, Error>
Deserializes the Value
into an object
Source§impl Value
impl Value
Sourcepub fn is_integer(&self) -> bool
pub fn is_integer(&self) -> bool
Returns true if the Value
is an Integer
. Returns false otherwise.
let value = Value::Integer(17.into());
assert!(value.is_integer());
Sourcepub fn as_integer(&self) -> Option<Integer>
pub fn as_integer(&self) -> Option<Integer>
If the Value
is a Integer
, returns a reference to the associated Integer
data.
Returns None otherwise.
let value = Value::Integer(17.into());
// We can read the number
assert_eq!(17, value.as_integer().unwrap().try_into().unwrap());
Sourcepub fn is_bytes(&self) -> bool
pub fn is_bytes(&self) -> bool
Returns true if the Value
is a Bytes
. Returns false otherwise.
let value = Value::Bytes(vec![104, 101, 108, 108, 111]);
assert!(value.is_bytes());
Sourcepub fn as_bytes(&self) -> Option<&Vec<u8>>
pub fn as_bytes(&self) -> Option<&Vec<u8>>
If the Value
is a Bytes
, returns a reference to the associated bytes vector.
Returns None otherwise.
let value = Value::Bytes(vec![104, 101, 108, 108, 111]);
assert_eq!(std::str::from_utf8(value.as_bytes().unwrap()).unwrap(), "hello");
Sourcepub fn as_bytes_mut(&mut self) -> Option<&mut Vec<u8>>
pub fn as_bytes_mut(&mut self) -> Option<&mut Vec<u8>>
If the Value
is a Bytes
, returns a mutable reference to the associated bytes vector.
Returns None otherwise.
let mut value = Value::Bytes(vec![104, 101, 108, 108, 111]);
value.as_bytes_mut().unwrap().clear();
assert_eq!(value, Value::Bytes(vec![]));
Sourcepub fn is_float(&self) -> bool
pub fn is_float(&self) -> bool
Returns true if the Value
is a Float
. Returns false otherwise.
let value = Value::Float(17.0.into());
assert!(value.is_float());
Sourcepub fn as_float(&self) -> Option<f64>
pub fn as_float(&self) -> Option<f64>
If the Value
is a Float
, returns a reference to the associated float data.
Returns None otherwise.
let value = Value::Float(17.0.into());
// We can read the float number
assert_eq!(value.as_float().unwrap(), 17.0_f64);
Sourcepub fn is_text(&self) -> bool
pub fn is_text(&self) -> bool
Returns true if the Value
is a Text
. Returns false otherwise.
let value = Value::Text(String::from("hello"));
assert!(value.is_text());
Sourcepub fn as_text(&self) -> Option<&str>
pub fn as_text(&self) -> Option<&str>
If the Value
is a Text
, returns a reference to the associated String
data.
Returns None otherwise.
let value = Value::Text(String::from("hello"));
// We can read the String
assert_eq!(value.as_text().unwrap(), "hello");
Sourcepub fn as_text_mut(&mut self) -> Option<&mut String>
pub fn as_text_mut(&mut self) -> Option<&mut String>
If the Value
is a Text
, returns a mutable reference to the associated String
data.
Returns None otherwise.
let mut value = Value::Text(String::from("hello"));
value.as_text_mut().unwrap().clear();
assert_eq!(value.as_text().unwrap(), &String::from(""));
Sourcepub fn is_bool(&self) -> bool
pub fn is_bool(&self) -> bool
Returns true if the Value
is a Bool
. Returns false otherwise.
let value = Value::Bool(false);
assert!(value.is_bool());
Sourcepub fn as_bool(&self) -> Option<bool>
pub fn as_bool(&self) -> Option<bool>
If the Value
is a Bool
, returns a copy of the associated boolean value. Returns None
otherwise.
let value = Value::Bool(false);
assert_eq!(value.as_bool().unwrap(), false);
Sourcepub fn is_null(&self) -> bool
pub fn is_null(&self) -> bool
Returns true if the Value
is a Null
. Returns false otherwise.
let value = Value::Null;
assert!(value.is_null());
Sourcepub fn is_tag(&self) -> bool
pub fn is_tag(&self) -> bool
Returns true if the Value
is a Tag
. Returns false otherwise.
let value = Value::Tag(61, Box::from(Value::Null));
assert!(value.is_tag());
Sourcepub fn as_tag(&self) -> Option<(u64, &Value)>
pub fn as_tag(&self) -> Option<(u64, &Value)>
If the Value
is a Tag
, returns the associated tag value and a reference to the tag Value
.
Returns None otherwise.
let value = Value::Tag(61, Box::from(Value::Bytes(vec![104, 101, 108, 108, 111])));
let (tag, data) = value.as_tag().unwrap();
assert_eq!(tag, 61);
assert_eq!(data, &Value::Bytes(vec![104, 101, 108, 108, 111]));
Sourcepub fn as_tag_mut(&mut self) -> Option<(&mut u64, &mut Value)>
pub fn as_tag_mut(&mut self) -> Option<(&mut u64, &mut Value)>
If the Value
is a Tag
, returns the associated tag value and a mutable reference
to the tag Value
. Returns None otherwise.
let mut value = Value::Tag(61, Box::from(Value::Bytes(vec![104, 101, 108, 108, 111])));
let (tag, mut data) = value.as_tag_mut().unwrap();
data.as_bytes_mut().unwrap().clear();
assert_eq!(tag, &61);
assert_eq!(data, &Value::Bytes(vec![]));
Sourcepub fn is_array(&self) -> bool
pub fn is_array(&self) -> bool
Returns true if the Value
is an Array. Returns false otherwise.
let value = Value::Array(
vec![
Value::Text(String::from("foo")),
Value::Text(String::from("bar"))
]
);
assert!(value.is_array());
Sourcepub fn as_array(&self) -> Option<&Vec<Value>>
pub fn as_array(&self) -> Option<&Vec<Value>>
If the Value
is an Array, returns a reference to the associated vector. Returns None
otherwise.
let value = Value::Array(
vec![
Value::Text(String::from("foo")),
Value::Text(String::from("bar"))
]
);
// The length of `value` is 2 elements.
assert_eq!(value.as_array().unwrap().len(), 2);
Sourcepub fn as_array_mut(&mut self) -> Option<&mut Vec<Value>>
pub fn as_array_mut(&mut self) -> Option<&mut Vec<Value>>
If the Value
is an Array, returns a mutable reference to the associated vector.
Returns None otherwise.
let mut value = Value::Array(
vec![
Value::Text(String::from("foo")),
Value::Text(String::from("bar"))
]
);
value.as_array_mut().unwrap().clear();
assert_eq!(value, Value::Array(vec![]));
Sourcepub fn is_map(&self) -> bool
pub fn is_map(&self) -> bool
Returns true if the Value
is a Map. Returns false otherwise.
let value = Value::Map(
vec![
(Value::Text(String::from("foo")), Value::Text(String::from("bar")))
]
);
assert!(value.is_map());
Sourcepub fn as_map(&self) -> Option<&Vec<(Value, Value)>>
pub fn as_map(&self) -> Option<&Vec<(Value, Value)>>
If the Value
is a Map, returns a reference to the associated Map data. Returns None
otherwise.
let value = Value::Map(
vec![
(Value::Text(String::from("foo")), Value::Text(String::from("bar")))
]
);
// The length of data is 1 entry (1 key/value pair).
assert_eq!(value.as_map().unwrap().len(), 1);
// The content of the first element is what we expect
assert_eq!(
value.as_map().unwrap().get(0).unwrap(),
&(Value::Text(String::from("foo")), Value::Text(String::from("bar")))
);
Sourcepub fn as_map_mut(&mut self) -> Option<&mut Vec<(Value, Value)>>
pub fn as_map_mut(&mut self) -> Option<&mut Vec<(Value, Value)>>
If the Value
is a Map, returns a mutable reference to the associated Map Data.
Returns None otherwise.
let mut value = Value::Map(
vec![
(Value::Text(String::from("foo")), Value::Text(String::from("bar")))
]
);
value.as_map_mut().unwrap().clear();
assert_eq!(value, Value::Map(vec![]));
assert_eq!(value.as_map().unwrap().len(), 0);