#hasher #endianness #hash #little-endian

endian-hasher

用于散列器的字节序包装器

1个不稳定版本

使用旧的Rust 2015

0.1.1 2016年11月30日
0.1.0 2016年11月30日

#24 in #little-endian

MIT/Apache

4KB

此crate为Hasher提供了包装器,可以在散列原始数值类型时改变使用的字节序。

安装

此crate与Cargo兼容,并位于crates.io上。将其添加到您的Cargo.toml

[dependencies]
endianhasher = "0.1"

使用crate的方式

extern crate endian_hasher;

use std::hash::{Hasher, SipHasher24};

use endianhasher::{HasherToLE, HasherToBE};

let mut h1 = HasherToLE(SipHasher24::new_with_keys(k0,k1));
-3i64.hash(&mut h1);
h1.finish()

lib.rs:

这些简单的包装类型可以改变散列原始数值类型时使用的字节序。

示例

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

assert_eq!( {
let mut h1 = HasherToLE(DefaultHasher::new());
h1.write_i16(-3);
h1.finish()
}, {
let mut h0 = DefaultHasher::new();
h0.write_i16( i16::to_le(-3) );
h0.finish()
} );

assert_eq!( {
let mut h1 = HasherToBE(DefaultHasher::new());
h1.write_u32(79);
h1.finish()
}, {
let mut h0 = DefaultHasher::new();
h0.write_u32( 79u32.to_be() );
h0.finish()
} );

assert_eq!( {
let mut h1 = HasherSwapBytes(DefaultHasher::new());
h1.write_u64(0x12345678);
h1.finish()
}, {
let mut h0 = DefaultHasher::new();
h0.write_u64( u64::swap_bytes(0x12345678) );
h0.finish()
} );

无运行时依赖