ospf_rust_math/algebra/concept/
bits.rs

1use 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}