Enum xmlrpc::Value [−][src]
pub enum Value {
Int(i32),
Int64(i64),
Bool(bool),
String(String),
Double(f64),
DateTime(DateTime),
Base64(Vec<u8>),
Struct(BTreeMap<String, Value>),
Array(Vec<Value>),
Nil,
}
Expand description
The possible XML-RPC values.
Nested values can be accessed by using get
method and Rust’s square-bracket
indexing operator.
A string index can be used to access a value in a Struct
, and a usize
index can be used to
access an element of an Array
.
Examples
let nothing = Value::Nil;
let person = Value::Struct(vec![
("name".to_string(), Value::from("John Doe")),
("age".to_string(), Value::from(37)),
("children".to_string(), Value::Array(vec![
Value::from("Mark"),
Value::from("Jennyfer")
])),
].into_iter().collect());
// get
assert_eq!(nothing.get("name"), None);
assert_eq!(person.get("name"), Some(&Value::from("John Doe")));
assert_eq!(person.get("SSN"), None);
// index
assert_eq!(nothing["name"], Value::Nil);
assert_eq!(person["name"], Value::from("John Doe"));
assert_eq!(person["age"], Value::Int(37));
assert_eq!(person["SSN"], Value::Nil);
assert_eq!(person["children"][0], Value::from("Mark"));
assert_eq!(person["children"][0]["age"], Value::Nil);
assert_eq!(person["children"][2], Value::Nil);
// extract values
assert_eq!(person["name"].as_str(), Some("John Doe"));
assert_eq!(person["age"].as_i32(), Some(37));
assert_eq!(person["age"].as_bool(), None);
assert_eq!(person["children"].as_array().unwrap().len(), 2);
Variants
Int(i32)
A 32-bit signed integer (<i4>
or <int>
).
Tuple Fields of Int
0: i32
Int64(i64)
A 64-bit signed integer (<i8>
).
This is an XMLRPC extension and may not be supported by all clients / servers.
Tuple Fields of Int64
0: i64
Bool(bool)
A boolean value (<boolean>
, 0 == false
, 1 == true
).
Tuple Fields of Bool
0: bool
String(String)
A string (<string>
).
Tuple Fields of String
0: String
Double(f64)
A double-precision IEEE 754 floating point number (<double>
).
Tuple Fields of Double
0: f64
DateTime(DateTime)
An ISO 8601 formatted date/time value (<dateTime.iso8601>
).
Note that ISO 8601 is highly ambiguous and allows incomplete date-time specifications. For
example, servers will frequently leave out timezone information, in which case the client
must know which timezone is used by the server. For this reason, the contained DateTime
struct only contains the raw fields specified by the server, without any real date/time
functionality like what’s offered by the chrono
crate.
To make matters worse, some clients don’t seem to support time zone information in datetime values. To ensure compatiblity, the xmlrpc crate will try to format datetime values like the example given in the specification if the timezone offset is zero.
Recommendation: Avoid DateTime
if possible. A date and time can be specified more
precisely by formatting it using RFC 3339 and putting it in a String
.
Tuple Fields of DateTime
0: DateTime
Base64-encoded binary data (<base64>
).
A mapping of named values (<struct>
).
A list of arbitrary (heterogeneous) values (<array>
).
The empty (Unit) value (<nil/>
).
This is an XMLRPC extension and may not be supported by all clients / servers.
Implementations
Formats this Value
as an XML <value>
element.
Errors
Any error reported by the writer will be propagated to the caller.
Returns an inner struct or array value indexed by index
.
Returns None
if the member doesn’t exist or self
is neither a struct nor an array.
You can also use Rust’s square-bracket indexing syntax to perform this operation if you want
a default value instead of an Option
. Refer to the top-level examples for
details.
If the Value
is a normal integer (Value::Int
), returns associated value. Returns None
otherwise.
In particular, None
is also returned if self
is a Value::Int64
. Use as_i64
to
handle this case.
If the Value
is an integer, returns associated value. Returns None
otherwise.
This works with both Value::Int
and Value::Int64
.
If the Value
is a boolean, returns associated value. Returns None
otherwise.
If the Value
is a string, returns associated value. Returns None
otherwise.
If the Value
is a floating point number, returns associated value. Returns None
otherwise.
If the Value
is a date/time, returns associated value. Returns None
otherwise.
If the Value
is base64 binary data, returns associated value. Returns None
otherwise.
If the Value
is a struct, returns associated map. Returns None
otherwise.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Value
impl UnwindSafe for Value
Blanket Implementations
Mutably borrows from an owned value. Read more
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more