Add rustfmt.toml file (#18197)

My editor runs `rustfmt` on save to format Rust code, not `cargo fmt`.

With our recent bump to the Rust 2024 edition, the formatting that
`rustfmt`/`cargo fmt` applies changed. Unfortunately, `rustfmt` and
`cargo fmt` have different behaviors for determining which edition to
use when formatting: `cargo fmt` looks for the Rust edition in
`Cargo.toml`, whereas `rustfmt` looks for it in `rustfmt.toml`. As a
result, whenever I save, I have to remember to manually run `cargo fmt`
before committing/pushing.

There is an open issue asking for `rustfmt` to also look at `Cargo.toml`
when it's present (https://github.com/rust-lang/rust.vim/issues/368),
but it seems like they "closed" that issue just by bumping the default
edition (six years ago, from 2015 to 2018).

In the meantime, this PR adds a `rustfmt.toml` file with our current
Rust edition so that both invocation have the same behavior. I don't
love that this duplicates information in `Cargo.toml`, but I've added a
reminder comment there to hopefully ensure that we bump the edition in
both places three years from now.
This commit is contained in:
Douglas Creager 2025-05-19 11:40:58 -04:00 committed by GitHub
parent 59d80aff9f
commit 569c94b71b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 13 additions and 5 deletions

View file

@ -3,6 +3,7 @@ members = ["crates/*"]
resolver = "2"
[workspace.package]
# Please update rustfmt.toml when bumping the Rust edition
edition = "2024"
rust-version = "1.85"
homepage = "https://docs.astral.sh/ruff"

View file

@ -2,8 +2,13 @@
name = "ruff_text_size"
version = "0.0.0"
publish = false
edition = "2021"
rust-version = "1.67.1"
authors = { workspace = true }
edition = { workspace = true }
rust-version = { workspace = true }
homepage = { workspace = true }
documentation = { workspace = true }
repository = { workspace = true }
license = { workspace = true }
[dependencies]
serde = { workspace = true, optional = true }

View file

@ -6,7 +6,7 @@
//! bindings to the Workspace API
use crate::{TextRange, TextSize};
use schemars::{r#gen::SchemaGenerator, schema::Schema, JsonSchema};
use schemars::{JsonSchema, r#gen::SchemaGenerator, schema::Schema};
impl JsonSchema for TextSize {
fn schema_name() -> String {

View file

@ -1,6 +1,6 @@
use {
crate::{TextRange, TextSize},
serde::{de, Deserialize, Deserializer, Serialize, Serializer},
serde::{Deserialize, Deserializer, Serialize, Serializer, de},
};
impl Serialize for TextSize {

View file

@ -1,6 +1,6 @@
use {
ruff_text_size::{TextRange, TextSize},
serde_test::{assert_de_tokens_error, assert_tokens, Token},
serde_test::{Token, assert_de_tokens_error, assert_tokens},
std::ops,
};

2
rustfmt.toml Normal file
View file

@ -0,0 +1,2 @@
edition = "2024"
style_edition = "2024"