pub enum Value {
Scalar(String),
Array(Vec<Value>),
Object(IndexMap<String, Value>),
}Expand description
A node in the structprop value tree produced by parse().
The tree maps directly onto structprop’s three syntactic forms:
| Structprop syntax | Variant |
|---|---|
key = value | Value::Scalar |
key = { a b c } | Value::Array of Value::Scalars |
key = { { k = v } { k = v } } | Value::Array of Value::Objects |
key { … } | Value::Object |
Scalar strings are stored verbatim (no coercion at parse time); numeric
or boolean coercion is performed lazily via the Value::as_bool,
Value::as_i64, and Value::as_f64 helpers. Duplicate keys within
any object block are detected and rejected during parsing.
Variants§
Scalar(String)
A bare or quoted string token, stored as-is (no coercion applied).
Use Value::as_bool, Value::as_i64, or Value::as_f64 to
attempt type coercion, or Value::is_null to test for null.
Array(Vec<Value>)
An ordered list of values, corresponding to key = { … } syntax.
Array items may be Value::Scalars (bare terms) or
Value::Objects (written as { key = val … } inline sub-objects).
Duplicate keys within a sub-object are rejected at parse time.
Object(IndexMap<String, Value>)
An ordered map from string keys to values, corresponding to either a
key { … } block or the implicit top-level document object.
Key insertion order is preserved via IndexMap.
Implementations§
Source§impl Value
impl Value
Sourcepub fn as_bool(&self) -> Option<bool>
pub fn as_bool(&self) -> Option<bool>
Try to interpret this Value::Scalar as a bool.
Returns Some(true) for the literal string "true", Some(false) for
"false", and None for any other value or non-scalar variant.
This mirrors the Python implementation’s json.loads coercion.
Sourcepub fn as_i64(&self) -> Option<i64>
pub fn as_i64(&self) -> Option<i64>
Try to interpret this Value::Scalar as an i64.
Returns Some(n) if the string parses as a signed 64-bit integer, or
None otherwise.
Sourcepub fn as_f64(&self) -> Option<f64>
pub fn as_f64(&self) -> Option<f64>
Try to interpret this Value::Scalar as an f64.
Returns Some(n) if the string parses as a 64-bit float, or None
otherwise.
Sourcepub fn is_null(&self) -> bool
pub fn is_null(&self) -> bool
Returns true if this value is the scalar string "null".
Used by the deserializer to map structprop’s null token to
Option::None.
Sourcepub fn as_str(&self) -> Option<&str>
pub fn as_str(&self) -> Option<&str>
Return the inner string of a Value::Scalar, or None for other
variants.
This complements Value::as_bool, Value::as_i64, and
Value::as_f64 for cases where the raw string value is needed.
§Examples
use serde_structprop::parse::{parse, Value};
let v = parse("greeting = hello\n").unwrap();
if let Value::Object(map) = v {
assert_eq!(map["greeting"].as_str(), Some("hello"));
}