Thank you for your interest in contributing to Recallable! We welcome contributions from the community.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/recallable.git - Create a new branch:
git checkout -b feature/your-feature-name
- Rust 1.88 or newer (latest stable recommended for day-to-day development)
- Cargo
cargo buildcargo test --package recallable
cargo test --package recallable --no-default-features
cargo test --package recallable --features impl_from
cargo test --package recallable --all-featuresProperty-based tests for the serde-backed integration suites run as part of the
normal cargo test commands above.
The runnable example binaries live under recallable/examples/:
cargo run -p recallable --example basic_model
cargo run -p recallable --example nested_generic
cargo run -p recallable --example postcard_roundtrip
cargo run -p recallable --no-default-features --example manual_no_serde
cargo run -p recallable --no-default-features --features impl_from --example impl_from_roundtrip- Follow the Rust API Guidelines
- Run
cargo clippy --workspace --all-targets --all-features --fixand address any warnings
- Add doc comments for all public APIs
- Include examples in doc comments where applicable
- Update README.md if adding new features
- Write tests for new functionality
- Ensure all existing tests pass
- Add integration tests for significant features
The repository includes manual fuzz targets under fuzz/.
Prerequisites:
rustup toolchain install nightlycargo install cargo-fuzz
Smoke-run the fuzz targets from the fuzz/ directory:
cargo +nightly fuzz run json_memento corpus/json_memento -- -max_total_time=10
cargo +nightly fuzz run postcard_memento corpus/postcard_memento -- -max_total_time=10- Commit your changes with clear, descriptive commit messages
- Push to your fork:
git push origin feature/your-feature-name - Open a Pull Request against the main repository
- Describe your changes in the PR description
- Link any related issues
- Keep PRs focused on a single feature or bug fix
- Include tests for new functionality
- Update documentation as needed
- Ensure CI passes on both stable and the MSRV job before requesting review
When reporting bugs, please include:
- A clear description of the issue
- Steps to reproduce
- Expected behavior
- Actual behavior
- Rust version and OS
- Minimal code example demonstrating the issue
We welcome feature requests! Please:
- Check if the feature has already been requested
- Clearly describe the use case
- Explain why it would be valuable to the project
- Consider submitting a PR if you're able to implement it
Please be respectful and constructive in all interactions. We aim to foster an inclusive and welcoming community.
Feel free to open an issue for questions or discussions about the project.
By contributing to recallable, you agree that your contributions will be licensed under the MIT License and Apache-2.0 License.