[](https://crates.io/crates/checked_clamp)
[](https://gitlab.com/ygor.souza/checked_clamp/-/commits/main)
[](https://docs.rs/checked_clamp)
[](https://github.com/rust-secure-code/safety-dance/)
[](https://crates.io/crates/checked_clamp)
# Checked clamp
checked_clamp provides a method that tries to clamp any type implementing
PartialOrd between a minimum and a maximum value, returning an error if the
value or the limits are invalid.
### Example
```rust
use checked_clamp::{CheckedClamp, CheckedClampError as E};
assert_eq!(10.0.checked_clamp(0.0, 1.0), Ok(1.0));
assert_eq!(10.0.checked_clamp(1.0, 0.0), Err(E::MinGreaterThanMax));
assert_eq!(f32::NAN.checked_clamp(0.0, 10.0), Err(E::ComparisonFailed));
assert_eq!(0.0.checked_clamp(f32::NAN, 10.0), Err(E::ComparisonFailed));
assert_eq!("ABCD".checked_clamp("AAA", "ZZZ"), Ok("ABCD"));
```
## Contributing
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall
be dual licensed as below, without any additional terms or conditions.
### License
Licensed under either of
- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
<https://www.apache.org/licenses/LICENSE-2.0>)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or
<https://opensource.org/licenses/MIT>)
at your option.