2.0 KiB
Contributing
I would appreciate any contributions to this crate. However, some things are handy to know.
Code Style
Import Order
All imports are semantically grouped and ordered. The order is:
- standard library (
use std::...
) - external crates (
use rand::...
) - current crate (
use crate::...
) - parent module (
use super::..
) - current module (
use self::...
) - module declaration (
mod ...
)
There must be an empty line between groups. An example:
use crossterm_utils::{csi, write_cout, Result};
use crate::sys::{get_cursor_position, show_cursor};
use super::Cursor;
CLion Tips
The CLion IDE does this for you (Menu -> Code -> Optimize Imports). Be aware that the CLion sorts
imports in a group in a different way when compared to the rustfmt
. It's effectively two steps operation
to get proper grouping & sorting:
- Menu -> Code -> Optimize Imports - group & semantically order imports
cargo fmt
- fix ordering within the group
Second step can be automated via CLion -> Preferences -> Languages & Frameworks -> Rust -> Rustfmt -> Run rustfmt on save.
Max Line Length
Type | Max line length |
---|---|
Code | 100 |
Comments in the code | 120 |
Documentation | 120 |
100 is the max_width
default value.
120 is because of the GitHub. The editor & viewer width there is +- 123 characters.
Warnings
The code must be warning free. It's quite hard to find an error if the build logs are polluted with warnings.
If you decide to silent a warning with (#[allow(...)]
), please add a comment why it's required.
Always consult the Travis CI build logs.
Forbidden Warnings
Search for #![deny(...)]
in the code:
unused_must_use
unused_imports