當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust Hasher用法及代碼示例


本文簡要介紹rust語言中 Trait core::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 core::hash::Hasher。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。