Expand code order section

This commit is contained in:
Aleksey Kladov 2020-10-16 12:50:09 +02:00
parent 1de2020109
commit 0c67edc0f7

View file

@ -366,27 +366,66 @@ People read things from top to bottom, so place most important things first.
Specifically, if all items except one are private, always put the non-private item on top. Specifically, if all items except one are private, always put the non-private item on top.
Put `struct`s and `enum`s first, functions and impls last. ```rust
// Good
pub(crate) fn frobnicate() {
Helper::act()
}
Do #[derive(Default)]
struct Helper { stuff: i32 }
impl Helper {
fn act(&self) {
}
}
// Not as good
#[derive(Default)]
struct Helper { stuff: i32 }
pub(crate) fn frobnicate() {
Helper::act()
}
impl Helper {
fn act(&self) {
}
}
```
If there's a mixture of private and public items, put public items first.
If function bodies are folded in the editor, the source code should read as documentation for the public API.
Put `struct`s and `enum`s first, functions and impls last. Order types declarations in top-down manner.
```rust ```rust
// Good // Good
struct Foo { struct Parent {
bars: Vec<Bar> children: Vec<Child>
} }
struct Bar; struct Child;
```
rather than impl Parent {
}
impl Child {
}
```rust
// Not as good // Not as good
struct Bar; struct Child;
struct Foo { impl Child {
bars: Vec<Bar> }
struct Parent {
children: Vec<Child>
}
impl Parent {
} }
``` ```