small_db/utils/
number.rs

1use std::ops::{Add, Div, Sub};
2
3pub trait Number:
4    Add<Output = Self>
5    + Sub<Output = Self>
6    + Div<Output = Self>
7    + PartialEq
8    + Copy
9{
10    fn one() -> Self;
11}
12
13impl Number for u32 {
14    fn one() -> Self {
15        1
16    }
17}
18
19impl Number for usize {
20    fn one() -> Self {
21        1
22    }
23}
24
25pub fn ceil_div<T: Number>(a: T, b: T) -> T {
26    (a + b - T::one()) / b
27}
28
29pub fn floor_div<T: Number>(a: T, b: T) -> T {
30    a / b
31}