Well, he does have a point.
Agree, setting up rustfmt and then battling other developers about it’s settings is not very fun. But having a standard tool with configurable settings that can be stored right in the repository is immensely better than not
I like that rust is opinionated by default. It reminds me of prettier. I don’t have to argue with teams about what code style were using. I can open up any rust project and know it’s readable and formatted with the same specification as any other rust project
I am surprised that there are not common Rust formatting rules enforced at config level. Every project can have rustfmt rules file, that overwrite defaults.
Because
rustfmt
does not have enough proper customisations.I just started Rust a few days ago and after my code became >20 lines (following the docs, understanding the basics), I decided to look for a formatting tool for Rust.
I found outrustfmt
, read :Rustfmt is designed to be very configurable. You can create a TOML file called rustfmt.toml or .rustfmt.toml
and was kinda happy.
And since in
cmake
I useBreakBeforeBraces: Allman
, I looked for a similar option.
Found out in the docs, it was not available in stable. inner-thoughts: How old is Rust? I already waited 4+ years before picking it up. Well, let’s look up the unstable features on GitHub.
There are 2 configuration options relevant to the functionality.
Both of them have enough parts where they don’t work, so they are useless even if I were to use the unstable version ofrustfmt
.
And it seems like either none of the people participating in that issue is good enough to make changes in its source code or therustfmt
team doesn’t want that feature implemented.
And if someone requires a reason for Allman style for
BreakBeforeBraces
:
The Allman style makes it much easier to identify block scopes without having to rely upon IDE features such as highlighting.Sure, it might be missing features. But the main point is that rustfmt is pretty standard in Rust and is easy to enable and integrate. So even if features YOU want to have are missing, there could be a default configuration of what is configurable. I would expect that from a big project like Linux. Linus should never be in the position he was, by Googling and finding these options. It should have been as a configuration enforced as standard for every contributor.
Googling and finding these options
Well, it’s not in that bad a condition.
All options (hopefully, because I didn’t check) that are applicable to any version ofrustfmt
are available usingrustfmt --print-config default
and you only need to use the internet in case you either did not understand the option from the name or if you are looking for an option not in your specific version.It should have been as a configuration enforced as standard for every contributor.
That was most probably just another instance of oversight, I’d say.
The one determining which configuration went into the formatting configuration (or the one making the default one, in case there was no config file for the Linux project), might have just not thought of that particular implication of the option been set.
The format wars are getting too literal
Yeah he’s dead wrong here. Even clang-format - easily the worst autoformatter I’ve used - is an order of magnitude more tolerable than no auto-formatting.
Sure it might not always be as good as what a perfectionist human would produce, but it’s sure as hell better than what the average human produces, and it means you don’t have to waste time ranting like this.
He’s not advocating for getting rid of the formatter
He’s advocating for making it better