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 |

https://docs.rs/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`

.

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