Skip to content

Commit 68db238

Browse files
mriiseStebalien
authored andcommitted
implement const generics
Rebased and squashed from #116. Closes #114.
1 parent ebd0d91 commit 68db238

13 files changed

+319
-397
lines changed

Cargo.lock

+11-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ derive = ["multihash-derive"]
2323
arb = ["quickcheck", "rand"]
2424
secure-hashes = ["blake2b", "blake2s", "blake3", "sha2", "sha3"]
2525
scale-codec = ["parity-scale-codec"]
26-
serde-codec = ["serde", "generic-array/serde"]
26+
serde-codec = ["serde", "serde-big-array"]
2727

2828
blake2b = ["blake2b_simd"]
2929
blake2s = ["blake2s_simd"]
@@ -34,11 +34,11 @@ sha3 = ["digest", "sha-3"]
3434
strobe = ["strobe-rs"]
3535

3636
[dependencies]
37-
generic-array = "0.14.4"
3837
parity-scale-codec = { version = "2.1.1", default-features = false, features = ["derive"], optional = true }
3938
quickcheck = { version = "0.9.2", optional = true }
4039
rand = { version = "0.7.3", optional = true }
41-
serde = { version = "1.0.116", default-features = false, features = ["derive"], optional = true }
40+
serde = { version = "1.0.116", optional = true, default-features = false, features = ["derive"] }
41+
serde-big-array = { version = "0.3.2", optional = true, features = ["const-generics"] }
4242
multihash-derive = { version = "0.7.2", path = "derive", default-features = false, optional = true }
4343
unsigned-varint = { version = "0.7.0", default-features = false }
4444

README.md

+6-4
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ multihash = "*"
3333

3434
Then run `cargo build`.
3535

36+
MSRV 1.51.0 due to use of const generics
37+
3638
## Usage
3739

3840
```rust
@@ -50,14 +52,14 @@ You can derive your own application specific code table:
5052

5153
```rust
5254
use multihash::derive::Multihash;
53-
use multihash::{MultihashDigest, U32, U64};
55+
use multihash::MultihashCode;
5456

5557
#[derive(Clone, Copy, Debug, Eq, Multihash, PartialEq)]
56-
#[mh(alloc_size = U64)]
58+
#[mh(alloc_size = 64)]
5759
pub enum Code {
58-
#[mh(code = 0x01, hasher = multihash::Sha2_256, digest = multihash::Sha2Digest<U32>)]
60+
#[mh(code = 0x01, hasher = multihash::Sha2_256, digest = multihash::Sha2Digest<32>)]
5961
Foo,
60-
#[mh(code = 0x02, hasher = multihash::Sha2_512, digest = multihash::Sha2Digest<U64>)]
62+
#[mh(code = 0x02, hasher = multihash::Sha2_512, digest = multihash::Sha2Digest<64>)]
6163
Bar,
6264
}
6365

derive/src/lib.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
//!
99
//! If you set `#mh(alloc_size = …)` to a too low value, you will get compiler errors. Please note
1010
//! the the sizes are checked only on a syntactic level and *not* on the type level. This means
11-
//! that digest need to have a size generic, which is a valid `typenum`, for example `U32` or
12-
//! `generic_array::typenum::U64`.
11+
//! that digest need to have a size const generic, which is a valid `usize`, for example `32` or
12+
//! `64`.
1313
//!
1414
//! You can disable those compiler errors with setting the `no_alloc_size_errors` attribute. This
1515
//! can be useful if you e.g. have specified type aliases for your hash digests and you are sure
@@ -19,14 +19,14 @@
1919
//!
2020
//! ```
2121
//! use multihash::derive::Multihash;
22-
//! use multihash::{MultihashDigest, U32, U64};
22+
//! use multihash::MultihashDigest;
2323
//!
2424
//! #[derive(Clone, Copy, Debug, Eq, Multihash, PartialEq)]
25-
//! #[mh(alloc_size = U64)]
25+
//! #[mh(alloc_size = 64)]
2626
//! pub enum Code {
27-
//! #[mh(code = 0x01, hasher = multihash::Sha2_256, digest = multihash::Sha2Digest<U32>)]
27+
//! #[mh(code = 0x01, hasher = multihash::Sha2_256, digest = multihash::Sha2Digest<32>)]
2828
//! Foo,
29-
//! #[mh(code = 0x02, hasher = multihash::Sha2_512, digest = multihash::Sha2Digest<U64>)]
29+
//! #[mh(code = 0x02, hasher = multihash::Sha2_512, digest = multihash::Sha2Digest<64>)]
3030
//! Bar,
3131
//! }
3232
//!

0 commit comments

Comments
 (0)