File tree Expand file tree Collapse file tree 1 file changed +27
-0
lines changed Expand file tree Collapse file tree 1 file changed +27
-0
lines changed Original file line number Diff line number Diff line change @@ -144,6 +144,20 @@ fn foo() {
144144In the "Not as good" version, the precondition that ` 1 ` is a valid char boundary is checked in ` is_string_literal ` and used in ` foo ` .
145145In the "Good" version, the precondition check and usage are checked in the same block, and then encoded in the types.
146146
147+ When checking a boolean precondition, prefer ` if !invariant ` to ` if negated_invariant ` :
148+
149+ ``` rust
150+ // Good
151+ if ! (idx < len ) {
152+ return None ;
153+ }
154+
155+ // Not as good
156+ if idx >= len {
157+ return None ;
158+ }
159+ ```
160+
147161## Getters & Setters
148162
149163If a field can have any value without breaking invariants, make the field public.
@@ -382,6 +396,19 @@ fn foo() -> Option<Bar> {
382396}
383397```
384398
399+ ## Comparisons
400+
401+ Use ` < ` /` <= ` , avoid ` > ` /` >= ` .
402+ Less-then comparisons are more intuitive, they correspond spatially to [ real line] ( https://en.wikipedia.org/wiki/Real_line )
403+
404+ ``` rs
405+ // Good
406+ assert! (lo <= x && x <= hi );
407+
408+ // Not as good
409+ assert! (x >= lo && x <= hi >);
410+ ```
411+
385412## Documentation
386413
387414For ` .md ` and ` .adoc ` files, prefer a sentence-per-line format, don't wrap lines.
You can’t perform that action at this time.
0 commit comments