Rust
Events
This material is being used during the events organized in the Code-Mavens Meetup group.
Docker
Chat
How to select a Rust project to contribute to?
- Pick a Rust-based project you use.
- Pick a Rust crate that your code directly depends on. They are listed in the
Cargo.tomlfile. - Pick a Rust crate that your code indirectly depends on. They are listed in the
Cargo.lockfile. - Search on GitHub: A semi-popular, recently updated Rust project
stars:100..1000 pushed:>2025-10-01 language:Rust - A recently updated crate or a crate in a category you are interested in. See Crates.io.
- Pick a popular project and work on stale PRs. That is PRs where there is already good work, but the original author (of the PR) has vanished.
- Use the Rust Digger once it is running again.
What and how to contribute to a Rust project?
- Link to VCS: Find the listing of the crate on Crates.io and check if it links to its VCS. If not, try to find the repository and send a PR to include the link. If you cannot find the repo then you cannot contribute to the project. You might want to send a message to the author expressing interest in contributing and asking if there is a public repository.
- Testing:
- Run the tests of the crate locally or better yet in a Docker container. Report if there is any test failures or if there are difficulties in running the tests.
- Generate test coverage report using tarpaulin.
- Find holes in the test coverage, write tests to check parts of the code that were not tested yet.
- CI
- If there are tests, check if there is a CI?
- Setting up CI: GitHub Actions or GitLab pipelines.
- Dependencies
- Add dependabot for GitHub Actions and for the dependencies.
- Code formatting
- Using
cargo fmt --checkcheck if the code is well formatted. If not open an issue suggestion to do it.
- Using
- Linting
- Use
cargo clippyto run the linter. Configure Clippy.
- Use
- Fuzz testing
- Mutation testing with cargo-mutants
- See article on Mutation testing librsvg
- Code complexity analyzis
- Refactoring
- Code reading
Low hanging fruits from the Rust Digger
- Has homepage but no repo 2025-08-15 current count 3,619 - 3,608 - 3,728
chore: Update Cargo.toml use repository instead of homepage
chore: use `repository` field instead of `homepage` field
According to the [manifest](https://doc.rust-lang.org/cargo/reference/manifest.html)
it seems the `repository` field is preferable.
More explanation https://github.com/szabgab/rust-digger/issues/119
- GitHub with www Since 2021-01-01 Till 2025-07-03 current count: 253
chore: Minor change to remove www from github url in Cargo.toml
GitHub redirects to the address without www anyway, so let's put that in Cargo.toml.
See also https://github.com/szabgab/rust-digger/issues/96
- Repo with http Since 2020-01-01 Till 2025-06-28 Current count: 355
chore: Minor change to use https in the github url in Cargo.toml
GitHub redirects to the address with https anyway, so let's put that in Cargo.toml.
See also https://github.com/szabgab/rust-digger/issues/97
chore: Fix typo in Cargo.toml
Given the most recent change here I know it is unlikely you will publish a new version of this crate on crates.io,
but in case you you might want to fix this typo in `Cargo.toml`.
See also: https://github.com/szabgab/rust-digger/issues/100
-
Lower-case cargo.toml Most recent is 2023-08-10, Maybe I should send PRs or open issues?
-
No homepage, no repo handled: 2025-06-06 current count: 28,911
chore: Update Cargo.toml add repository field
To make it easier for potential contributors and automated tools to find the repository.
More explanation: https://github.com/szabgab/rust-digger/issues/89
TODO
Projects
- zed
- 2026.02.14
- Issue: panic while running inside Docker - Waiting π°οΈ
- Discussion: Allow the user to provide an alternative path to devcontainer.json - Waiting π°οΈ
- short_uuid
- 2026.02.02
- Issue: What is flickrBase58? - Waiting π°οΈ
- 2026.02.09
- Issue: GitHub Action does not run
- PR: GitHub workflow - Merged β
- PR: Improve test by comparing result to expected short - Merged β
- We had trouble understanding if the test that fails should even work. Basically we did not know when is a string an βinvalid short uuidβ?
- For sure it is when it has characters outside the vocabulary.
- For sure if converting to uuid fails.
- But if converting to uuid requires padding. Is that invalid? It is unclear so we did not βfixβ the test.
- We had some major trouble as VS code keept indicating compilation errors and we could not figure out what is the right way to write some code. It tooks some time till I tried to run
cargo buildon the terminal just to find out the code compiles. Restarting VS code then fixed that, but it was very unpleasant. Especially in-front of other people.
- Sample GitHub Workflow in the Cargo Book.
- cargo-dist
- GitHub Workflow of the rusmux project by Meir Kriheli
- spyne - Zaid Ahmed (ZA1815)
- 2026.01.26
- PR: chore: Add repository URL to Cargo.toml - rejected β - no comment
- Video recordings
- Issue: unresolved imports crate::serialization::serialize - Fixed β
- PR: Fix the capitalization of some names in the test - rejected β - no comment
- PR: Add basic GitHub Actions to run the tests on every push and every pull-request - rejected β - no comment
- kftray-helper - Henrique Cavarsan (hcavarsan)
- 2026.01.26
- PR: Add repository field to Cargo.toml by Karol Skorek (skht) - Merged β
- Video recordings
- Learn: llvm-cov for test coverage
- csv
- 2026.01.18
- Issue: Remove Travis from the repository - Waiting π°οΈ
- PR: chore: Remove Travis-CI and Appveyor related badges - Waiting π°οΈ
- PR: chore: Add dependabot to monitor github actions - rejected β - author feels dependabot is too noisy.
- Issue: Remove or update ci/script.sh - Waiting π°οΈ
- Find the most recent change of a file (even if the file is already deleted):
git rev-list -n 1 HEAD -- <file_path> - Learn: husky
- We tried to run Tarpaulin on this repo, but it failed. - TODO π
- xml
- 2026.01.18
- PR: chore: Add dependabot configuration - Merged β
- PR: chore: gitignore the files that might be generated by tarpaulin - Merged β
- PR: chore: add cargo fmt to the CI to ensure it is always checked - rejected β - some strong (and negative) opinion on
rustfmt. - Issue: Fix cargo clippy issues and add cargo clippy to the ci - Waiting π°οΈ - TODO π
- Issue: Remove the master branch - done β
- rama
- 2026.01.18
- This was mentioned by one of the participants in our live session.
- I tried to run the tests both with
cargo testandjust test. Both failed and I did not have the energy to further investigate. - TODO π
- states-rs
- 2026.01.16
- chore: user repository field instead of homepage field - Waiting π°οΈ
- dvb
- 2026.01.16
- chore: Add repository URL to Cargo.toml - Merged β
- hannibal-derive
- 2026.01.16
- chore: Add repository field to Cargo.toml - Merged β
- resource-bound
- 2026.01.16
- chore: Fix the repository URL in Cargo.toml - Merged β
- ferrotype
- 2026.01.13
- PR: Add GitHub action to run the test on every push - Waiting π°οΈ
- stand
- 2026.01.13
- Add GitHub Actions to run the tests on every push - Waiting π°οΈ
- Learn: serena
- k8s-openapi-ext-rs
- 2026.01.13
- PR: add github actions with flags as needed - Merged β
- Learn: CodeRabbit
- Learn: just
- Learn: mise
- PyDigger
- 2026.01.09
- During the Python session we encountered some issues with PyDigger and one of the participants sent this PR:
- feat: add support for License Expression field - Merged β
- mkenv
- Issue: Test panics when USER env var is not set in a Docker container - Waiting π°οΈ
- PR: make sure the tarpaulin test coverage report is not added to git - Merged β
- PR: add a test case that calls the default_fmt_val method - Waiting π°οΈ
-
- PR: run cargo fmt βcheck in the CI - Merged β
- PR: add dependabot to send PRs when new version of the actions or the crates are available - Merged β
- PR: run cargo clippy in the CI - Waiting π°οΈ
- axum
- 2025.03.12
- Help with the basics of deployment - TODO π Read this!
- Add test to chat example - TODO π - review
- Improving the examples - adding tests - TODO π
- [test] the static-file-server example - TODO π
- anndata
- 2025.11.20
- Add type-checking - TODO π
- How to generate test coverage report? - TODO π
- mdbook
- Remove index.html suffix - TODO π
- Include
*.ipynbfiles and not only*.mdfiles - TODO π
- Issue with lots of PRs:
- Send PRs to remove www from the github url of the repository in Cargo.toml
- Send PRs to replace http by https in the github url of the repository in Cargo.toml
- Send PRs or open issues for Crates with error in Crate.toml
- Send PRs to Crates to use the repository field instead of the homepage field (July-August 2025)