diff options
Diffstat (limited to 'src/builder.rs')
-rw-r--r-- | src/builder.rs | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/builder.rs b/src/builder.rs index bb88f44..65f49ae 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -1,5 +1,6 @@ +use linked_hash_map::LinkedHashMap; +use std::iter::IntoIterator; use std::str::FromStr; -use std::{collections::HashMap, iter::IntoIterator}; use crate::error::Result; use crate::source::AsyncSource; @@ -87,8 +88,8 @@ use crate::{config::Config, path::Expression, source::Source, value::Value}; /// ``` #[derive(Debug, Clone, Default)] pub struct ConfigBuilder<St: BuilderState> { - defaults: HashMap<Expression, Value>, - overrides: HashMap<Expression, Value>, + defaults: LinkedHashMap<Expression, Value>, + overrides: LinkedHashMap<Expression, Value>, state: St, } @@ -120,8 +121,8 @@ pub struct DefaultState { /// Refer to [`ConfigBuilder`] for similar API sample usage or to the examples folder of the crate, where such a source is implemented. #[derive(Debug, Clone, Default)] pub struct AsyncConfigBuilder { - defaults: HashMap<Expression, Value>, - overrides: HashMap<Expression, Value>, + defaults: LinkedHashMap<Expression, Value>, + overrides: LinkedHashMap<Expression, Value>, sources: Vec<SourceType>, } @@ -244,11 +245,11 @@ impl ConfigBuilder<DefaultState> { } fn build_internal( - defaults: HashMap<Expression, Value>, - overrides: HashMap<Expression, Value>, + defaults: LinkedHashMap<Expression, Value>, + overrides: LinkedHashMap<Expression, Value>, sources: &[Box<dyn Source + Send + Sync>], ) -> Result<Config> { - let mut cache: Value = HashMap::<String, Value>::new().into(); + let mut cache: Value = LinkedHashMap::<String, Value>::new().into(); // Add defaults for (key, val) in defaults.into_iter() { @@ -322,11 +323,11 @@ impl ConfigBuilder<AsyncState> { } async fn build_internal( - defaults: HashMap<Expression, Value>, - overrides: HashMap<Expression, Value>, + defaults: LinkedHashMap<Expression, Value>, + overrides: LinkedHashMap<Expression, Value>, sources: &[SourceType], ) -> Result<Config> { - let mut cache: Value = HashMap::<String, Value>::new().into(); + let mut cache: Value = LinkedHashMap::<String, Value>::new().into(); // Add defaults for (key, val) in defaults.into_iter() { |