当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust Hasher用法及代码示例


本文简要介绍rust语言中 Trait std::hash::Hasher 的用法。

用法

pub trait Hasher {
    fn finish(&self) -> u64;
    fn write(&mut self, bytes: &[u8]);

    fn write_u8(&mut self, i: u8) { ... }
    fn write_u16(&mut self, i: u16) { ... }
    fn write_u32(&mut self, i: u32) { ... }
    fn write_u64(&mut self, i: u64) { ... }
    fn write_u128(&mut self, i: u128) { ... }
    fn write_usize(&mut self, i: usize) { ... }
    fn write_i8(&mut self, i: i8) { ... }
    fn write_i16(&mut self, i: i16) { ... }
    fn write_i32(&mut self, i: i32) { ... }
    fn write_i64(&mut self, i: i64) { ... }
    fn write_i128(&mut self, i: i128) { ... }
    fn write_isize(&mut self, i: isize) { ... }
}

散列任意字节流的特征。

Hasher 的实例通常表示在散列数据时更改的状态。

Hasher 提供了一个相当基本的接口,用于检索生成的哈希(使用 finish ),并将整数和字节切片写入实例(使用 write write_u8 等)。大多数时候,Hasher 实例与 Hash 特征结合使用。

此特征不假设如何定义各种write_* 方法,并且 Hash 的实现不应假设它们以一种或另一种方式工作。例如,您不能假设 write_u32 调用等同于 write_u8 的四个调用。

例子

use std::collections::hash_map::DefaultHasher;
use std::hash::Hasher;

let mut hasher = DefaultHasher::new();

hasher.write_u32(1989);
hasher.write_u8(11);
hasher.write_u8(9);
hasher.write(b"Huh?");

println!("Hash is {:x}!", hasher.finish());

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Trait std::hash::Hasher。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。