A template for your next Rust project.
To start coding run:
cargo generate tomkarw/opinionated-rust-templateOnly requires just to bootstrap all tools and configuration:
cargo install justIncludes:
- quite strict
clippywarnings; some lints are explicitly denied (those that have easy idiomatic alternatives). - opinionated
rustfmtconfiguration: separate imports by std/external/crate, import granularity at module level and formatting string literals just initfor installing all necessary tools- pre-commit hooks for
cargo {fmt,clippy,test} just pre-commitcommand that additionally includes a spellcheck- GitHub CI pipeline taken from hyper project pipeline
- skeleton for integration and e2e tests
- skeleton for benchmarks with
criterion - MIT and Apache 2.0 licenses
- Conventional Commit - a specification for adding human and machine-readable meaning to commit messages
- just - handy way to save and run project-specific commands
- cargo-binstall - binary installation for Rust projects
- pre-commit - framework for managing and maintaining multi-language pre-commit hooks
- cargo-nextest - next-generation test runner
- cargo-spellcheck - check your spelling with
hunspelland/ornlprule - cargo-llvm-cov - easily use LLVM source-based code coverage
- criterion - helps you write fast code by detecting and measuring performance improvements or regressions
- cargo-udeps - find unused dependencies in
Cargo.toml - cargo-audit - audit
Cargo.lockfiles for crates with security vulnerabilities reported to the RustSec Advisory Database - cargo-upgrades - shows which dependencies in
Cargo.tomlcan be upgraded to a newer version - cargo-unused-features- allows you to find and prune enabled, but, potentially unused feature flags from your project
- kondo - save space by cleaning non-essential files from software projects. Finds and deletes
targetandnode_modulesfolders - difftastic - a structural diff that understands syntax
- cargo-hack - test each feature independently and all combinations of feature powerset
- cargo-modules - plugin for showing an overview of a crate's modules
- cargo-geiger - tool that lists statistics related to the usage of unsafe Rust code in a Rust crate and all its dependencies
- template project to provide
--binand--libversions incargo-generate - add all commands from
just thorough-checkto CI - add choice of FOSS licences (MIT/APACHE/both/neither)
- add comments to all of
justcommands - add confirmation for each of steps performed in
just thorough-check - extend
pre-commit-rustwith all things injust pre-commit - investigate
cargo-sync-readme - investigate
rust-semverver/cargo-public-api/cargo-semver-checks - meta: speed up build-template CI run
You can find similar templates via cargo-generate topic on GitHub
This project is licensed under either of:
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Tomasz Karwowski LinkedIn