I'm really glad you're reading this, because we need volunteer developers to help this project continue to grow and improve.
- file bugs and enhancement requests
- review the project documentation know if you find are issues, or missing content, there
- Fix or Add something and send us a pull request; you may like to pick up one of the issues marked help wanted or good first issue as an introduction. Alternatively, documentation issues can be a great way to understand the project and help improve the developer experience.
We love pull requests from everyone. By participating in this project, you agree to abide by our code of conduct, and License.
Fork, then clone the repo:
git clone [email protected]:johnstonskj/rust-codes.git
Ensure you have a good Rust install, usually managed by Rustup. You can ensure the latest tools with the following:
rustup update
Make your change. Add tests, and documentation, for your change. Ensure not only that tests pass, but the following all run successfully.
cargo check --workspace --all-targets --all-features
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
Make sure the tests pass. Note the three test passes which check for weird cases which can creap in with features.
cargo test --workspace --no-fail-fast --all-features
cargo test --workspace --no-fail-fast --all-targets --all-features
cargo test --workspace --no-fail-fast --no-default-targets --all-features
cargo doc --workspace --all-features --no-deps
If you made changes to the book source, ensure the following runs successfully
mdbook build
If you have made any changes to Cargo.toml
, also check:
cargo audit
cargo outdated --workspace --depth 1
Push to your fork and submit a pull request using our template.
At this point you're waiting on us. We like to at least comment on pull requests within three business days (and, typically, one business day). We may suggest some changes or improvements or alternatives.
Some things that will increase the chance that your pull request is accepted:
- Write unit tests.
- Write API documentation.
- Write a good commit message.
The primary tool for coding conventions is rustfmt, and specifically cargo fmt
is a part of the build process and will cause Actions to fail.
DO NOT create or update any existing rustfmt.toml
file to change the default
formatting rules.
DO NOT alter any warn
or deny
library attributes.
DO NOT add any feature
attributes that would prohibit building on the stable
channel. In some cases new crate-level features can be used to introduce an
unstable feature dependency but these MUST be clearly documented and optional.
DO NOT introduce unsafe
code without a discussion on alternatives first.
Ideally any unsafe code will be introduced as optional features.