u8,u8国际,u8国际官方网站,u8国际网站,u8国际网址,u8国际链接,u8体育,u8体育官网,u8体育网址,u8注册,u8体育网址,u8官方网站,u8体育APP,u8体育登录,u8体育入口
实现必须确保对等价项进行完全相同的调用序列 – 相同的方法具有相同的参数以相同的顺序。
尽管名称如此,该方法不会重置哈希器的内部状态。 额外的write将从当前值继续。 如果需要开始一个新的哈希值,则必须创建一个新的哈希器。
您通常不应该将长度前缀作为实现此方法的一部分。 在需要它的序列之前调用Hasher::write_length_prefix取决于Hash实现。
此方法仅用于提供域分离。 如果您想对表示data的一部分的usize进行散列处理,那么将其传递给Hasher::write_usize而不是此方法很重要。
如果您确定您的Hasher愿意受到 Hash-DoS 攻击,那么您可以考虑跳过以提高性能为名提供的部分或全部len的散列。
如果您正在实现Hash,您通常不需要像impl Hash for str那样调用 this,所以您应该更喜欢它。
至少有两种合理的默认方式来实现这一点。 哪一个将是默认值尚未确定,所以现在您可能想要专门覆盖它。
而且,如果您的Hasher在usize块中工作,这可能是一种非常有效的方法,因为任何更复杂的事情最终都可能比仅以长度运行一轮更慢。
str是 UTF-8 的一个好处是b\xFF字节永远不会发生。这意味着您可以将其,追加,到被散列的字节流并保持前缀自由:
这确实要求您的实现不添加额外的填充,因此通常需要您维护一个缓冲区,仅在该缓冲区已满 (或调用finish) 时运行一轮。
那是因为如果write将数据填充到固定的块大小,它很可能会以这样的方式进行,即a和a\x00最终会散列相同的事物序列,从而引入冲突。