All Versions
17
Latest Version
Avg Release Cycle
115 days
Latest Release
100 days ago
Changelog History
Page 2
Changelog History
Page 2
-
v0.7.0 Changes
August 05, 2017Fix conflict with
serde_yaml
. #39Implement
Source
forConfig
.Implement
serde::de::Deserializer
forConfig
.my_config.deserialize
may now be called as eitherDeserialize::deserialize(my_config)
ormy_config.try_into()
.Remove
ConfigResult
. The builder pattern requires either.try_into
as the final step or the initialConfig::new()
to be bound to a slot. Errors must also be handled on each call instead of at the end of the chain.let mut c = Config::new(); c .merge(File::with_name("Settings")).unwrap() .merge(Environment::with_prefix("APP")).unwrap();
let c = Config::new() .merge(File::with_name("Settings")).unwrap() .merge(Environment::with_prefix("APP")).unwrap() // LLVM should be smart enough to remove the actual clone operation // as you are cloning a temporary that is dropped at the same time .clone();
let mut s: Settings = Config::new() .merge(File::with_name("Settings")).unwrap() .merge(Environment::with_prefix("APP")).unwrap() .try_into();
-
v0.6.0 Changes
June 23, 2017Implement
Source
forVec<T: Source>
andVec<Box<Source>>
Config::new() .merge(vec![ File::with_name("config/default"), File::with_name(&format!("config/{}", run_mode)), ])
Implement
From<&Path>
andFrom<PathBuf>
forFile
Remove
namespace
option for FileAdd builder pattern to condense configuration
Config::new() .merge(File::with_name("Settings")) .merge(Environment::with_prefix("APP")) .unwrap()
- Parsing errors even for non required files – [@Anthony25] ( #33 )
-
v0.5.1 Changes
June 16, 2017- Added config category to Cargo.toml
-
v0.5.0 Changes
June 16, 2017config.get
has been changed to take a type parameter and to deserialize into that type using serde. Old behavior (get a value variant) can be used by passingconfig::Value
as the type parameter:my_config.get::<config::Value>("..")
. Some great help here from @impowski in #25.- Propagate parse and type errors through the deep merge (remembering filename, line, etc.)
- Remove directory traversal on
File
. This is likely temporary. I do want this behavior but I can see how it should be optional. See #35 - Add
File::with_name
to get automatic file format detection instead of manualFileFormat::*
– @JordiPolo - Case normalization #26
- Remove many possible panics #8
my_config.refresh()
will do a full re-read from the source so live configuration is possible with some work to watch the file
-
v0.4.0 Changes
February 12, 2017- Remove global (
config::get
) API — It's now required to create a local configuration instance withconfig::Config::new()
first.
If you'd like to have a global configuration instance, use
lazy_static!
as follows:use std::sync::RwLock; use config::Config; lazy_static! { static ref CONFIG: RwLock<Config> = Default::default(); }
- Remove global (
-
v0.3.0 Changes
February 08, 2017- YAML from @tmccombs
- Nested field retrieval
- Deep merging of sources (was shallow)
config::File::from_str
to parse and merge a file from a string- Support for retrieval of maps and slices —
config::get_table
andconfig::get_array
-
v0.2.0 Changes
January 29, 2017🎉 Initial release.