Thanks for your interest in contributing to this project! Suggestions, bug reports, and pull requests and so on are cool, but keep in mind this is open source - there's currently no guarantee this project does much.
*Note:* Anyone who interacts with this project in any space, including but not
limited to this GitHub repository, must follow the [code of
2. Clone this repository and open it in your favorite editor.
3.`cargo build`, or link it via your `Cargo.toml` to mess with it.
### Coding Style
Generally follow the [Rust Style Guide](https://github.com/rust-lang-nursery/fmt-rfcs/blob/master/guide/guide.md), enforced using [rustfmt](https://github.com/rust-lang-nursery/rustfmt).
In a few cases, though, it's fine to deviate - a good example is branching match trees.
To run rustfmt tests locally:
1. Use rustup to set rust toolchain to the version specified in the
[rust-toolchain file](./rust-toolchain).
2. Install the rustfmt and clippy by running
```
rustup component add rustfmt-preview
rustup component add clippy-preview
```
3. Run clippy using cargo from the root of your alchemy repo.
```
cargo clippy
```
Each PR needs to compile without warning.
4. Run rustfmt using cargo from the root of your alchemy repo.
To see changes that need to be made, run
```
cargo fmt --all -- --check
```
If all code is properly formatted (e.g. if you have not made any changes),
this should run without error or output.
If your code needs to be reformatted,
you will see a diff between your code and properly formatted code.
If you see code here that you didn't make any changes to
then you are probably running the wrong version of rustfmt.
Once you are ready to apply the formatting changes, run
```
cargo fmt --all
```
You won't see any output, but all your files will be corrected.
You can also use rustfmt to make corrections or highlight issues in your editor.
Check out [their README](https://github.com/rust-lang-nursery/rustfmt) for details.