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
Array(Vec<Hocon>)

An array of Hocon values

Tuple Fields of Array

0: Vec<Hocon>

An HashMap of Hocon values with keys

Tuple Fields of Hash

0: LinkedHashMap<String, Hocon>
Null

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 cast a value as a f64 value

Try to cast a value as a i64 value

Try to cast a value as a String value

Try to cast a value as a bool value

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

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

The returned type after indexing.

Performs the indexing (container[index]) operation. Read more

The returned type after indexing.

Performs the indexing (container[index]) operation. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.