Skip to content

Commit 09498fc

Browse files
committed
Make ConfigBuilder's method consuming
1 parent 98662dd commit 09498fc

File tree

13 files changed

+124
-131
lines changed

13 files changed

+124
-131
lines changed

src/builder.rs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,10 @@ use crate::{config::Config, error, path::Expression, source::Source, value::Valu
2727
/// # use config::*;
2828
/// # use std::error::Error;
2929
/// # fn main() -> Result<(), Box<dyn Error>> {
30-
/// let mut builder = ConfigBuilder::default();
31-
///
32-
/// builder.set_default("default", "1")?;
33-
/// builder.add_source(File::new("config/settings", FileFormat::Json));
34-
/// builder.set_override("override", "1")?;
30+
/// let mut builder = ConfigBuilder::default()
31+
/// .set_default("default", "1")?
32+
/// .add_source(File::new("config/settings", FileFormat::Json))
33+
/// .set_override("override", "1")?;
3534
///
3635
/// match builder.build() {
3736
/// Ok(config) => {
@@ -45,18 +44,16 @@ use crate::{config::Config, error, path::Expression, source::Source, value::Valu
4544
/// # }
4645
/// ```
4746
///
48-
/// Calls can be chained as well
47+
/// Calls can be not chained as well
4948
/// ```rust
5049
/// # use std::error::Error;
5150
/// # use config::*;
5251
/// # fn main() -> Result<(), Box<dyn Error>> {
5352
/// let mut builder = ConfigBuilder::default();
54-
///
55-
/// builder
56-
/// .set_default("default", "1")?
57-
/// .add_source(File::new("config/settings", FileFormat::Json))
58-
/// .add_source(File::new("config/settings.prod", FileFormat::Json))
59-
/// .set_override("override", "1")?;
53+
/// builder = builder.set_default("default", "1")?;
54+
/// builder = builder.add_source(File::new("config/settings", FileFormat::Json));
55+
/// builder = builder.add_source(File::new("config/settings.prod", FileFormat::Json));
56+
/// builder = builder.set_override("override", "1")?;
6057
/// # Ok(())
6158
/// # }
6259
/// ```
@@ -75,7 +72,7 @@ impl ConfigBuilder {
7572
/// # Errors
7673
///
7774
/// Fails if `Expression::from_str(key)` fails.
78-
pub fn set_default<S, T>(&mut self, key: S, value: T) -> error::Result<&mut ConfigBuilder>
75+
pub fn set_default<S, T>(mut self, key: S, value: T) -> error::Result<ConfigBuilder>
7976
where
8077
S: AsRef<str>,
8178
T: Into<Value>,
@@ -88,7 +85,7 @@ impl ConfigBuilder {
8885
/// Registers new [`Source`] in this builder.
8986
///
9087
/// Calling this method does not invoke any I/O. [`Source`] is only saved in internal register for later use.
91-
pub fn add_source<T>(&mut self, source: T) -> &mut Self
88+
pub fn add_source<T>(mut self, source: T) -> Self
9289
where
9390
T: Source + Send + Sync + 'static,
9491
{
@@ -103,7 +100,7 @@ impl ConfigBuilder {
103100
/// # Errors
104101
///
105102
/// Fails if `Expression::from_str(key)` fails.
106-
pub fn set_override<S, T>(&mut self, key: S, value: T) -> error::Result<&mut ConfigBuilder>
103+
pub fn set_override<S, T>(mut self, key: S, value: T) -> error::Result<ConfigBuilder>
107104
where
108105
S: AsRef<str>,
109106
T: Into<Value>,

tests/datetime.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ use chrono::{DateTime, TimeZone, Utc};
1414
use config::*;
1515

1616
fn make() -> Config {
17-
let mut builder = Config::builder();
18-
19-
builder
17+
Config::builder()
2018
.add_source(File::from_str(
2119
r#"
2220
{
@@ -58,9 +56,9 @@ fn make() -> Config {
5856
)
5957
"#,
6058
FileFormat::Ron,
61-
));
62-
63-
builder.build().unwrap()
59+
))
60+
.build()
61+
.unwrap()
6462
}
6563

6664
#[test]

tests/errors.rs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,17 @@ use std::path::PathBuf;
1010
use config::*;
1111

1212
fn make() -> Config {
13-
let mut c = Config::builder();
14-
c.add_source(File::new("tests/Settings", FileFormat::Toml));
15-
c.build().unwrap()
13+
Config::builder()
14+
.add_source(File::new("tests/Settings", FileFormat::Toml))
15+
.build()
16+
.unwrap()
1617
}
1718

1819
#[test]
1920
fn test_error_parse() {
20-
let mut c = Config::builder();
21-
c.add_source(File::new("tests/Settings-invalid", FileFormat::Toml));
22-
let res = c.build();
21+
let res = Config::builder()
22+
.add_source(File::new("tests/Settings-invalid", FileFormat::Toml))
23+
.build();
2324

2425
let path: PathBuf = ["tests", "Settings-invalid.toml"].iter().collect();
2526

@@ -120,9 +121,13 @@ inner:
120121
test: ABC
121122
"#;
122123

123-
let mut cfg = Config::builder();
124-
cfg.add_source(File::from_str(CFG, FileFormat::Yaml));
125-
let e = cfg.build().unwrap().try_into::<Outer>().unwrap_err();
124+
let e = Config::builder()
125+
.add_source(File::from_str(CFG, FileFormat::Yaml))
126+
.build()
127+
.unwrap()
128+
.try_into::<Outer>()
129+
.unwrap_err();
130+
126131
if let ConfigError::Type {
127132
key: Some(path), ..
128133
} = e

tests/file.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ use config::*;
66

77
#[test]
88
fn test_file_not_required() {
9-
let mut c = Config::builder();
10-
c.add_source(File::new("tests/NoSettings", FileFormat::Yaml).required(false));
11-
let res = c.build();
9+
let res = Config::builder()
10+
.add_source(File::new("tests/NoSettings", FileFormat::Yaml).required(false))
11+
.build();
1212

1313
assert!(res.is_ok());
1414
}
1515

1616
#[test]
1717
fn test_file_required_not_found() {
18-
let mut c = Config::builder();
19-
c.add_source(File::new("tests/NoSettings", FileFormat::Yaml));
20-
let res = c.build();
18+
let res = Config::builder()
19+
.add_source(File::new("tests/NoSettings", FileFormat::Yaml))
20+
.build();
2121

2222
assert!(res.is_err());
2323
assert_eq!(
@@ -28,20 +28,20 @@ fn test_file_required_not_found() {
2828

2929
#[test]
3030
fn test_file_auto() {
31-
let mut builder = Config::builder();
32-
builder.add_source(File::with_name("tests/Settings-production"));
33-
34-
let c = builder.build().unwrap();
31+
let c = Config::builder()
32+
.add_source(File::with_name("tests/Settings-production"))
33+
.build()
34+
.unwrap();
3535

3636
assert_eq!(c.get("debug").ok(), Some(false));
3737
assert_eq!(c.get("production").ok(), Some(true));
3838
}
3939

4040
#[test]
4141
fn test_file_auto_not_found() {
42-
let mut c = Config::builder();
43-
c.add_source(File::with_name("tests/NoSettings"));
44-
let res = c.build();
42+
let res = Config::builder()
43+
.add_source(File::with_name("tests/NoSettings"))
44+
.build();
4545

4646
assert!(res.is_err());
4747
assert_eq!(
@@ -52,10 +52,10 @@ fn test_file_auto_not_found() {
5252

5353
#[test]
5454
fn test_file_ext() {
55-
let mut builder = Config::builder();
56-
builder.add_source(File::with_name("tests/Settings.json"));
57-
58-
let c = builder.build().unwrap();
55+
let c = Config::builder()
56+
.add_source(File::with_name("tests/Settings.json"))
57+
.build()
58+
.unwrap();
5959

6060
assert_eq!(c.get("debug").ok(), Some(true));
6161
assert_eq!(c.get("production").ok(), Some(false));

tests/file_hjson.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,10 @@ struct Settings {
3535
}
3636

3737
fn make() -> Config {
38-
let mut c = Config::builder();
39-
c.add_source(File::new("tests/Settings", FileFormat::Hjson));
40-
c.build().unwrap()
38+
Config::builder()
39+
.add_source(File::new("tests/Settings", FileFormat::Hjson))
40+
.build()
41+
.unwrap()
4142
}
4243

4344
#[test]
@@ -66,9 +67,9 @@ fn test_file() {
6667

6768
#[test]
6869
fn test_error_parse() {
69-
let mut c = Config::builder();
70-
c.add_source(File::new("tests/Settings-invalid", FileFormat::Hjson));
71-
let res = c.build();
70+
let res = Config::builder()
71+
.add_source(File::new("tests/Settings-invalid", FileFormat::Hjson))
72+
.build();
7273

7374
let path: PathBuf = ["tests", "Settings-invalid.hjson"].iter().collect();
7475

tests/file_ini.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@ struct Settings {
2828
}
2929

3030
fn make() -> Config {
31-
let mut c = Config::builder();
32-
c.add_source(File::new("tests/Settings", FileFormat::Ini));
33-
c.build().unwrap()
31+
Config::builder()
32+
.add_source(File::new("tests/Settings", FileFormat::Ini))
33+
.build()
34+
.unwrap()
3435
}
3536

3637
#[test]
@@ -55,9 +56,9 @@ fn test_file() {
5556

5657
#[test]
5758
fn test_error_parse() {
58-
let mut c = Config::builder();
59-
c.add_source(File::new("tests/Settings-invalid", FileFormat::Ini));
60-
let res = c.build();
59+
let res = Config::builder()
60+
.add_source(File::new("tests/Settings-invalid", FileFormat::Ini))
61+
.build();
6162

6263
let path: PathBuf = ["tests", "Settings-invalid.ini"].iter().collect();
6364

tests/file_json.rs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,10 @@ struct Settings {
3535
}
3636

3737
fn make() -> Config {
38-
let mut c = Config::builder();
39-
c.add_source(File::new("tests/Settings", FileFormat::Json));
40-
c.build().unwrap()
38+
Config::builder()
39+
.add_source(File::new("tests/Settings", FileFormat::Json))
40+
.build()
41+
.unwrap()
4142
}
4243

4344
#[test]
@@ -66,9 +67,9 @@ fn test_file() {
6667

6768
#[test]
6869
fn test_error_parse() {
69-
let mut c = Config::builder();
70-
c.add_source(File::new("tests/Settings-invalid", FileFormat::Json));
71-
let res = c.build();
70+
let res = Config::builder()
71+
.add_source(File::new("tests/Settings-invalid", FileFormat::Json))
72+
.build();
7273

7374
let path_with_extension: PathBuf = ["tests", "Settings-invalid.json"].iter().collect();
7475

@@ -84,17 +85,17 @@ fn test_error_parse() {
8485

8586
#[test]
8687
fn test_json_vec() {
87-
let mut builder = Config::builder();
88-
builder.add_source(File::from_str(
89-
r#"
88+
let c = Config::builder()
89+
.add_source(File::from_str(
90+
r#"
9091
{
9192
"WASTE": ["example_dir1", "example_dir2"]
9293
}
9394
"#,
94-
FileFormat::Json,
95-
));
96-
97-
let c = builder.build().unwrap();
95+
FileFormat::Json,
96+
))
97+
.build()
98+
.unwrap();
9899

99100
let v = c.get_array("WASTE").unwrap();
100101
let mut vi = v.into_iter();

tests/file_ron.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ struct Settings {
3636
}
3737

3838
fn make() -> Config {
39-
let mut c = Config::builder();
40-
c.add_source(File::new("tests/Settings", FileFormat::Ron));
41-
c.build().unwrap()
39+
Config::builder()
40+
.add_source(File::new("tests/Settings", FileFormat::Ron))
41+
.build()
42+
.unwrap()
4243
}
4344

4445
#[test]
@@ -68,9 +69,9 @@ fn test_file() {
6869

6970
#[test]
7071
fn test_error_parse() {
71-
let mut c = Config::builder();
72-
c.add_source(File::new("tests/Settings-invalid", FileFormat::Ron));
73-
let res = c.build();
72+
let res = Config::builder()
73+
.add_source(File::new("tests/Settings-invalid", FileFormat::Ron))
74+
.build();
7475

7576
let path_with_extension: PathBuf = ["tests", "Settings-invalid.ron"].iter().collect();
7677

tests/file_toml.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,10 @@ struct Settings {
4444

4545
#[cfg(test)]
4646
fn make() -> Config {
47-
let mut c = Config::builder();
48-
c.add_source(File::new("tests/Settings", FileFormat::Toml));
49-
c.build().unwrap()
47+
Config::builder()
48+
.add_source(File::new("tests/Settings", FileFormat::Toml))
49+
.build()
50+
.unwrap()
5051
}
5152

5253
#[test]
@@ -77,9 +78,9 @@ fn test_file() {
7778

7879
#[test]
7980
fn test_error_parse() {
80-
let mut c = Config::builder();
81-
c.add_source(File::new("tests/Settings-invalid", FileFormat::Toml));
82-
let res = c.build();
81+
let res = Config::builder()
82+
.add_source(File::new("tests/Settings-invalid", FileFormat::Toml))
83+
.build();
8384

8485
let path_with_extension: PathBuf = ["tests", "Settings-invalid.toml"].iter().collect();
8586

tests/file_yaml.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,10 @@ struct Settings {
3535
}
3636

3737
fn make() -> Config {
38-
let mut c = Config::builder();
39-
c.add_source(File::new("tests/Settings", FileFormat::Yaml));
40-
c.build().unwrap()
38+
Config::builder()
39+
.add_source(File::new("tests/Settings", FileFormat::Yaml))
40+
.build()
41+
.unwrap()
4142
}
4243

4344
#[test]
@@ -66,9 +67,9 @@ fn test_file() {
6667

6768
#[test]
6869
fn test_error_parse() {
69-
let mut c = Config::builder();
70-
c.add_source(File::new("tests/Settings-invalid", FileFormat::Yaml));
71-
let res = c.build();
70+
let res = Config::builder()
71+
.add_source(File::new("tests/Settings-invalid", FileFormat::Yaml))
72+
.build();
7273

7374
let path_with_extension: PathBuf = ["tests", "Settings-invalid.yaml"].iter().collect();
7475

0 commit comments

Comments
 (0)