[go: up one dir, main page]

wyhash 0.1.0

Rust implementation of the WyHash fast non-cryptographic hashing algorithm.
Documentation
extern crate wyhash;
use wyhash::wyhash;

#[test]
fn wyhash_test() {
    let mut data = [0; 256];
    for i in 0..data.len() {
        data[i] = i as u8;
        assert_eq!(ORIGINAL_HASHES[i], wyhash(&data[..i], i as u64));
    }
}

#[cfg(feature = "std")]
#[test]
fn std_hasher() {
    use std::hash::Hasher;
    use wyhash::WyHash;
    let mut data = [0; 256];
    for i in 0..data.len() {
        data[i] = i as u8;
        let mut hasher = WyHash::with_seed(i as u64);
        hasher.write(&data[..i]);
        assert_eq!(ORIGINAL_HASHES[i], hasher.finish());
    }
}

// Results from the cannonical C implementation
const ORIGINAL_HASHES: [u64; 256] = [
    0,
    0xcb4b8ebdf7240e2c,
    0x785e1dd42caf9874,
    0xff72c1dd91f7f9b7,
    0x5f2dc7f85d79a31c,
    0xf468ee6e6b5801ae,
    0x41516a2f070d7a56,
    0x7726512acd01026a,
    0x60b3ea47c76b7320,
    0x4ee2500d20313fb7,
    0x13f164201759a747,
    0xe94f80e3f96b4747,
    0xcca974dd233825bc,
    0x21453c75aef34b71,
    0x60089922b4f27505,
    0x80080ae6b6035b25,
    0xd1ed89121617ff6c,
    0x6172cf4b7db47100,
    0xcfab82af90ec5f18,
    0xc4445b15606656f8,
    0x980e581a44a230ed,
    0xf3e016b483b2178e,
    0x3d6508ad2fbdbe34,
    0xda1f67af5f10952e,
    0x17157178e4df2788,
    0xd178a62b795522f0,
    0xb025fb5be602f44d,
    0xcb8117838e932fd2,
    0x923df1049ebdf913,
    0xfd8e11b683cd35f2,
    0xc1ae0a8a83acd75d,
    0xb4b063437b5051eb,
    0xde1f770d512142b0,
    0x5587a2f4547c19b8,
    0x22c6500c78dda0ff,
    0x67ada50937e8b6de,
    0xd3a31912120f0fd0,
    0x213cb7b57fab3300,
    0x1de18d0868eef1a,
    0x6cda7d4b9b2ad5c8,
    0x234c67db21ccc82e,
    0x92e4a4beb9c479e5,
    0xdbf401c1812e5e04,
    0x2941337ab2412c65,
    0x346ade10d7a3a1d8,
    0xe03d1af404696fca,
    0x3df02bc11a628253,
    0x856d764c6f59b958,
    0x1a2e03cc33ae2728,
    0x1c841ea7ed6ca544,
    0xa1ea6d0cfabedfb2,
    0x212fa8fa05721ee7,
    0xe15d35f12d2c72ab,
    0x9a0476833e1cb3df,
    0x5f646ddb8f46922a,
    0xa6d67a01656e5390,
    0xc1dc88623278d1b6,
    0x1a041f58e2cac11c,
    0x307d32465e51671,
    0x428eb0f56766aed3,
    0x3fc37706c8eed57c,
    0xba508442e6b4d621,
    0x70f55bea48266c19,
    0x214c35fe05b689dd,
    0x26f99acbfa408bf4,
    0xd01d1a6977b6b0b9,
    0x71e0cb79a51ad0c4,
    0x275d844e7169b2fe,
    0xd9c9da972e6ec58b,
    0xd5531555b542f8d5,
    0x1d9b88550b2ec9a2,
    0xdaa187115e8ad3e6,
    0xacdeced7678c0af6,
    0x676b942e199eb4a5,
    0x977faaabd1cd8152,
    0x5191ac7538530082,
    0x1d356024f456b560,
    0x3e0aa9e2960b19d6,
    0x5dd4d503b22cf321,
    0x3adb8e534acad984,
    0x1ebe63e07206603b,
    0x14efc335aff8e404,
    0xdbba658e3bcd9ae5,
    0x904a01bbdd063c7d,
    0x23ac71d5667a4035,
    0x93bc78c214adf6a2,
    0xf700ad1fe1b3da8c,
    0x8b790fe3c83259c,
    0xad1324516fd0c9f8,
    0xf48d2211a0a3eaa2,
    0xac3f3b727ca6536f,
    0xd3d8e781f86beb9c,
    0x5b6bb8f2b2eea9ef,
    0x4777d40ddbe207ee,
    0x70561ea0f1a2b5cf,
    0xbfa0d4e995334a96,
    0x4baa53ded7638483,
    0x456922c973a2d35,
    0x646385175db4d1cd,
    0x8477140691cf29ab,
    0xbcf1f67bf5339436,
    0x945695899b467314,
    0xa6a7af5557f06991,
    0xdef1fbe667438c50,
    0x6006fc98c059c61c,
    0x5c474e1e243c64c3,
    0x16bd651356d9676b,
    0xa0781f61d8e1a66c,
    0x4d7cee9d1d25b2fc,
    0x90ffb72803a5c72e,
    0xe447155b1630043,
    0xc46e4dfabe4f33b1,
    0xd0d6acc9006a2e6,
    0x3fb0d7cba626ace1,
    0xa4e370467d956fb8,
    0x59869967d62a16ee,
    0xf98529ed1e726652,
    0xde68ef7ae7223fef,
    0x61ad2bac9f82d845,
    0xc4d677c2dc4636b8,
    0xc9f1283c65fe1695,
    0x654f225bda07de96,
    0x380f9fc56958a9fe,
    0x350fc9761ff927b5,
    0x7dbeb1e1165409f8,
    0x58fbd13ebc0de5f0,
    0x98bd2aa8b15c8a7b,
    0x399f66be8b7008de,
    0xfa6bb4bd62b29da0,
    0x8b8fd768ad2e1de5,
    0xf6f9a6f6fd6bba7a,
    0x348c7699d121e793,
    0x97982b99f1cd4e1f,
    0xb3552b3f3335411e,
    0x7a66d2e293199023,
    0x1f8ba7b8c433e1dc,
    0xf7bbe084b07621aa,
    0x94f7c3459a18b23b,
    0xe22759bb4e4b111d,
    0xfff37b23a1ffec7c,
    0xebab2e7a707ed573,
    0x8261cce5ac86ac62,
    0xf19c1d2448756729,
    0xd2bef204a63d314d,
    0x94950ea020b809,
    0x60f401efbab043a6,
    0xa254b6bc2d323387,
    0xd67ec15a76ed35b1,
    0x7b3fb390ba31549f,
    0xa00b427b5e37393c,
    0xbb1f45c2974c2aa1,
    0xcf698267588bfb7,
    0xb406ed4ba29de7e6,
    0x18ff60aea29b43d3,
    0xb0afb28fda21cfb6,
    0xe9220368cc59b70,
    0xd6e3389c392e0bd6,
    0xb8eada20957c7a67,
    0x4bb9726f7ffcdf24,
    0xe80ecca5284a954e,
    0x755fc6fb23ea8cf7,
    0xfa4400eed2e68376,
    0xe3b8915b9ebc81e1,
    0xfb6dd8e3649a6ebc,
    0xae623ce843993a6e,
    0x555e2753c60b1611,
    0x94ba0c67034a68fe,
    0x7971ad48eb5a37f7,
    0x5c34186a6f650605,
    0x43301d897ae522ac,
    0x5d8272cc02412562,
    0x5577da5f312856c4,
    0xfd0440074fed8666,
    0xa1fbb3aacb616f0e,
    0x83cc8dddef0d6b6d,
    0x6f1f55a89d263def,
    0x873eb148fee9e92d,
    0x84bf75db8c5e2575,
    0xa9eb218f99c5ad33,
    0xaa308ae57dd81b59,
    0xb91320ed4e34a0bf,
    0x9e54fc1b3e3d1a45,
    0x5cd47cf0ad90625a,
    0x21c10b783395a3f6,
    0x330cfe629aa084f4,
    0x4b80ef2bab38e210,
    0x56a02414116dfc7,
    0x3f0cd4171a1a9a1c,
    0x19bf4147d9d56348,
    0x53ad93fe67e4ec6e,
    0x29f0178a5a46223e,
    0x751264da9719755f,
    0xe80ef5e6f433eb6e,
    0xadf7592bcbfa7ade,
    0x650d10b50f47cac9,
    0x1bfd6f4e7a6a73ca,
    0x2f7019dd776d4393,
    0xc3be2d09bb8fff33,
    0xbd7dadef8d33710b,
    0xe5cc6033a441b73c,
    0x66773f25ed20c1aa,
    0x110cc2d744e1d8e1,
    0x5cab7b28bf56b384,
    0x17f8762f0ab61dfb,
    0xbfa3c6f68121f41,
    0x6b55c3899f03665a,
    0x6b0adcefd570653c,
    0xd9e993a7c5da9d7e,
    0xe33099d6be5dd894,
    0x811215ce6ecab618,
    0x67c731fd2e3b499c,
    0xa2825ebb808d9afe,
    0xc315c417a648863f,
    0xf3475d4e9efbfb1e,
    0xf1d67001a28a2718,
    0xe3978f468157b3b2,
    0x9aeb617913c87c6a,
    0xd1900d1675a617ff,
    0xc6e7d4e1f0f1d62d,
    0xc1a6fc9e2d531e27,
    0xb1a52dd4648ee03b,
    0x13008a5127d48def,
    0xb06e6bf24fed86e1,
    0x54ceb7932cd2791a,
    0x9a0ed68fe49cc927,
    0x45816f4370c3cf33,
    0xbf2c36d2e737871c,
    0xf6ba5153876e7642,
    0x9ad1c8ddaaa9440d,
    0xeecb3c5ac8aa6e04,
    0x84ea8f5331fd96ea,
    0x1d4d1a27066e930,
    0x40c3ed8b9373cbbf,
    0xa6a59121ddaaf312,
    0x954a35aa0d3df292,
    0x86030cf13121f7c1,
    0xda91f00260c600b,
    0x2eed8a83f745d352,
    0xc339c491711b4021,
    0x7f786992fdb30a95,
    0xc7836f1ff5c11db2,
    0x28a74e43f5a88d8d,
    0x92867fe48225d55e,
    0x639e3e9d23d5dd39,
    0x44227508ec59ec5c,
    0x4110ce594336f748,
    0xca22b20318ed7c7,
    0xad53c230a8e7780f,
    0x5e08d9123c0f9dc,
    0xf402b52b7bfe440f,
    0xe3514f4edef6437a,
    0x26cadf1fc5c7656f,
    0xb1c05910bf9d0bdd,
    0xcb7c5c37db10491a,
    0x303fe9d12cbdebff,
    0x9fca2c0672992ea6,
];