#bounds #numbers #range #ord #anything #traits #automatic

num_bound

Add bounds fn to anything implementing Ord that bounds a number to a range

4 releases (1 stable)

new 1.0.0 May 18, 2024
0.1.2 May 18, 2022
0.1.1 May 17, 2022
0.1.0 May 17, 2022

#772 in Rust patterns

Download history 19/week @ 2024-02-25 4/week @ 2024-03-10 50/week @ 2024-03-31 1/week @ 2024-04-07

208 downloads per month

Custom license

7KB

num_bound

Trait that adds a bound function enabling to restrict a number to a range.

Automatically implemented for anything that implements std trait Ord.

V1 Breaking change

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.

Usage

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);
}

No runtime deps