Contributing ============ ## Suggesting a Change If you have a change you'd like to see made to this project, create an issue in the Github repository. In the issue, please be as detailed as possible in explaining what you would like to see changed. ### Bug Reports If you are reporting a bug, please include the simplest possible case that demonstrates the buggy behavior, and an explanation of what it does. ### Feature Requests If you are requesting a feature, please include a snippet of code which demonstrates how to use the feature and, if possible, a reason why it should be included. ### Documentation Changes If you are requesting a change to the documentation, describe why the current documentation is insufficient (Is it unclear? Is it incomplete? Is it outdated?). If you can also suggest changes to fix the issue, that will make implementing the change much quicker. ## Implementing Suggested Changes If there's a change suggested that no one is currently working on implementing, and you want to work on it reply to the issue indicating your desire to work on it, and then implement the changes. To make changes, fork this repository, make changes on your own personal branch, and then create a pull request to add your code to the repository. ### Code Style To maintain a consistent style, this project uses rustfmt. To format your code to the desired style, run `cargo fmt`. ### Testing This project uses Travis CI to automatically run tests in a uniform environment. It should automatically run on any pull request you create and display its results in the pull request feed. In testing, Travis CI runs the following sequence of commands: ``` cargo build cargo test --verbose cargo fmt -- --check cargo clippy -- -D warnings ``` You can run those commands locally on your machine to verify that all tests pass.