Skip to content

Commit 91f813d

Browse files
committed
Simplify bounds
1 parent 2007344 commit 91f813d

1 file changed

Lines changed: 30 additions & 61 deletions

File tree

sha3/src/block_api.rs

Lines changed: 30 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,19 @@ use digest::{
1111
BlockSizes,
1212
hazmat::{DeserializeStateError, SerializableState, SerializedState},
1313
},
14-
typenum::{Gr, IsGreater, IsLessOrEqual, LeEq, NonZero, U0, U200},
14+
typenum::{IsLessOrEqual, True, U0, U200},
1515
};
1616

1717
/// Core Sha3 fixed output hasher state.
1818
#[derive(Clone)]
19-
#[allow(non_camel_case_types)]
2019
pub struct Sha3HasherCore<
2120
Rate,
2221
OutputSize,
2322
const PAD: u8,
2423
const ROUNDS: usize = DEFAULT_ROUND_COUNT,
2524
> where
26-
Rate: BlockSizes + IsLessOrEqual<U200>,
27-
OutputSize: ArraySize + IsLessOrEqual<U200>,
28-
LeEq<Rate, U200>: NonZero,
29-
LeEq<OutputSize, U200>: NonZero,
25+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
26+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
3027
{
3128
state: [u64; PLEN],
3229
_pd: PhantomData<(Rate, OutputSize)>,
@@ -35,53 +32,43 @@ pub struct Sha3HasherCore<
3532
impl<Rate, OutputSize, const PAD: u8, const ROUNDS: usize> HashMarker
3633
for Sha3HasherCore<Rate, OutputSize, PAD, ROUNDS>
3734
where
38-
Rate: BlockSizes + IsLessOrEqual<U200>,
39-
OutputSize: ArraySize + IsLessOrEqual<U200>,
40-
LeEq<Rate, U200>: NonZero,
41-
LeEq<OutputSize, U200>: NonZero,
35+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
36+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
4237
{
4338
}
4439

4540
impl<Rate, OutputSize, const PAD: u8, const ROUNDS: usize> BlockSizeUser
4641
for Sha3HasherCore<Rate, OutputSize, PAD, ROUNDS>
4742
where
48-
Rate: BlockSizes + IsLessOrEqual<U200>,
49-
OutputSize: ArraySize + IsLessOrEqual<U200>,
50-
LeEq<Rate, U200>: NonZero,
51-
LeEq<OutputSize, U200>: NonZero,
43+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
44+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
5245
{
5346
type BlockSize = Rate;
5447
}
5548

5649
impl<Rate, OutputSize, const PAD: u8, const ROUNDS: usize> BufferKindUser
5750
for Sha3HasherCore<Rate, OutputSize, PAD, ROUNDS>
5851
where
59-
Rate: BlockSizes + IsLessOrEqual<U200>,
60-
OutputSize: ArraySize + IsLessOrEqual<U200>,
61-
LeEq<Rate, U200>: NonZero,
62-
LeEq<OutputSize, U200>: NonZero,
52+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
53+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
6354
{
6455
type BufferKind = Eager;
6556
}
6657

6758
impl<Rate, OutputSize, const PAD: u8, const ROUNDS: usize> OutputSizeUser
6859
for Sha3HasherCore<Rate, OutputSize, PAD, ROUNDS>
6960
where
70-
Rate: BlockSizes + IsLessOrEqual<U200>,
71-
OutputSize: ArraySize + IsLessOrEqual<U200>,
72-
LeEq<Rate, U200>: NonZero,
73-
LeEq<OutputSize, U200>: NonZero,
61+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
62+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
7463
{
7564
type OutputSize = OutputSize;
7665
}
7766

7867
impl<Rate, OutputSize, const PAD: u8, const ROUNDS: usize> UpdateCore
7968
for Sha3HasherCore<Rate, OutputSize, PAD, ROUNDS>
8069
where
81-
Rate: BlockSizes + IsLessOrEqual<U200>,
82-
OutputSize: ArraySize + IsLessOrEqual<U200>,
83-
LeEq<Rate, U200>: NonZero,
84-
LeEq<OutputSize, U200>: NonZero,
70+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
71+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
8572
{
8673
#[inline]
8774
fn update_blocks(&mut self, blocks: &[Block<Self>]) {
@@ -95,11 +82,8 @@ where
9582
impl<Rate, OutputSize, const PAD: u8, const ROUNDS: usize> FixedOutputCore
9683
for Sha3HasherCore<Rate, OutputSize, PAD, ROUNDS>
9784
where
98-
Rate: BlockSizes + IsLessOrEqual<U200>,
99-
OutputSize: ArraySize + IsLessOrEqual<U200> + IsGreater<U0>,
100-
LeEq<Rate, U200>: NonZero,
101-
Gr<OutputSize, U0>: NonZero,
102-
LeEq<OutputSize, U200>: NonZero,
85+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
86+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
10387
{
10488
#[inline]
10589
fn finalize_fixed_core(&mut self, buffer: &mut Buffer<Self>, out: &mut Output<Self>) {
@@ -121,8 +105,7 @@ where
121105
impl<Rate, const PAD: u8, const ROUNDS: usize> ExtendableOutputCore
122106
for Sha3HasherCore<Rate, U0, PAD, ROUNDS>
123107
where
124-
Rate: BlockSizes + IsLessOrEqual<U200>,
125-
LeEq<Rate, U200>: NonZero,
108+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
126109
{
127110
type ReaderCore = Sha3ReaderCore<Rate, ROUNDS>;
128111

@@ -144,10 +127,8 @@ where
144127
impl<Rate, OutputSize, const PAD: u8, const ROUNDS: usize> Default
145128
for Sha3HasherCore<Rate, OutputSize, PAD, ROUNDS>
146129
where
147-
Rate: BlockSizes + IsLessOrEqual<U200>,
148-
OutputSize: ArraySize + IsLessOrEqual<U200>,
149-
LeEq<Rate, U200>: NonZero,
150-
LeEq<OutputSize, U200>: NonZero,
130+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
131+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
151132
{
152133
#[inline]
153134
fn default() -> Self {
@@ -161,10 +142,8 @@ where
161142
impl<Rate, OutputSize, const PAD: u8, const ROUNDS: usize> Reset
162143
for Sha3HasherCore<Rate, OutputSize, PAD, ROUNDS>
163144
where
164-
Rate: BlockSizes + IsLessOrEqual<U200>,
165-
OutputSize: ArraySize + IsLessOrEqual<U200>,
166-
LeEq<Rate, U200>: NonZero,
167-
LeEq<OutputSize, U200>: NonZero,
145+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
146+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
168147
{
169148
#[inline]
170149
fn reset(&mut self) {
@@ -175,10 +154,8 @@ where
175154
impl<Rate, OutputSize, const PAD: u8, const ROUNDS: usize> AlgorithmName
176155
for Sha3HasherCore<Rate, OutputSize, PAD, ROUNDS>
177156
where
178-
Rate: BlockSizes + IsLessOrEqual<U200>,
179-
OutputSize: ArraySize + IsLessOrEqual<U200>,
180-
LeEq<Rate, U200>: NonZero,
181-
LeEq<OutputSize, U200>: NonZero,
157+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
158+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
182159
{
183160
fn write_alg_name(f: &mut fmt::Formatter<'_>) -> fmt::Result {
184161
f.write_str("Sha3") // TODO
@@ -188,10 +165,8 @@ where
188165
impl<Rate, OutputSize, const PAD: u8, const ROUNDS: usize> fmt::Debug
189166
for Sha3HasherCore<Rate, OutputSize, PAD, ROUNDS>
190167
where
191-
Rate: BlockSizes + IsLessOrEqual<U200>,
192-
OutputSize: ArraySize + IsLessOrEqual<U200>,
193-
LeEq<Rate, U200>: NonZero,
194-
LeEq<OutputSize, U200>: NonZero,
168+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
169+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
195170
{
196171
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
197172
f.write_str("Sha3FixedCore<Rate, OutputSize, PAD, ROUNDS> { ... }")
@@ -201,10 +176,8 @@ where
201176
impl<Rate, OutputSize, const PAD: u8, const ROUNDS: usize> Drop
202177
for Sha3HasherCore<Rate, OutputSize, PAD, ROUNDS>
203178
where
204-
Rate: BlockSizes + IsLessOrEqual<U200>,
205-
OutputSize: ArraySize + IsLessOrEqual<U200>,
206-
LeEq<Rate, U200>: NonZero,
207-
LeEq<OutputSize, U200>: NonZero,
179+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
180+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
208181
{
209182
fn drop(&mut self) {
210183
#[cfg(feature = "zeroize")]
@@ -219,20 +192,16 @@ where
219192
impl<Rate, OutputSize, const PAD: u8, const ROUNDS: usize> digest::zeroize::ZeroizeOnDrop
220193
for Sha3HasherCore<Rate, OutputSize, PAD, ROUNDS>
221194
where
222-
Rate: BlockSizes + IsLessOrEqual<U200>,
223-
OutputSize: ArraySize + IsLessOrEqual<U200>,
224-
LeEq<Rate, U200>: NonZero,
225-
LeEq<OutputSize, U200>: NonZero,
195+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
196+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
226197
{
227198
}
228199

229200
impl<Rate, OutputSize, const PAD: u8, const ROUNDS: usize> SerializableState
230201
for Sha3HasherCore<Rate, OutputSize, PAD, ROUNDS>
231202
where
232-
Rate: BlockSizes + IsLessOrEqual<U200>,
233-
OutputSize: ArraySize + IsLessOrEqual<U200>,
234-
LeEq<Rate, U200>: NonZero,
235-
LeEq<OutputSize, U200>: NonZero,
203+
Rate: BlockSizes + IsLessOrEqual<U200, Output = True>,
204+
OutputSize: ArraySize + IsLessOrEqual<U200, Output = True>,
236205
{
237206
type SerializedStateSize = U200;
238207

0 commit comments

Comments
 (0)