Crates.io | num_bound |
lib.rs | num_bound |
version | 1.0.0 |
source | src |
created_at | 2022-05-17 22:42:13.861209 |
updated_at | 2024-05-18 08:49:20.441427 |
description | Add bounds fn to anything implementing `Ord` that bounds a number to a range |
homepage | https://github.com/rustanigans/num_bound |
repository | https://github.com/rustanigans/num_bound |
max_upload_size | |
id | 588640 |
size | 18,249 |
Trait that adds a bound function enabling to restrict a number to a range.
Automatically implemented for anything that implements std trait Ord
.
Removed the requirement to operate only on references.
Previously this worked:
let number = 19;
let upper = 60;
let low = 10;
assert_eq!(number.bound(&low, &upper), &number);
Now the bound method doesn't take self as ref so the equivilant is now:
assert_eq!(number.as_ref().bound(&low, &upper), &number);
However unless passing references is preferred, copy should suffice:
assert_eq!(number.bound(low, upper), number);
Only use references if type is larger than a reference.
bound(self, lower: Self, upper: Self) -> Self
use num_bound::Bound;
#[test]
fn bound_test()
{
let lower = 200;
let upper = 500;
let out_lower = 100;
let out_upper = 600;
let in_bounds = 300;
assert_eq!(out_lower.bound(l, u), lower);
assert_eq!(out_upper.bound(l, u), upper);
assert_eq!(in_bounds.bound(l, u), in_bounds);
}