1个不稳定版本
使用旧的Rust 2015
0.1.1 | 2016年11月30日 |
---|---|
0.1.0 |
|
#24 in #little-endian
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()
} );