1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
/* * Copyright (c) 2019 `new-rust-project` contributors * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ //! 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`](https://github.com/erichdongubler/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: //! //! ```sh,ignore //! #! /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 git@github.com: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](CONTRIBUTING.md) for getting started. //! //! See also the [code of conduct](CODE_OF_CONDUCT.md) for more details about expectations //! regarding contributions to this project. //! //! The [code of conduct](CODE_OF_CONDUCT.md) uses [Contributor Covenant //! v1.4.1](https://www.contributor-covenant.org/version/1/4/code-of-conduct). 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! //! //! ```rust //! println!("This should run just fine."); //! ``` //! //! ```rust,should_panic //! panic!("This should panic."); //! ``` //! //! ```rust,compile_fail //! !@#$% // This should fail to compile. //! ``` //! //! # CHANGELOG //! //! Yes, you should maintain a [`CHANGELOG`](CHANGELOG.md). //! //! ### More aggressive linting //! //! Several `rustc` and `clippy` lints have been enabled that Erich prefers. See the top of //! [`src/lib.rs`](src/lib.rs) for the full list. //! //! ### Out-of-the-box CI //! //! The associated CI configuration (Travis at [`.travis.yml`](.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` //! //! ### Buttons! //! //! There are a variety of handy buttons on the top of the README. These are meant to encourage //! activity both for maintainers and newcomers. Some buttons 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. #![doc(html_playground_url = "https://play.rust-lang.org/")] #![doc(html_root_url = "https://docs.rs/new-rust-project/0.1")] #![doc(test(attr(deny(warnings))))] #![warn( bare_trait_objects, elided_lifetimes_in_paths, missing_copy_implementations, missing_docs, single_use_lifetimes, unused_extern_crates, )] #[cfg(test)] mod tests { #[test] fn it_works() { assert_eq!(2 + 2, 4); } }