#hash #stable #backward #compatibility #structured #hashing #value

stable-hash

向后兼容的稳定、结构化哈希

7个版本

0.4.3 2022年11月4日
0.4.2 2022年6月22日
0.4.1 2022年3月29日
0.3.3 2022年6月22日
0.3.1 2022年2月4日

#1076 in 算法

Download history 308/week @ 2024-04-07 770/week @ 2024-04-14 686/week @ 2024-04-21 550/week @ 2024-04-28 381/week @ 2024-05-05 616/week @ 2024-05-12 754/week @ 2024-05-19 350/week @ 2024-05-26 673/week @ 2024-06-02 522/week @ 2024-06-09 417/week @ 2024-06-16 476/week @ 2024-06-23 572/week @ 2024-06-30 155/week @ 2024-07-07 1340/week @ 2024-07-14 518/week @ 2024-07-21

2,604 每月下载量
3 个crate(2个直接)中使用

MIT 许可证

45KB
914

本crate提供了一个具有向后兼容功能的稳定、结构化哈希。这意味着什么?

  • 稳定:即使在编译器、进程、架构或std lib发生变化的情况下,该库的较小版本中的哈希值也不会改变。
  • 结构化:对结构进行哈希处理,而不是对流进行哈希处理
  • 向后兼容:在不改变哈希值的情况下,可以对结构体的模式进行有限的变化。一个变化是可以添加新字段。这是通过在哈希时跳过默认值来实现的。例如,None、0、false和vec![]的值不参与哈希。因此,Old { a: 1 }和New { a: 1, b: None }具有相同的哈希值。向后兼容的另一个特性是整数的大小可以增加而不改变值。例如,Old { a: 1u16 }和New { a: 1u32 }具有相同的哈希值。请注意,尽管允许具有不同模式的两个结构体发生冲突,但具有相同模式的两个结构体永远不会发生冲突(冲突定义为编码的注入性。在最终输出中仍然可能找到冲突,尤其是在非加密版本)

依赖关系

~3MB
~73K SLoC