about summary refs log tree commit diff
path: root/docs
diff options
context:
space:
mode:
authorAleksey Kladov <aleksey.kladov@gmail.com>2020-10-16 12:50:09 +0200
committerAleksey Kladov <aleksey.kladov@gmail.com>2020-10-16 12:50:09 +0200
commit0c67edc0f7ebb7e6a265d4a925bc368e460cd8cb (patch)
treec0bec28be51fb28d6e92069388b2434e32c076b1 /docs
parent1de202010948c94658235f7cfe9b25dda0c7ddf3 (diff)
downloadrust-0c67edc0f7ebb7e6a265d4a925bc368e460cd8cb.tar.gz
rust-0c67edc0f7ebb7e6a265d4a925bc368e460cd8cb.zip
Expand code order section
Diffstat (limited to 'docs')
-rw-r--r--docs/dev/style.md61
1 files changed, 50 insertions, 11 deletions
diff --git a/docs/dev/style.md b/docs/dev/style.md
index 883a6845d91..7a64a0d228c 100644
--- a/docs/dev/style.md
+++ b/docs/dev/style.md
@@ -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.
 
-Put `struct`s and `enum`s first, functions and impls last.
-
-Do
-
 ```rust
 // Good
-struct Foo {
-    bars: Vec<Bar>
+pub(crate) fn frobnicate() {
+    Helper::act()
+}
+
+#[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()
 }
 
-struct Bar;
+impl Helper {
+    fn act(&self) {
+
+    }
+}
 ```
 
-rather than
+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
+// Good
+struct Parent {
+    children: Vec<Child>
+}
+
+struct Child;
+
+impl Parent {
+}
+
+impl Child {
+}
+
 // Not as good
-struct Bar;
+struct Child;
 
-struct Foo {
-    bars: Vec<Bar>
+impl Child {
+}
+
+struct Parent {
+    children: Vec<Child>
+}
+
+impl Parent {
 }
 ```