# unitscale
## Overview
This is the public-facing facade crate that re-exports the traits and macros from [unitscale_core](https://docs.rs/unitscale_core/latest/unitscale_core/index.html) and [unitscale_macros](https://docs.rs/unitscale_macros/latest/unitscale_macros/index.html). It is designed to be ergonomic and beginner-friendly.
## Modules
* core: Exposes all traits and types from *unitscale_core*.
* macros: Exposes macros from *unitscale_macros*.
* prelude: Contains common re-exports for quick onboarding.
## Example
You will need to add `unitscale_core` and `num_traits` to your dependancies.
```rust
use unitscale::prelude::*;
#[unit_scale(to = 0.5)]
struct HalfUnit;
#[unit_data]
struct Percent;
let p = Percent::<HalfUnit, u8>::try_from(30.0).unwrap();
// v.to_f64() gives back 30.0 within the precision limit of the type (e.g. u8)
assert_eq!(p.scaled_value(), 60);
```
## Use Cases
This crate is ideal for anyone working with embedded systems, battery management protocols, or anywhere you need strongly typed unit data tied to fixed encoding scales.
## Licensing
For licensing information, please refer to the LICENSE file in each crate.