7个不稳定版本

0.9.0 2023年6月6日
0.8.1 2022年11月7日
0.8.0 2022年2月1日
0.7.2 2021年5月26日
0.6.0 2020年10月30日

过程宏 中排名 441

Download history 79990/week @ 2024-03-14 89747/week @ 2024-03-21 89448/week @ 2024-03-28 98607/week @ 2024-04-04 95965/week @ 2024-04-11 92864/week @ 2024-04-18 79153/week @ 2024-04-25 75470/week @ 2024-05-02 76943/week @ 2024-05-09 75815/week @ 2024-05-16 100052/week @ 2024-05-23 82435/week @ 2024-05-30 71115/week @ 2024-06-06 82242/week @ 2024-06-13 73191/week @ 2024-06-20 45897/week @ 2024-06-27

每月下载量 285,684
用于 636 个crate(2个直接使用)

MIT 许可证

41KB
665

用于自定义Multihash代码表的进程宏。

此进程宏从哈希器列表派生自定义Multihash代码表。它还生成一个名为 Multihash 的公共类型,该类型对应于指定的 alloc_size

摘要使用固定大小的栈分配。这个大小需要足够大,可以容纳任何指定的哈希摘要。这不能在编译时可靠地确定,因此需要通过 alloc_size 属性手动设置。您可能还想将其设置为比向后/向前兼容所需的大小更大的值。

如果您将 #mh(alloc_size =) 设置得太低,您将收到编译器错误。请注意,大小仅在语法级别进行检查,而不是 类型级别。这意味着摘要需要具有大小const泛型,例如有效的 usize,例如 3264

您可以通过设置 no_alloc_size_errors 属性来禁用这些编译器错误。如果您例如为哈希摘要指定了类型别名,并且您确信您使用了正确的 alloc_size 值,这可能很有用。

当您想定义自己的代码表时,您应该只依赖 multihash-derive。它为您导出 multihash crate。

示例

```ignore : proc-macro-crate 在文档中不起作用,请参阅 https://github.com/bkchr/proc-macro-crate/issues/14 use multihash_derive::{Hasher, MultihashDigest};

struct FooHasher;

实现 FooHasher 的 Hasher { // 实现哈希器 ...

fn update(&mut self, input: &[u8]) {

}

fn finalize(&mut self) -> &[u8] {

&[]

}

fn reset(&mut self) {

}

}

#[derive(Clone, Copy, Debug, Eq, MultihashDigest, PartialEq)] #[mh(alloc_size = 64)] pub enum Code { #[mh(code = 0x01, hasher = FooHasher)] Foo }

let hash = Code::Foo.digest(b"hello world!");

println!("{:02x?}", hash);

依赖关系

~3.5MB
~64K SLoC