Skip to content

Commit 598dc81

Browse files
committed
fix!: avoid using "impl Trait" syntax
1 parent 41e2412 commit 598dc81

File tree

1 file changed

+42
-36
lines changed

1 file changed

+42
-36
lines changed

src/hash.nr

Lines changed: 42 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
pub fn poseidon2<let N: u32>(input: impl ArrayOrBoundedVec<Field, N>) -> Field {
1+
pub fn poseidon2<T, let N: u32>(input: T) -> Field
2+
where
3+
T: ArrayOrBoundedVec<Field, N>,
4+
{
25
let input = input.as_bounded_vec();
36
poseidon::poseidon2::Poseidon2::hash(input.storage(), input.len())
47
}
@@ -8,24 +11,30 @@ pub fn pedersen<let N: u32>(input: [Field; N]) -> Field {
811
std::hash::pedersen_hash(input)
912
}
1013

11-
pub fn sha256<let N: u32>(input: impl ArrayOrBoundedVec<u8, N>) -> [u8; 32] {
14+
pub fn sha256<T, let N: u32>(input: T) -> [u8; 32]
15+
where
16+
T: ArrayOrBoundedVec<u8, N>,
17+
{
1218
let input = input.as_bounded_vec();
1319
dep::sha256::sha256_var(input.storage(), input.len())
1420
}
1521

16-
pub fn partial_sha256_interstitial<let N: u32>(
17-
mut h: [u32; 8],
18-
input: impl ArrayOrBoundedVec<u8, N>,
19-
) -> [u32; 8] {
22+
pub fn partial_sha256_interstitial<T, let N: u32>(mut h: [u32; 8], input: T) -> [u32; 8]
23+
where
24+
T: ArrayOrBoundedVec<u8, N>,
25+
{
2026
let input = input.as_bounded_vec();
2127
dep::sha256::partial_sha256_var_interstitial(h, input.storage(), input.len())
2228
}
2329

24-
pub fn partial_sha256_end<let N: u32>(
30+
pub fn partial_sha256_end<T, let N: u32>(
2531
mut h: [u32; 8],
26-
partial_input: impl ArrayOrBoundedVec<u8, N>,
32+
partial_input: T,
2733
full_input_len: u32,
28-
) -> [u8; 32] {
34+
) -> [u8; 32]
35+
where
36+
T: ArrayOrBoundedVec<u8, N>,
37+
{
2938
let partial_input = partial_input.as_bounded_vec();
3039
dep::sha256::partial_sha256_var_end(
3140
h,
@@ -35,7 +44,10 @@ pub fn partial_sha256_end<let N: u32>(
3544
)
3645
}
3746

38-
pub fn keccak256<let N: u32>(input: impl ArrayOrBoundedVec<u8, N>) -> [u8; 32] {
47+
pub fn keccak256<T, let N: u32>(input: T) -> [u8; 32]
48+
where
49+
T: ArrayOrBoundedVec<u8, N>,
50+
{
3951
let input = input.as_bounded_vec();
4052
dep::keccak256::keccak256(input.storage(), input.len())
4153
}
@@ -70,38 +82,32 @@ mod tests {
7082

7183
#[test]
7284
fn test_equivalence() {
73-
assert(
74-
(poseidon2(FIELD_INPUT_ARR) == poseidon2(FIELD_INPUT_VEC)),
75-
// TODO: is this a bug? https://discord.com/channels/1113924620781883405/1333383938198212659
76-
// & (poseidon2(FIELD_INPUT_ARR) == poseidon2(FIELD_INPUT_VEC_LONGER)),
77-
);
78-
assert(
79-
(sha256(U8_INPUT_VEC) == sha256(U8_INPUT_ARR))
80-
& (sha256(U8_INPUT_VEC_LONGER) == sha256(U8_INPUT_ARR)),
81-
);
82-
assert(
83-
(keccak256(U8_INPUT_VEC) == keccak256(U8_INPUT_ARR))
84-
& (keccak256(U8_INPUT_VEC_LONGER) == keccak256(U8_INPUT_ARR)),
85-
);
85+
assert_eq(poseidon2(FIELD_INPUT_ARR), poseidon2(FIELD_INPUT_VEC));
86+
assert_eq(poseidon2(FIELD_INPUT_ARR), poseidon2(FIELD_INPUT_VEC_LONGER));
87+
assert_eq(sha256(U8_INPUT_VEC), sha256(U8_INPUT_ARR));
88+
assert_eq(sha256(U8_INPUT_VEC_LONGER), sha256(U8_INPUT_ARR));
89+
assert_eq(keccak256(U8_INPUT_VEC), keccak256(U8_INPUT_ARR));
90+
assert_eq(keccak256(U8_INPUT_VEC_LONGER), keccak256(U8_INPUT_ARR));
8691
}
8792

8893
#[test]
8994
fn test_against_std() {
90-
assert(
91-
poseidon2(FIELD_INPUT_ARR)
92-
== poseidon::poseidon2::Poseidon2::hash(FIELD_INPUT_ARR, FIELD_INPUT_ARR.len()),
95+
assert_eq(
96+
poseidon2(FIELD_INPUT_ARR),
97+
poseidon::poseidon2::Poseidon2::hash(FIELD_INPUT_ARR, FIELD_INPUT_ARR.len()),
9398
);
94-
assert(
95-
poseidon2(FIELD_INPUT_VEC_LONGER)
96-
== poseidon::poseidon2::Poseidon2::hash(
97-
FIELD_INPUT_VEC_LONGER.storage(),
98-
FIELD_INPUT_VEC_LONGER.len(),
99-
),
99+
assert_eq(
100+
poseidon2(FIELD_INPUT_VEC_LONGER),
101+
poseidon::poseidon2::Poseidon2::hash(
102+
FIELD_INPUT_VEC_LONGER.storage(),
103+
FIELD_INPUT_VEC_LONGER.len(),
104+
),
100105
);
101-
assert(pedersen(FIELD_INPUT_ARR) == std::hash::pedersen_hash(FIELD_INPUT_ARR));
102-
assert(sha256(U8_INPUT_ARR) == dep::sha256::sha256_var(U8_INPUT_ARR, U8_INPUT_ARR.len()));
103-
assert(
104-
keccak256(U8_INPUT_ARR) == dep::keccak256::keccak256(U8_INPUT_ARR, U8_INPUT_ARR.len()),
106+
assert_eq(pedersen(FIELD_INPUT_ARR), std::hash::pedersen_hash(FIELD_INPUT_ARR));
107+
assert_eq(sha256(U8_INPUT_ARR), dep::sha256::sha256_var(U8_INPUT_ARR, U8_INPUT_ARR.len()));
108+
assert_eq(
109+
keccak256(U8_INPUT_ARR),
110+
dep::keccak256::keccak256(U8_INPUT_ARR, U8_INPUT_ARR.len()),
105111
);
106112
}
107113
}

0 commit comments

Comments
 (0)