value

Macro value 

Source
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)
});