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 sourcesImplementations§
Source§impl HoconLoader
impl HoconLoader
Sourcepub fn no_system(&self) -> Self
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") })
);Sourcepub fn no_url_include(&self) -> Self
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
Sourcepub fn strict(&self) -> Self
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") })
);Sourcepub fn max_include_depth(&self, new_max_depth: u8) -> Self
pub fn max_include_depth(&self, new_max_depth: u8) -> Self
Set a new maximum include depth, by default 10
Sourcepub fn load_str(self, s: &str) -> Result<Self, Error>
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
Error::Parseif the document is invalid
§Additional errors in strict mode
Error::IncludeNotAllowedFromStrif there is an include in the string
Sourcepub fn load_file<P: AsRef<Path>>(&self, path: P) -> Result<Self, Error>
pub fn load_file<P: AsRef<Path>>(&self, path: P) -> Result<Self, Error>
Load the HOCON configuration file containing an Hocon document
§Errors
Error::Fileif there was an error reading the file contentError::Parseif the document is invalid
§Additional errors in strict mode
Error::TooManyIncludesif there are too many included files within included files. The limit can be changed withmax_include_depth
Sourcepub fn hocon(self) -> Result<Hocon, Error>
pub fn hocon(self) -> Result<Hocon, Error>
Load the documents as HOCON
§Errors in strict mode
Error::Includeif there was an issue with an included fileError::KeyNotFoundif there is a substitution with a key that is not present in the documentError::DisabledExternalUrlif crate was built without featureurl-supportand aninclude url("...")was found
Sourcepub fn resolve<'de, T>(self) -> Result<T, Error>where
T: Deserialize<'de>,
pub fn resolve<'de, T>(self) -> Result<T, Error>where
T: Deserialize<'de>,
Deserialize the loaded documents to the target type
§Errors
Error::Deserializationif there was a serde error during deserialization (missing required field, type issue, …)
§Additional errors in strict mode
Error::Includeif there was an issue with an included fileError::KeyNotFoundif there is a substitution with a key that is not present in the documentError::DisabledExternalUrlif crate was built without featureurl-supportand aninclude url("...")was found
Trait Implementations§
Source§impl Clone for HoconLoader
impl Clone for HoconLoader
Source§fn clone(&self) -> HoconLoader
fn clone(&self) -> HoconLoader
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more