Tabs are 8 characters, and thus indentations are also 8 characters. There are heretic movements that try to make indentations 4 (or even 2!) characters deep, and that is akin to trying to define the value of PI to be 3.
I am in love with this awsome document; I love its guidelines, and coding conventions.
However, when Rust was introduced into the kernel, they butchered these beautiful guidelines, I know it’s hard to look at such heretic actions, but you have to see this:
The default settings of
rustfmt
are used. This means the idiomatic Rust style is followed. For instance, 4 spaces are used for indentation rather than tabs.
How can this even relate to the ideology of the first document? I am deeply saddened by these new rules.
I know this is “The Rust experiment”, but this must be fixed before it’s too late! This has to reach someone.
A counter-argument might be:
The code should be formatted using
rustfmt
. In this way, a person contributing from time to time to the kernel does not need to learn and remember one more style guide. More importantly, reviewers and maintainers do not need to spend time pointing out style issues anymore, and thus less patch roundtrips may be needed to land a change.
And to that I say that rustfmt
is configurable per project, and if it isn’t, then it has to be. Doesn’t something like .editorconfig
exist?
Well, what I meant was just
rustfmt
’s default with:In addition to naming local variables short names, and soft-limiting functions to 48 lines long & their local variables to 5-10 (you know, normal reasonable things)
The part about
switch
statements doesn’t apply as Rust replaced them withmatch
.*The part about function brackets on new lines doesn’t apply because Rust does have nested functions.
The bad part about bracket-less
if
statements doesn’t apply as Rust doesn’t support such anti-features.The part about editor cruft is probably solved in this day & age.
The rest are either forced by the borrow checker, made obsolete by the great type system, or are just
C
exclusive issues that are unique toC
.I left out some parts of the standard that I do not understand.
I just skimmed through the Rust style guide, and realized the only real difference between the 2 standards is indentation, and line length. Embarrassing.
*: I experimented with not-indenting the arms of the root
match
expression, it’s surprisingly very good for simplematch
expressions, and feels very much like aswitch
, though I am not confident in recommending to people.Edit: How did I forget?! Indentation is limited to 3, increasing code readability.