Enum hocon::Hocon [−][src]
pub enum Hocon {
Real(f64),
Integer(i64),
String(String),
Boolean(bool),
Array(Vec<Hocon>),
Hash(LinkedHashMap<String, Hocon>),
Null,
BadValue(Error),
}
Expand description
An HOCON document
Values can be retrieved as a basic type, with basic cast between some of the value types:
Automatic type conversions.
If the value if not of the expected type, a None
will be returned.
If the value is a Hocon::Hash
, its values can be
accessed by indexing with a str
, as in hash[key]
. If the value is an
Hocon::Array
, its values can be accessed by indexing
with a usize
. An Hocon::Hash
whose keys can be
converted to numeric values ("0"
, "1"
, …) can be indexed with a usize
following
the rules described in
Conversion of numerically-indexed objects to arrays.
Indexing a Hocon
value with a wrong key type, or a type of value that can’t be indexed
will return a Hocon::BadValue
with an error of type
crate::Error::InvalidKey
.
Indexing a Hocon
value with a key that is not present will return a
Hocon::BadValue
with an error of type
crate::Error::MissingKey
.
Values can also be accessed as a Duration
or a size following the rules described in
Units format.
Usage
// Accessing a value of the expected type
assert_eq!(
HoconLoader::new().load_str(r#"{ a: 7 }"#)?.hocon()?["a"].as_i64(),
Some(7)
);
// Accessing a value with automatic conversion
assert_eq!(
HoconLoader::new().load_str(r#"{ a: off }"#)?.hocon()?["a"].as_bool(),
Some(false)
);
// Accessing an Array
assert_eq!(
HoconLoader::new().load_str(r#"{ a: [ first, second ] }"#)?.hocon()?["a"][0].as_string(),
Some(String::from("first"))
);
// Accessing an Hash with a missing key
assert_eq!(
HoconLoader::new().load_str(r#"{ a: 7 }"#)?.hocon()?["b"],
Hocon::BadValue(Error::MissingKey)
);
// Accessing an Hash as if it was an Array
assert_eq!(
HoconLoader::new().load_str(r#"{ a: 7 }"#)?.hocon()?[0],
Hocon::BadValue(Error::InvalidKey)
);
Variants
Real(f64)
A floating value
Tuple Fields of Real
0: f64
Integer(i64)
An integer value
Tuple Fields of Integer
0: i64
String(String)
A string
Tuple Fields of String
0: String
Boolean(bool)
A boolean
Tuple Fields of Boolean
0: bool
An array of Hocon
values
Hash(LinkedHashMap<String, Hocon>)
An HashMap of Hocon
values with keys
Tuple Fields of Hash
0: LinkedHashMap<String, Hocon>
A null value
BadValue(Error)
A BadValue
, marking an error in parsing or a missing value
Tuple Fields of BadValue
0: Error
Implementations
Try to return a value as a size in bytes according to size in bytes format.
Bare numbers are taken to be in bytes already, while strings are parsed as a number plus an optional unit string.
Example
assert_eq!(
HoconLoader::new().load_str(r#"{ size = 1.5KiB }"#)?.hocon()?["size"].as_bytes(),
Some(1536.0)
);
Try to return a value as a duration in milliseconds according to duration format.
Bare numbers are taken to be in bytes already, while strings are parsed as a number plus an optional unit string.
Example
assert_eq!(
HoconLoader::new().load_str(r#"{ duration = 1.5 hour }"#)?
.hocon()?["duration"].as_milliseconds(),
Some(5400000.0)
);
Try to return a value as a duration in nanoseconds according to duration format.
Bare numbers are taken to be in bytes already, while strings are parsed as a number plus an optional unit string.
Example
assert_eq!(
HoconLoader::new().load_str(r#"{ duration = 1.5 hour }"#)?
.hocon()?["duration"].as_nanoseconds(),
Some(5400000000000.0)
);
Try to return a value as a duration in microseconds according to duration format.
Bare numbers are taken to be in bytes already, while strings are parsed as a number plus an optional unit string.
Example
assert_eq!(
HoconLoader::new().load_str(r#"{ duration = 1.5 hour }"#)?
.hocon()?["duration"].as_microseconds(),
Some(5400000000.0)
);
Try to return a value as a duration in seconds according to duration format.
Bare numbers are taken to be in bytes already, while strings are parsed as a number plus an optional unit string.
Example
assert_eq!(
HoconLoader::new().load_str(r#"{ duration = 1.5 hour }"#)?
.hocon()?["duration"].as_seconds(),
Some(5400.0)
);
Try to return a value as a duration in minutes according to duration format.
Bare numbers are taken to be in bytes already, while strings are parsed as a number plus an optional unit string.
Example
assert_eq!(
HoconLoader::new().load_str(r#"{ duration = 1.5 hour }"#)?
.hocon()?["duration"].as_minutes(),
Some(90.0)
);
Try to return a value as a duration in hours according to duration format.
Bare numbers are taken to be in bytes already, while strings are parsed as a number plus an optional unit string.
Example
assert_eq!(
HoconLoader::new().load_str(r#"{ duration = 1.5 hour }"#)?
.hocon()?["duration"].as_hours(),
Some(1.5)
);
Try to return a value as a duration in days according to duration format.
Bare numbers are taken to be in bytes already, while strings are parsed as a number plus an optional unit string.
Example
assert_eq!(
HoconLoader::new().load_str(r#"{ duration = 1.5 hour }"#)?
.hocon()?["duration"].as_days(),
Some(0.0625)
);
Try to return a value as a duration in weeks according to duration format.
Bare numbers are taken to be in bytes already, while strings are parsed as a number plus an optional unit string.
Example
assert_eq!(
HoconLoader::new().load_str(r#"{ duration = 1.5 days }"#)?
.hocon()?["duration"].as_weeks(),
Some(0.21428571428571427)
);
Try to return a value as a duration in months according to duration format.
Bare numbers are taken to be in bytes already, while strings are parsed as a number plus an optional unit string.
Example
assert_eq!(
HoconLoader::new().load_str(r#"{ duration = 1.5 days }"#)?
.hocon()?["duration"].as_months(),
Some(0.05)
);
Try to return a value as a duration in years according to duration format.
Bare numbers are taken to be in bytes already, while strings are parsed as a number plus an optional unit string.
Example
assert_eq!(
HoconLoader::new().load_str(r#"{ duration = 1.5 days }"#)?
.hocon()?["duration"].as_years(),
Some(0.00410958904109589)
);
Try to return a value as a duration according to duration format.
Bare numbers are taken to be in bytes already, while strings are parsed as a number plus an optional unit string.
Example
assert_eq!(
HoconLoader::new().load_str(r#"{ duration = 1.5 hours }"#)?
.hocon()?["duration"].as_duration(),
Some(std::time::Duration::from_secs(5400))
);
Deserialize the loaded documents to the target type
Errors
Error::Deserialization
if there was a serde error during deserialization (missing required field, type issue, …)
Additional errors in strict mode
Error::Include
if there was an issue with an included fileError::KeyNotFound
if there is a substitution with a key that is not present in the documentError::DisabledExternalUrl
if crate was built without featureurl-support
and aninclude url("...")
was found
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Hocon
impl UnwindSafe for Hocon
Blanket Implementations
Mutably borrows from an owned value. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more