Struct HoconLoader

Source
pub struct HoconLoader { /* private fields */ }
Expand description

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§

Source§

impl HoconLoader

Source

pub fn new() -> Self

New HoconLoader with default configuration

Source

pub fn no_system(&self) -> Self

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") })
);
Source

pub fn no_url_include(&self) -> Self

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

Source

pub fn strict(&self) -> Self

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") })
);
Source

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

Set a new maximum include depth, by default 10

Source

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

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

§Errors
§Additional errors in strict mode
Source

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

Load the HOCON configuration file containing an Hocon document

§Errors
§Additional errors in strict mode
Source

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

Load the documents as HOCON

§Errors in strict mode
Source

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

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§

Source§

impl Clone for HoconLoader

Source§

fn clone(&self) -> HoconLoader

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for HoconLoader

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for HoconLoader

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

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

fn in_current_span(self) -> Instrumented<Self>

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

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,