Add Limit struct.

Fixes #9286.
This commit is contained in:
Robert Bartlensky 2021-07-10 21:49:17 +01:00
parent fe00358888
commit 0b3d0cde8b
16 changed files with 84 additions and 24 deletions

31
crates/limit/src/lib.rs Normal file
View file

@ -0,0 +1,31 @@
//! limit defines a struct to enforce limits.
/// Represents a struct used to enforce a numerical limit.
pub struct Limit {
upper_bound: usize,
}
impl Limit {
/// Creates a new limit.
#[inline]
pub const fn new(upper_bound: usize) -> Self {
Self { upper_bound }
}
/// Gets the underlying numeric limit.
#[inline]
pub const fn inner(&self) -> usize {
self.upper_bound
}
/// Checks whether the given value is below the limit.
/// Returns `Ok` when `other` is below `self`, and `Err` otherwise.
#[inline]
pub const fn check(&self, other: usize) -> Result<(), ()> {
if other > self.upper_bound {
Err(())
} else {
Ok(())
}
}
}