wyhash 0.4.0

Rust implementation of the WyHash fast portable non-cryptographic hashing algorithm and random number generator.
Documentation
extern crate core;
extern crate wyhash;
use core::hash::Hasher;
use wyhash::{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));
    }
}

#[test]
fn core_hasher() {
    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
#[allow(clippy::unreadable_literal)]
const ORIGINAL_HASHES: [u64; 256] = [
    0xf961f936e29c9345,
    0x83fcbe65126830a3,
    0xcaed38c4bfba7448,
    0xb0f941520b1ad95d,
    0x22fc0d05b5655593,
    0xaf963b6ca51ab9dd,
    0x8ae9d75ba5a841b8,
    0xfd1d46ecd66b6c3b,
    0x276e8d0315af0b78,
    0x8712dbf1d543727b,
    0x9b39e6894e1f146c,
    0xc43124ed65b41cb5,
    0xd3ddfd4520189f1c,
    0xe7a1d44fc4d6d1f,
    0x4db5af6fa882b123,
    0xe72bf394ca9aad73,
    0x9510769567e2b9f5,
    0xe4c8addf5e52d332,
    0x7bf687b31360f0d0,
    0xdb8ef4223e1e1b60,
    0x43b5b515c3fb98be,
    0x513ecead364b50c1,
    0x51a6f8a448b6d3b5,
    0xad62961a82d455ad,
    0xbcbe2c377a034906,
    0x89fbf3a60852bc2d,
    0xf26147c1df25be1,
    0x287f458f65e918b3,
    0x5055a2d6fe3503e3,
    0x872e8ec2f5234fe3,
    0xf02fc2225cccac35,
    0x855f219b5e0f78bf,
    0x39e624e60cf044f5,
    0x954b951660265062,
    0x10717cafd43c8016,
    0xaac9f9536ade0cdf,
    0x85826a82847dfb60,
    0x1ec660576eee25a0,
    0x7e3d61e547921405,
    0x48d0278d0885804,
    0xf9a12dcc5526d1ee,
    0x7f535ae5fb44c366,
    0x91436439a22f53ae,
    0x502163656e8fa341,
    0x1b456138914ce2c8,
    0x31fb06ca008488f2,
    0x224190a27cfc3ea2,
    0xd042cea2c304d169,
    0x82f97b9295a4669d,
    0xb911cc536d51aee3,
    0xf8262e139dd87df,
    0x46a7bfeb53c93a37,
    0x5b0a349881c68bbe,
    0x7346d8f965ce7a50,
    0x6aa0ce0b81b802d3,
    0xc1183d47ceb38941,
    0x3c39115f8dcb426b,
    0x920e3b4c7b45a7cf,
    0x9604099240820192,
    0x8ef3bd1d39cdd917,
    0x820a7dc133ba218d,
    0x65e4f4965178d3b3,
    0xdeb525c6a117485f,
    0x20f7c7d18e52a7ad,
    0x56d5ee41b0b04b2c,
    0x3ac5ed752a1e2b1b,
    0x32cea51b8e513aeb,
    0x6c283bcf574d8f78,
    0x8d4eba6afdee9f63,
    0xb09f641d6f577975,
    0x8dd7f0d3709abba7,
    0xad33a90846d659cf,
    0xe25fca49c58addc6,
    0x2440f6a61d350ed5,
    0x6b84724e57a33f16,
    0xb565dc3d397d2b99,
    0x614e76954d9db55c,
    0x5ba3e16e2850e8e9,
    0x3d99a751ecfbb12a,
    0xbcadde62cc4170e6,
    0x14b43b747a10e7b1,
    0x965716de200e679f,
    0xcfc034e9d99273fc,
    0xe6e24212240e06c8,
    0x7a3a43aeb5d5832,
    0x53a46badd5b1c2e4,
    0xefc8f1ca072cb287,
    0xa219af4c6017d8df,
    0xfcf81d7e062b5b4d,
    0x99f7c43b6c8d15df,
    0xfa9d43de6e2dcf8d,
    0x49440250024465e8,
    0xc93dc0341dfe68c6,
    0x7371117edfaa3cef,
    0xda507c5cc7c7861f,
    0x8dc7b9c7de61dfa0,
    0x3790aac1a0b4dc9e,
    0x69276f1b576327,
    0xdb28a344a9a89dc2,
    0xd37946ceed53eaff,
    0x20b2de3702e39858,
    0xec040b298f205b6b,
    0xe9cccd97a8752500,
    0x5a5bdffe4bc258c9,
    0xa5e6a7de6c699302,
    0xaa0ccf8a499d2fff,
    0x3f20fad08660f5fb,
    0xd43a1e26a81ac863,
    0x1071487504fb9242,
    0xc49d54d1e6eaa5b9,
    0x16a16bca2b1af019,
    0xe49a7a06061ef52e,
    0x50bf68c261a59d0c,
    0x3f8c3765bf1319b5,
    0x446d718cd877c877,
    0x22498a0894312207,
    0x6b3704625c841542,
    0xf54635bee4b04e29,
    0x12a1bbadbf348c7,
    0x31634471a17a8e1f,
    0xdb6a4520c46bcd2e,
    0x147ac2e4e291524b,
    0xb0c69df46e205428,
    0x3ec0c0555be5b93c,
    0x7e0bfc7a00dc8338,
    0xf31c5ceea850958b,
    0xb35011374d62ee22,
    0x1768495be7e5f9c4,
    0xec1d87cf207b5500,
    0x7868b46f37dde010,
    0xc564b8d538d74383,
    0xebe336d3b4b30623,
    0xf08863d276be2ab7,
    0xb1d9a06182c82353,
    0x74a76e581a2f789c,
    0xbd3bee630fabadd3,
    0xa7de866a4d63af1d,
    0x454b176b32b245fa,
    0x224606473973b6b,
    0xb5cfaa3bc3b8dfec,
    0xd5f72aa9cdabbd8e,
    0xa7a45228925ba20d,
    0x959274cf8d05674a,
    0x2ea87b477fa5c092,
    0x710aa3c765472c8f,
    0xd0a6c151ab0da3b1,
    0x323fa4b54bb6bc98,
    0xd60634f023573652,
    0x3ce86bcb32af9882,
    0x1d875561fb90c2b8,
    0x368b85acc5d3a430,
    0xfada816c75e6b3db,
    0x7772421111391ecb,
    0x6750845bb9686a33,
    0xe6e949cd5af342c0,
    0x49a2d3cb690c2e43,
    0x8d779ab8a0a1639f,
    0xde4a98c22bdaa947,
    0xc9ab33025391ea81,
    0xeb3a93d56aa8dd75,
    0x65e94f5e3d28f9da,
    0x3f9f4ffc3db07d1a,
    0x485f6aa5e1d0753,
    0xb70c36d152b9c187,
    0x2ac871e33f83fe6c,
    0x1da741e30aa10174,
    0xbbd508ad7d490b06,
    0x24deb16289cc3964,
    0xb6f1107e77327972,
    0x6615db4385b8fef0,
    0xd2e822bf0fa64e63,
    0x53ed6306086fb744,
    0xcb6b0aa0e1ee2460,
    0x3bfa4b3350270ed6,
    0x59effd2041fd4d08,
    0x43fcc61c02ca632e,
    0xaf7553a0965cfd0a,
    0xfab7185981e27a2,
    0xc3fc759bc9680c1a,
    0x32483ee8f8797b42,
    0x4eb0f9ef1b525255,
    0x9ce0ffb044ce6436,
    0x63052fb9cbcb44df,
    0x301c22b6072bd122,
    0x68b60f1bcdbe9450,
    0x1e8954848ebd28f2,
    0x104cd602bbe2e67,
    0xfcd846dc9107c76e,
    0x57d69ef746b3de04,
    0xd4837690ab53eaa8,
    0x8e50ea4999bb7894,
    0xccc1ea55a74693f6,
    0x92b51070fa1bc088,
    0x7b86c06ecff5f597,
    0x4b94fd254936b1e7,
    0x58fe1fc0c0628e01,
    0x93d5f8896977d760,
    0x761e6fad2db0b6f4,
    0x8e993cc2e5cdfcf7,
    0x36924dac5e282c71,
    0xa22cad8a04372681,
    0x4e8496a9f383addf,
    0x201b621b31a992ba,
    0xe01cf091118895e4,
    0x26459bef7953ab3a,
    0xc06fe833ea4571ee,
    0x545502fdbadb8849,
    0xf489ac975de5e0de,
    0xc578d69c4d5ff83e,
    0x146571e5cd3a0fa7,
    0x5cb7a1d4c70d6b2a,
    0x5298e3f6ffe15f0d,
    0x3682776527687209,
    0x11b19a59524fdbf2,
    0xa9590279d60a8b1b,
    0xaa3ea2c18819120a,
    0x2766ad893c1d542d,
    0xe2a47768498bd688,
    0x2e1f0a701e47296d,
    0x4f1463b2d4d0c9fb,
    0xee608c4a03fdfa31,
    0xd4d2161b72e4cb69,
    0x5fc89e3bcf8e9e6f,
    0x8ce8ad18a3a71064,
    0x1a6e3c456becb8b,
    0xe3c8a6635be383ed,
    0xf38b80a7621ddcd7,
    0x908a2152f9ac845e,
    0x8dac52b763bf028b,
    0xdf59b057044e9031,
    0xd503a0d875c98990,
    0x9ed2c1a50ead3fb1,
    0xf2fcc1704dd1128c,
    0x91eb226c91da553e,
    0x21e07a2d3a8d6450,
    0x25bc2bf14002d336,
    0x73a524c6212ede2f,
    0xc7b83f83a798fc7d,
    0x33bd8f399e8b3741,
    0xb2d48f0d7c33992b,
    0xa8a25b6b259c39cc,
    0x4aafb95636c6ff3b,
    0xf685c0c56739cbf3,
    0x5f885605ada76029,
    0x6ed22d6c51b17caf,
    0x6bfd04b4c808c0b5,
    0xab358de568fcbc61,
    0x97e42da2f992dca5,
    0xeaeee49fc4a16045,
    0xa8fef7bcce13efcc,
    0xd3c5ba9c0aaa0f44,
    0xd240d969c3f04b28,
    0x541eebca40288dc4,
    0x292768477779dc00,
    0x172788219608034c,
    0xd5024d6272206ba,
];