6250: Expand code order section r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
bors[bot] 2020-10-16 10:50:34 +00:00 committed by GitHub
commit fb2d332f5f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

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 {
} }
``` ```