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}