Skip to main content

cba/
bum.rs

1#[easy_ext::ext(Float32Ext)]
2pub impl f32 {
3    /// Truncate to usize.
4    fn _trunc(&self) -> usize {
5        self.trunc() as usize
6    }
7
8    /// Round to usize.
9    fn _round(&self) -> usize {
10        self.round() as usize
11    }
12}
13
14#[easy_ext::ext(UsizeExt)]
15pub impl usize {
16    /// Saturating subtract with lower bound 0.
17    fn ssub(&mut self, rhs: usize) -> bool {
18        let worked = *self != 0;
19        *self = self.saturating_sub(rhs);
20        worked
21    }
22
23    /// Wrap subtract with wrap around at cap.
24    fn wsub(&mut self, rhs: usize, cap: usize) -> bool {
25        let worked = *self <= rhs;
26        *self = (cap + *self + cap - (rhs % cap)) % cap;
27        worked
28    }
29}