measures-rs 0.1.2

A Rust macro to generate a library to statically encapsulate numbers in objects having a unit of measurement, allowing any meaningful operation, but statically forbidding meaningless operations with them. Optionally, measures have uncertainties, which are propagated in every operation.
Documentation
# Contribution guidelines

First off, thank you for considering contributing to the package `measures-rs`, including the crate `measures`.

If your contribution is not straightforward, please first discuss the change you wish to make, by creating a new issue before creating the pull request.

## Reporting issues

Before reporting an issue on the [issue tracker](https://github.com/carlomilanesi/measures-rs/issues), please check that it has not already been reported, by searching for some related keywords.

## Pull requests

Try to do one pull request per change.

### Updating the changelog

Update the document [CHANGELOG](https://github.com/carlomilanesi/measures-rs/blob/master/CHANGELOG.md) with the changes you have made under the **Unreleased** section.

Add the changes of your pull request to one of the following subsections, depending on the types of changes defined by [Keep a changelog](https://keepachangelog.com/en/1.0.0/):
- `Added` for new features.
- `Changed` for changes in existing functionality.
- `Deprecated` for soon-to-be removed features.
- `Removed` for now removed features.
- `Fixed` for any bug fixes.
- `Security` in case of vulnerabilities.

If the required subsection does not exist yet under **Unreleased**, create it.

## Developing

### Set up

This is no different than other Rust projects.

```shell
git clone https://github.com/carlomilanesi/measures-rs
cd measures-rs
```

### Useful Commands

Because most of the code is in macros, the commands `cargo fmt` and `cargo check` and `cargo build` are almost useless to format or check the code.

Instead, use the following commands:

```sh
# To compile all the library code and run all the tests:
cargo t

# To compile all the library code and run all quick tests (this is the command to run after any change):
cargo test --quiet test_

# To format all the code:
./format_measures.sh

# To perform a quick performance check
cargo r --release --example bench

# To exercise all the code, showing use cases.
cargo r --example full
```

Before committing any change, except for those in documentation only, this script must be run successfully from the root folder of the repository:
```sh
./build.sh
```
It will:
* clear all the targets,
* format all the code,
* run Clippy with fatal warnings for all the targets,
* and run all the tests.

If successful, the last printed line is "`OK`".