diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 1b000abf..7b55a3d9 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -24,4 +24,6 @@ jobs: steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 + with: + python-version: '3.x' - uses: pre-commit/action@v3.0.1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 534546e8..caa7e747 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -45,7 +45,7 @@ We ask that commits are atomic, meaning they are complete and have a single resp PRs should tell a cohesive story, with test and refactor commits that keep the fix or feature commits simple and clear. -Specifically, we would encouage +Specifically, we would encourage - File renames be isolated into their own commit - Add tests in a commit before their feature or fix, showing the current behavior. The diff for the feature/fix commit will then show how the behavior changed, diff --git a/Cargo.toml b/Cargo.toml index 3105492f..0f833983 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -83,6 +83,7 @@ string_lit_as_bytes = "warn" string_to_string = "warn" todo = "warn" trait_duplication_in_bounds = "warn" +uninlined_format_args = "warn" verbose_file_reads = "warn" wildcard_imports = "warn" zero_sized_map_values = "warn" diff --git a/crates/benchmarks/benches/linear.rs b/crates/benchmarks/benches/linear.rs index e11636af..47b47e57 100644 --- a/crates/benchmarks/benches/linear.rs +++ b/crates/benchmarks/benches/linear.rs @@ -32,7 +32,7 @@ mod map { fn gen(num_entries: usize) -> String { let mut s = String::new(); for i in 0..num_entries { - s += &format!("[header_no_{}]\n", i); + s += &format!("[header_no_{i}]\n"); s += "entry = 42\n"; } s diff --git a/crates/toml/examples/decode.rs b/crates/toml/examples/decode.rs index 348e9116..f09eec68 100644 --- a/crates/toml/examples/decode.rs +++ b/crates/toml/examples/decode.rs @@ -50,5 +50,5 @@ fn main() { "#; let decoded: Config = toml::from_str(toml_str).unwrap(); - println!("{:#?}", decoded); + println!("{decoded:#?}"); } diff --git a/crates/toml/examples/enum_external.rs b/crates/toml/examples/enum_external.rs index edac7d6e..5c95fde1 100644 --- a/crates/toml/examples/enum_external.rs +++ b/crates/toml/examples/enum_external.rs @@ -41,5 +41,5 @@ fn main() { ]"#; let decoded: Config = toml::from_str(toml_str).unwrap(); - println!("{:#?}", decoded); + println!("{decoded:#?}"); } diff --git a/crates/toml/examples/toml2json.rs b/crates/toml/examples/toml2json.rs index 56a912c9..2ae96289 100644 --- a/crates/toml/examples/toml2json.rs +++ b/crates/toml/examples/toml2json.rs @@ -21,7 +21,7 @@ fn main() { let json = convert(toml); println!("{}", serde_json::to_string_pretty(&json).unwrap()); } - Err(error) => println!("failed to parse TOML: {}", error), + Err(error) => println!("failed to parse TOML: {error}"), } } diff --git a/crates/toml/src/ser.rs b/crates/toml/src/ser.rs index b64271a1..955e243b 100644 --- a/crates/toml/src/ser.rs +++ b/crates/toml/src/ser.rs @@ -915,7 +915,7 @@ mod internal { settings.visit_table_mut(&mut table); let doc: toml_edit::DocumentMut = table.into(); - write!(dst, "{}", doc).unwrap(); + write!(dst, "{doc}").unwrap(); Ok(()) } @@ -1067,7 +1067,7 @@ mod internal { let value = value.map_err(Error::wrap)?; - write!(dst, "{}", value).unwrap(); + write!(dst, "{value}").unwrap(); Ok(()) } diff --git a/crates/toml/src/value.rs b/crates/toml/src/value.rs index c689b383..1052fced 100644 --- a/crates/toml/src/value.rs +++ b/crates/toml/src/value.rs @@ -530,7 +530,7 @@ impl<'de> de::Deserialize<'de> for Value { if let crate::map::Entry::Vacant(vacant) = map.entry(&key) { vacant.insert(visitor.next_value()?); } else { - let msg = format!("duplicate key: `{}`", key); + let msg = format!("duplicate key: `{key}`"); return Err(de::Error::custom(msg)); } } @@ -808,7 +808,7 @@ impl<'de> de::VariantAccess<'de> for MapEnumDeserializer { if values.len() == len { de::Deserializer::deserialize_seq(values.into_deserializer(), visitor) } else { - Err(Error::custom(format!("expected tuple with length {}", len))) + Err(Error::custom(format!("expected tuple with length {len}"))) } } Value::Table(values) => { @@ -818,8 +818,7 @@ impl<'de> de::VariantAccess<'de> for MapEnumDeserializer { .map(|(index, (key, value))| match key.parse::() { Ok(key_index) if key_index == index => Ok(value), Ok(_) | Err(_) => Err(Error::custom(format!( - "expected table key `{}`, but was `{}`", - index, key + "expected table key `{index}`, but was `{key}`" ))), }) .collect(); @@ -828,7 +827,7 @@ impl<'de> de::VariantAccess<'de> for MapEnumDeserializer { if tuple_values.len() == len { de::Deserializer::deserialize_seq(tuple_values.into_deserializer(), visitor) } else { - Err(Error::custom(format!("expected tuple with length {}", len))) + Err(Error::custom(format!("expected tuple with length {len}"))) } } e => Err(Error::custom(format!( diff --git a/crates/toml/tests/testsuite/spanned.rs b/crates/toml/tests/testsuite/spanned.rs index daf7601b..b5c17d46 100644 --- a/crates/toml/tests/testsuite/spanned.rs +++ b/crates/toml/tests/testsuite/spanned.rs @@ -82,7 +82,7 @@ fn test_spanned_field() { ); for expected in good_datetimes() { - let s = format!("foo = {}", expected); + let s = format!("foo = {expected}"); good::(&s, expected, None); } // ending at something other than the absolute end diff --git a/crates/toml_datetime/src/datetime.rs b/crates/toml_datetime/src/datetime.rs index cea13b9f..d4a93615 100644 --- a/crates/toml_datetime/src/datetime.rs +++ b/crates/toml_datetime/src/datetime.rs @@ -238,16 +238,16 @@ impl From