template-rs: An opinionated template for building Rust packages
This is a template for creating a new repository for Rust packages. Use this template to quickly get started with a new Rust project as well as having the infrastructure configuration files to make developing and building Rust packages easier.
Features
These are the features included in this template that help with building and maintaining a Rust package. Depending on the answers given to the template questions, some of these features may not be included in the created project:
- Uses Quarto Markdown for the website content, allowing for easy integration of code, text, and figures.
- Includes a justfile for managing common tasks like building the website and running checks.
- Uses typos to check for common spelling mistakes.
- Uses git-cliff to automatically create the changelog.
- Automates Git tagging and GitHub releases with Cocogitto that are based on messages following Conventional Commits.
- Uses a MIT license.
- Run checks with pre-commit hooks to ensure consistent formatting and style across the project. It includes checks for credentials, typos, and file formatting.
- Optionally uses the
seedcase-themeQuarto extension for a standard appearance across websites. - Includes GitHub Actions for continuous integration, testing, and delivery for running checks, formatting, releasing, and building the website. It also includes Dependabot for keeping GitHub Action dependencies up to date.
- Options between Netlify or GitHub Pages for hosting the website. For dealing with custom domain names, Netlify is the better choice, as the configuration is very easy to set up.
- Includes an EditorConfig file to ensure consistent formatting across different editors.
- High-level system and program management with uv.
- GitHub workflows for automatically adding Pull Requests and Issues to a project board.
- Pull request template for easy creation of new Pull Requests.
- VS Code settings commonly used by contributors working in VS Code.
CITATION.cfffile for citation information that provides Zenodo with the necessary metadata to create a DOI for the project and for GitHub to display the citation information on the repository page.- Includes a GoatCounter file for website visitor tracking, which is privacy-friendly and does not use cookies. That means it doesn’t need a GDPR notice as no personal data is collected.
- Uses rumdl and Panache to format Markdown files, so that they are consistent across the repository and easier to read in the raw form. We use two because they both do slightly different things for Quarto Markdown files. Rumdl is better at linting, while Panache is better at formatting.
- Uses lychee to check for broken links in the website files.
Want to contribute?
We would love your feedback or contributions! Head over to our GitHub repository to share your ideas or contribute code. Your input makes us better!
Licensing
This project is licensed under the MIT License.