summaryrefslogtreecommitdiffstats
path: root/src/config.rs
AgeCommit message (Collapse)Author
2022-01-29use 'Self' to refer to own typeDaniel Eades
2021-12-29use implicit iter loopsDaniel Eades
2021-12-29de-glob importsDaniel Eades
2021-11-23rename try_into to try_deserialize to avoid confusionConrad Ludgate
2021-08-15Rename MapImpl to MapDavid Orchard
2021-08-15Move order preservation under a feature gateDavid Orchard
2021-08-15Use LinkedHashMap in place of HashMapDavid Orchard
2021-06-26Reimplement the Config building mechanismRadosław Kot
This patch rewrites the Config building mechanism using special objects for tracking the config building state. Transitions between states are done on the fly as required. This is required so that the async sources can be stored inside the configuration building objects, while keeping out the expenses in the non-async case, so a user of the crate has only to pay for what they are using (no async means no overhead for that). Signed-off-by: Matthias Beyer <mail@beyermatthias.de> Reviewed-by: Matthias Beyer <mail@beyermatthias.de>
2021-05-08Use ConfigBuilder in env.rs testsRadosław Kot
2021-05-08Modify tests to use both ConfigBuilder and ConfigRadosław Kot
2021-05-08Add ConfigBuilderRadosław Kot
2021-04-09Ensure order in the galaxy... I mean the importsMatthias Beyer
This patch sorts the imports: 1. std imports 2. external crate imports 3. own module imports In three blocks, each alphabetically (with is also enforced by rustfmt). As well as it prefixes the imports of own modules with crate:: This is just a quality-of-life patch :-) Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-04-09Remove unused importsMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-04-01Remove ConfigKind typeMatthias Beyer
This patch removes the ConfigKind::Frozen mechansim, which wasn't exported through the public interface at all. Because the ::Frozen variant was removed, the ConfigKind::Mutable variant is the only one remaining and because the ConfigKind type isn't exported in the API as well, we can move the variant members to the Config struct itself. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-03-31Fix: Add missing Config::freeze() functionMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-03-28Rename get_str() → get_string() to match returned typeCaleb Maclennan
2021-03-26Remove Config::new()Matthias Beyer
Removes the ::new() constructor, because Config::default() does the same. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-03-19Add doc: Config::set_default()Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-03-19Add doc: Config:set()Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-03-17Merge pull request #172 from matthiasbeyer/add-setterMatthias Beyer
Add setter for setting config value once
2021-03-17Add a Config::set_once() function to set a value once (and let ↵Matthias Beyer
Config::merge() overwrite it later Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-03-17Add Config::with_merged()Matthias Beyer
This patch adds a builder-pattern version of Config::merge(), which can be used for method-chain-building Config objects. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-10-01Run cargo-fmtMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2020-03-14General upgrade for clippy fix and remove of deprecated methods for errorsFederico Pasqua
2019-12-07Remove automatic lowercaseRyan Leckey
2019-05-09Remove ValueWithKey structGuillem Nieto
While using this library, I end up having lifetime issues with `Config::get`. I've seen that current implementation forces the calleer to match `key` lifetime to the output of the function. My use case is, under some circumstances, return a suffixed version of the config key. Something similar to: ``` if some_condition == true { let key_name = format!("{}_suffix", key); self.config.get(&key_name) } else { self.config.get(key) } ``` This code is noy compiling for me due to conflicting lifetimes. To avoid this, I've started looking to the code and I've found that `key` needed this lifetime because of `ValueWithKey`. The purpouse of this struct seems to be add more information to the errors that are returned to the user. To mitigate this lifetime coupling I've: - Mapped the error on `Config::get` to include the originating key of the current error - Remove all the code related with `ValueWithKey`
2019-05-09Remove try_defaults_from and set_defaults (for now) as '#[serde(default)]' ↵Ryan Leckey
works thanks to #106
2019-04-08Add missing doctyranron
2019-04-08Fix annoying 'invalid type: unit value, expected struct Settings' errortyranron
2019-04-08Bootstrap solutiontyranron
2018-07-02Run rustfmt (nightly)Ryan Leckey
2018-04-06Add config serialize abilityXX
2017-08-05Fix tests and put back .deserialize as deprecated0.7.0Ryan Leckey
2017-07-30Impl Deserializer for Config (to forward Value)Ryan Leckey
2017-07-30Impl Config for Source to allow merging whole configs; closes #28Ryan Leckey
2017-07-30Remove ConfigResult; close #36Ryan Leckey
2017-06-23Clean up ConfigResult type. Make it more ergonomic to use.Ryan Leckey
2017-06-22Implement Source for Vec<T: Source> and From<Path> for FileRyan Leckey
2017-06-22Add builder API to ConfigRyan Leckey
2017-06-16Fix a couple issues, mainly with env sourceRyan Leckey
2017-06-13Ensure config keys are case insensitiveRyan Leckey
2017-06-13Add more tests on filesRyan Leckey
2017-06-13:shirt: Fix clippy warningsRyan Leckey
2017-06-03Add set and set_default (and deep merging)Ryan Leckey
2017-06-01Move things around and get some tests in placeRyan Leckey
2017-03-08Initial work on deep serde integrationRyan Leckey
2017-02-12Decorate Box<Source> with Send + SyncRyan Leckey
2017-02-12Remove global APIRyan Leckey
2017-02-11Move to copy API instead of reference; fixes #9Ryan Leckey
2017-02-08Implement 'namespace' on FileRyan Leckey