about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAleksey Kladov <aleksey.kladov@gmail.com>2021-02-02 15:41:57 +0300
committerAleksey Kladov <aleksey.kladov@gmail.com>2021-02-02 15:41:57 +0300
commit283c3b0133ec4d3217a29547a45092d6e64e4935 (patch)
tree1c3f2e2cda9b579e70ee6b6c55a89b4428d0170b
parent8720f7f14688257d320de44e1354c62fce1a6bcf (diff)
downloadrust-283c3b0133ec4d3217a29547a45092d6e64e4935.tar.gz
rust-283c3b0133ec4d3217a29547a45092d6e64e4935.zip
add useless types to the styleguide
-rw-r--r--docs/dev/style.md14
1 files changed, 14 insertions, 0 deletions
diff --git a/docs/dev/style.md b/docs/dev/style.md
index 0c5e2ad33cb..e2f1b6996af 100644
--- a/docs/dev/style.md
+++ b/docs/dev/style.md
@@ -267,6 +267,20 @@ Non-local code properties degrade under change, privacy makes invariant local.
 Borrowed own data discloses irrelevant details about origin of data.
 Irrelevant (neither right nor wrong) things obscure correctness.
 
+## Useless Types
+
+More generally, always prefer types on the left
+
+```rust
+// GOOD      BAD
+&[T]         &Vec<T>
+&str         &String
+Option<&T>   &Option<T>
+```
+
+**Rationale:** types on the left are strictly more general.
+Even when generality is not required, consistency is important.
+
 ## Constructors
 
 Prefer `Default` to zero-argument `new` function