Thank you for your interest in contributing to this project.
- Fork the repository and clone your fork locally.
- Create a new branch from
mainfor your changes. - Make your changes following the guidelines below.
- Push your branch and open a pull request.
- Rust stable toolchain (see
rust-toolchain.tomlfor the exact version) - Cargo
cargo buildThis project uses an xtask-based workflow for quality checks:
# Run all quality checks (format, lint, test, docs)
cargo xtask quality
# Individual checks
cargo xtask check # Type checking
cargo xtask lint # Clippy lints
cargo xtask test # Run tests- Ensure all quality checks pass (
cargo xtask quality). - Update documentation if your change affects public APIs.
- Add or update tests to cover your changes.
- Write a clear commit message describing the change and its motivation.
- Keep pull requests focused -- one logical change per PR.
- Follow standard Rust formatting (
rustfmt). The project includes arustfmt.tomlconfiguration. - Address all Clippy warnings. The project includes a
clippy.tomlconfiguration. - Prefer immutable data structures and explicit error handling.
- Keep functions small and files focused.
- All new functionality must include tests.
- Run the full test suite before submitting a PR:
cargo xtask test. - Aim for meaningful coverage of edge cases, not just the happy path.
By contributing, you agree that your contributions will be licensed under the same terms as the project (Apache-2.0 OR MIT).