mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-03 02:23:20 +00:00
Discourage allocation
This commit is contained in:
parent
c87c4a0a40
commit
be0bb857c1
@ -219,7 +219,7 @@ Do
|
||||
```rust
|
||||
// Good
|
||||
struct Foo {
|
||||
bars: Vec<Bar>
|
||||
bars: Vec<Bar>
|
||||
}
|
||||
|
||||
struct Bar;
|
||||
@ -232,15 +232,10 @@ rather than
|
||||
struct Bar;
|
||||
|
||||
struct Foo {
|
||||
bars: Vec<Bar>
|
||||
bars: Vec<Bar>
|
||||
}
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
For `.md` and `.adoc` files, prefer a sentence-per-line format, don't wrap lines.
|
||||
If the line is too long, you want to split the sentence in two :-)
|
||||
|
||||
## Preconditions
|
||||
|
||||
Function preconditions should generally be expressed in types and provided by the caller (rather than checked by callee):
|
||||
@ -248,19 +243,45 @@ Function preconditions should generally be expressed in types and provided by th
|
||||
```rust
|
||||
// Good
|
||||
fn frbonicate(walrus: Walrus) {
|
||||
...
|
||||
...
|
||||
}
|
||||
|
||||
// Not as good
|
||||
fn frobnicate(walrus: Option<Walrus>) {
|
||||
let walrus = match walrus {
|
||||
Some(it) => it,
|
||||
None => return,
|
||||
};
|
||||
...
|
||||
let walrus = match walrus {
|
||||
Some(it) => it,
|
||||
None => return,
|
||||
};
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
## Premature Pessimization
|
||||
|
||||
While we don't specifically optimize code yet, avoid writing the code which is slower than it needs to be.
|
||||
Don't allocate a `Vec` were an iterator would do, don't allocate strings needlessly.
|
||||
|
||||
```rust
|
||||
// Good
|
||||
use itertools::Itertools;
|
||||
|
||||
let (first_word, second_word) = match text.split_ascii_whitespace().collect_tuple() {
|
||||
Some(it) => it,
|
||||
None => return,
|
||||
}
|
||||
|
||||
// Not as good
|
||||
let words = text.split_ascii_whitespace().collect::<Vec<_>>();
|
||||
if words.len() != 2 {
|
||||
return
|
||||
}
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
For `.md` and `.adoc` files, prefer a sentence-per-line format, don't wrap lines.
|
||||
If the line is too long, you want to split the sentence in two :-)
|
||||
|
||||
## Commit Style
|
||||
|
||||
We don't have specific rules around git history hygiene.
|
||||
|
Loading…
Reference in New Issue
Block a user