Skip to content

Erich's preferred starter kit for new Github projects using Rust.

License

Notifications You must be signed in to change notification settings

ErichDonGubler/new-rust-project

Repository files navigation

New Rust Project

License Crates.io Docs.rs Matrix chat

last release date repo activity contributors Build Status

This project is Erich's personal Rust starter kit for developing new libraries and binaries in Rust. You shouldn't be seeing this anywhere outside of his new-rust-project repo.

Overview

At one point, Erich got tired of accumulating lots of interesting tidbits for starting Rust projects that he knew he'd forget. So he finally hunkered down and made this repo. An example of usage:

#! /bin/sh

git clone --shallow https://github.com/ErichDonGubler/new-rust-project name-of-new-rust-project
cd name-of-new-rust-project
rm -rf .git
git init
git add .
git commit -m "Initial commit"
git remote add origin [email protected]:ErichDonGubler/name-of-new-rust-project
git push -u origin master

Features

Licensing

This template uses MPL 2.0 by default. Erich's reasons for MPL by default here are:

  • Very permissive license in general
  • Patent protection for that project that suddenly takes off
  • Not-terribly-annoying copyleft

When in doubt, remember that Erich is not a lawyer. change your own project to use what you deem appropriate.

Contributing

Contributions, feature requests, and bug reports are warmly welcomed! See the contribution guidelines for getting started.

The code of conduct uses Contributor Covenant v1.4.1. If there's a newer version of this, feel free to open a PR!

Crate documentation in README

Crate documentation is inlined into this README. This means you get doc-tests for freebies! Try it out by reading the README -- it uses cargo-sync-readme. Also, this is integrated into CI, so you don't forget about it!

println!("This should run just fine.");
panic!("This should panic.");
!@#$% // This should fail to compile.

Intelligent defaults for docs

The Rust Playground is used as the playground service by default.

cargo-release configuration

cargo-release is configured to keep features of this template in sync with version releases, and has some defaults Erich considers more sensible.

CHANGELOG

Yes, you should maintain a CHANGELOG. ;)

More aggressive linting and tests

Several rustc and clippy lints have been enabled that Erich prefers. See the top of src/lib.rs for the full list.

Warnings are denied in doctests and in release mode.

Out-of-the-box CI

The associated CI configuration (Travis at .travis.yml) tests:

  • Runs tests on Linux, Windows, and MacOS.
  • The full set of lints with cargo clippy
  • Formatting with cargo fmt
  • The full suite of built-in tests with cargo test

Badges!

There are a variety of handy badges on the top of the README. The first row of badges are intended to aid crate users, while the second is intended for (maybe potential) contributors. Some badges may not be suitable for, say, internal or private projects that won't actually be published on crates.io. You are encouraged to keep the ones you want and throw out the rest.

If you're curious what other badges you can get out-of-the-box, check out Shields.io.

About

Erich's preferred starter kit for new Github projects using Rust.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published