Thanks for considering contributing! This project aims to provide a robust, well-documented configuration manager for Rust applications.
- Fork and create a feature branch.
- Make focused changes with clear commit messages.
- Ensure tests and lints pass locally.
- Open a PR with a concise summary and rationale.
- Minimum Supported Rust Version (MSRV): 1.88 (declared in
Cargo.toml). - A
rust-toolchain.tomlpins the local channel tostableand installsrustfmt+clippy.
Run these before pushing:
cargo fmt --all
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all --all-features
cargo clippy --all-features -- -W clippy::pedanticEnable a git hook that runs clippy before every commit:
git config core.hooksPath .githooks
chmod +x .githooks/pre-commitThe hook runs cargo clippy --all-targets --all-features -- -D warnings and blocks commits on warnings.
- GitHub Actions runs format check, clippy (warnings = errors), tests.
cargo denychecks licenses/advisories/duplicates.- Docs are built with
RUSTDOCFLAGS=--cfg docsrs.
If you have just installed, common tasks are available:
just fmt
just clippy
just pedantic
just test
just docs
just deny- Prefer returning
Result<T, Error>over panicking. - Avoid
unwrap()in library code; handle lock poisoning by recovering guards. - Keep functions small and focused; avoid unnecessary generics.
- Public APIs must have rustdoc comments and examples.
- Use
thiserrorto model error variants with helpful messages.
- Keep README focused on the most common tasks.
- Add doctests to public functions and modules when practical.
- Use feature-gated docs with
#[cfg_attr(docsrs, doc(cfg(feature = "...")))]for optional features.
- Write unit tests close to the code they cover.
- Favor integration tests for cross-module workflows (see
tests/). - In examples/tests,
unwrap()is acceptable; in library code, prefer graceful errors.
- Update
CHANGELOG.mdunder[Unreleased]for user-visible changes. - Follow Keep a Changelog format.