2.2 KiB
Contributing to nom
Thanks a lot for contributing to this project!
The following is a set of guidelines for contributing to nom.
Since the project is young: consider those best practices prone to change. Please suggest improvements!
Basics
License
The project uses the MIT license. By contributing to this project you agree to license your changes under this license.
What to do
Issues
There is plenty of features missing and possibly bugs might be already there. Feel free to add new issues and to wrangle over those already open and help fixing them.
Code
Implementing new codecs, container formats or protocols is always welcome!
Tests
It is strongly suggested to provide test along changes so the coverage stays around the 85%, helping to get to full coverage is pretty welcome.
Benchmark
Help in making sure the code does not have performance regression, by improving the benchmark suite or just by running it weekly, is welcome as well.
Documentation
To preview changes to the documentation: use cargo doc
with cargo external-doc
Style
Issue style
Try to write at least 3 short paragraphs describing what were you trying to achieve, what is not working and the step by step actions that lead to the unwanted outcome.
If possible provide:
- a code snippet or a link to a gist showcasing the problem, if is a library usage issue.
- a backtrace, if it is a crash.
- a sample file, if it is a decoding or encoding issue.
Coding style
The normal rust coding style is checked by [rustfmt][cs1]. Readable code is the first step on having good and safe libraries.
To avoid slight differences appearing in nightly versions, please
use the following command to run rustfmt: cargo +stable fmt
[cs1]: https://github.com/rust-lang-nursery/rustfmt