ospf_rust_math/algebra/concept/
bits.rs1use std::ops::*;
2
3pub trait Bits:
4 Sized
5 + BitAnd<Self, Output = Self>
6 + for<'a> BitAnd<&'a Self, Output = Self>
7 + BitAndAssign<Self>
8 + BitOr<Self, Output = Self>
9 + for<'a> BitOr<&'a Self, Output = Self>
10 + BitOrAssign<Self>
11 + BitXor<Self, Output = Self>
12 + for<'a> BitXor<&'a Self, Output = Self>
13 + BitXorAssign<Self>
14 + Shl<Self, Output = Self>
15 + for<'a> Shl<&'a Self, Output = Self>
16 + Shl<usize, Output = Self>
17 + ShlAssign<Self>
18 + ShlAssign<usize>
19 + Shr<Self, Output = Self>
20 + for<'a> Shr<&'a Self, Output = Self>
21 + ShrAssign<Self>
22 + Shr<usize, Output = Self>
23 + ShrAssign<usize>
24{
25}
26
27impl<
28 T: Sized
29 + BitAnd<T, Output = T>
30 + for<'a> BitAnd<&'a T, Output = T>
31 + BitAndAssign<T>
32 + BitOr<T, Output = T>
33 + for<'a> BitOr<&'a T, Output = T>
34 + BitOrAssign<T>
35 + BitXor<T, Output = T>
36 + for<'a> BitXor<&'a T, Output = T>
37 + BitXorAssign<T>
38 + Shl<T, Output = T>
39 + for<'a> Shl<&'a T, Output = T>
40 + Shl<usize, Output = T>
41 + ShlAssign<T>
42 + ShlAssign<usize>
43 + Shr<T, Output = T>
44 + for<'a> Shr<&'a T, Output = T>
45 + Shr<usize, Output = T>
46 + ShrAssign<T>
47 + ShrAssign<usize>
48> Bits for T
49{
50}