macro_rules! value {
(null) => { ... };
(true) => { ... };
(false) => { ... };
([]) => { ... };
([ $($elem:tt),* $(,)? ]) => { ... };
({}) => { ... };
({ $($key:tt : $value:tt),* $(,)? }) => { ... };
(( $expr:expr )) => { ... };
($other:expr) => { ... };
}Expand description
Creates a Value from a JSON-like syntax.
§Examples
use facet_value::{Value, value};
// Null
let v = value!(null);
assert!(v.is_null());
// Booleans
let v = value!(true);
assert_eq!(v.as_bool(), Some(true));
// Numbers
let v = value!(42);
assert_eq!(v.as_number().unwrap().to_i64(), Some(42));
// Strings
let v = value!("hello");
assert_eq!(v.as_string().unwrap().as_str(), "hello");
// Arrays
let v = value!([1, 2, 3]);
assert_eq!(v.as_array().unwrap().len(), 3);
// Objects
let v = value!({
"name": "Alice",
"age": 30,
"active": true
});
assert_eq!(v.as_object().unwrap().get("name").unwrap().as_string().unwrap().as_str(), "Alice");
// Nested structures
let v = value!({
"users": [
{ "name": "Alice", "age": 30 },
{ "name": "Bob", "age": 25 }
],
"count": 2
});§Variable interpolation
You can interpolate variables using parentheses:
use facet_value::{Value, value};
let name = "Alice";
let age = 30;
let v = value!({
"name": (name),
"age": (age)
});