# saturate   [![Test Status]][actions] [![Crate Version]][crates] [![Rust Version]][crates]

[test status]: https://img.shields.io/github/actions/workflow/status/staticintlucas/saturate/test.yml?branch=main&label=tests&style=flat-square
[crate version]: https://img.shields.io/crates/v/saturate?style=flat-square
[rust version]: https://img.shields.io/badge/rust-1.45%2B-informational?style=flat-square

[actions]: https://github.com/staticintlucas/saturate/actions?query=branch%3Amain
[crates]: https://crates.io/crates/saturate

This crate provides a set of traits for saturating conversion between different numeric types.

The trait `SaturatingFrom` is implemented by default for all standard numeric types.
A blanket implementation of `SaturatingInto` is also provided,
mirroring the standard library's `From` and `Into` traits.

## Example

```Rust
use saturate::{SaturatingFrom, SaturatingInto};

assert_eq!(0, u8::saturating_from(-26));
assert_eq!(u32::MAX, i64::MAX.saturating_into());
assert!(f32::saturating_from(u128::MAX).is_infinite()); // out of range => infinity
assert_eq!(u8::MAX, 300.0.saturating_into());
```

## Licence

Licensed under either of

* Apache License, Version 2.0 ([LICENCE-APACHE](LICENCE-APACHE) or [http://www.apache.org/licenses/LICENSE-2.0][apache-licence])
* MIT license ([LICENCE-MIT](LICENCE-MIT) or [http://opensource.org/licenses/MIT][mit-licence])

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in
this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without
any additional terms or conditions.

[apache-licence]: http://www.apache.org/licenses/LICENSE-2.0
[mit-licence]: http://opensource.org/licenses/MIT
