[−][src]Struct hocon::HoconLoader
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
Error::Parse
if the document is invalid
Additional errors in strict mode
Error::IncludeNotAllowedFromStr
if there is an include in the string
pub fn load_file<P: AsRef<Path>>(&self, path: P) -> Result<Self, Error>
[src]
Load the HOCON configuration file containing an Hocon
document
Errors
Error::File
if there was an error reading the file contentError::Parse
if the document is invalid
Additional errors in strict mode
Error::TooManyIncludes
if there are too many included files within included files. The limit can be changed withmax_include_depth
pub fn hocon(self) -> Result<Hocon, Error>
[src]
Load the documents as HOCON
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
pub fn resolve<'de, T>(self) -> Result<T, Error> where
T: Deserialize<'de>,
[src]
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
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
impl Clone for HoconLoader
[src]
fn clone(&self) -> HoconLoader
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,