[][src]Struct hocon::HoconLoader

pub struct HoconLoader { /* fields omitted */ }

Helper to load an HOCON file. This is used to set up the HOCON loader's option, like strict mode, disabling system environment, and to buffer several documents.

Strict mode

If strict mode is enabled with strict(), loading a document will return the first error encountered. Otherwise, most errors will be wrapped in a Hocon::BadValue.

Usage


let mut loader = HoconLoader::new()         // Creating new loader with default configuration
    .no_system()                            // Disable substituting from system environment
    .no_url_include();                      // Disable including files from URLs

let default_values = r#"{ a = 7 }"#;
loader = loader.load_str(default_values)?   // Load values from a string
    .load_file("tests/data/basic.conf")?    // Load first file
    .load_file("tests/data/test01.conf")?;  // Load another file

let hocon = loader.hocon()?;                // Create the Hocon document from the loaded sources

Implementations

impl HoconLoader[src]

pub fn new() -> Self[src]

New HoconLoader with default configuration

pub fn no_system(&self) -> Self[src]

Disable System environment substitutions

Example HOCON document

"system" : {
    "home"  : ${HOME},
    "pwd"   : ${PWD},
    "shell" : ${SHELL},
    "lang"  : ${LANG},
}

with system:

assert_eq!(
    HoconLoader::new().load_str(example)?.hocon()?["system"]["shell"],
    Hocon::String(String::from("/bin/bash"))
);

without system:

assert_eq!(
    HoconLoader::new().no_system().load_str(example)?.hocon()?["system"]["shell"],
    Hocon::BadValue(Error::KeyNotFound { key: String::from("SHELL") })
);

pub fn no_url_include(&self) -> Self[src]

Disable loading included files from external urls.

Example HOCON document

include url("https://raw.githubusercontent.com/mockersf/hocon.rs/master/tests/data/basic.conf")

with url include:

assert_eq!(
    HoconLoader::new().load_file("tests/data/include_url.conf")?.hocon()?["d"],
    Hocon::Boolean(true)
);

without url include:

assert_eq!(
    HoconLoader::new().no_url_include().load_file("tests/data/include_url.conf")?.hocon()?["d"],
    Hocon::BadValue(Error::MissingKey)
);

Feature

This method depends on feature url-support

pub fn strict(&self) -> Self[src]

Sets the HOCON loader to return the first Error encoutered instead of wrapping it in a Hocon::BadValue and continuing parsing

Example HOCON document

{
    a = ${b}
}

in permissive mode:

assert_eq!(
    HoconLoader::new().load_str(example)?.hocon()?["a"],
    Hocon::BadValue(Error::KeyNotFound { key: String::from("b") })
);

in strict mode:

assert_eq!(
    HoconLoader::new().strict().load_str(example)?.hocon(),
    Err(Error::KeyNotFound { key: String::from("b") })
);

pub fn max_include_depth(&self, new_max_depth: u8) -> Self[src]

Set a new maximum include depth, by default 10

pub fn load_str(self, s: &str) -> Result<Self, Error>[src]

Load a string containing an Hocon document. Includes are not supported when loading from a string

Errors

Additional errors in strict mode

pub fn load_file<P: AsRef<Path>>(&self, path: P) -> Result<Self, Error>[src]

Load the HOCON configuration file containing an Hocon document

Errors

Additional errors in strict mode

pub fn hocon(self) -> Result<Hocon, Error>[src]

Load the documents as HOCON

Errors in strict mode

pub fn resolve<'de, T>(self) -> Result<T, Error> where
    T: Deserialize<'de>, 
[src]

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

impl Clone for HoconLoader[src]

impl Debug for HoconLoader[src]

impl Default for HoconLoader[src]

Auto Trait Implementations

impl RefUnwindSafe for HoconLoader

impl Send for HoconLoader

impl Sync for HoconLoader

impl Unpin for HoconLoader

impl UnwindSafe for HoconLoader

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,