4 个版本
0.2.0 | 2024年3月23日 |
---|---|
0.1.2 | 2023年11月3日 |
0.1.1 | 2023年11月3日 |
0.1.0 | 2023年11月3日 |
#1021 在 Rust 模式
14,021 每月下载量
在 36 个crate(7 个直接)中使用
12KB
84 行
对象安全的哈希 trait
此 crate 提供了一个 DynHash
trait,可用于 trait 对象。实现了标准库的 std::hash::Hash
trait 的类型可以自动由 DynHash
trait 对象使用。
示例
use dyn_hash::DynHash;
trait MyTrait: DynHash {
/* ... */
}
// Implement std::hash::Hash for dyn MyTrait
dyn_hash::hash_trait_object!(MyTrait);
// Now data structures containing Box<dyn MyTrait> can derive Hash:
#[derive(Hash)]
struct Container {
trait_object: Box<dyn MyTrait>,
}
在没有 dyn-hash crate 的情况下,一个 trait trait MyTrait: std::hash::Hash {...}
不会是对象安全的(dyn MyTrait
)。
error[E0038]: the trait `MyTrait` cannot be made into an object
--> src/main.rs:7:12
|
7 | let _: &dyn MyTrait;
| ^^^^^^^^^^^^ `MyTrait` cannot be made into an object
|
note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.net.cn/reference/items/traits.html#object-safety>
--> $SYSROOT/lib/rustlib/src/rust/library/core/src/hash/mod.rs
|
| fn hash<H: Hasher>(&self, state: &mut H);
| ^^^^ ...because method `hash` has generic type parameters
许可证
根据您的选择,此 crate 受Apache 许可证版本 2.0或MIT 许可证的许可。除非您明确声明,否则根据 Apache-2.0 许可证的约定,您有意提交给此 crate 的任何贡献都将根据上述条款双许可,不附加任何其他条款或条件。