ssw/doc/ahash/index.html
2023-01-09 19:23:20 +01:00

29 lines
8.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="AHash is a hashing algorithm is intended to be a high performance, (hardware specific), keyed hash function. This can be seen as a DOS resistant alternative to `FxHash`, or a fast equivalent to `SipHash`. It provides a high speed hash algorithm, but where the result is not predictable without knowing a Key. This allows it to be used in a `HashMap` without allowing for the possibility that an malicious user can induce a collision."><meta name="keywords" content="rust, rustlang, rust-lang, ahash"><title>ahash - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script defer src="../crates.js"></script><script defer src="../main.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../ahash/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2 class="location"></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../ahash/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Crate ahash</a></h2><div class="sidebar-elems"><div class="block"><ul><li class="version">Version 0.7.6</li><li><a id="all-types" href="all.html">All Items</a></li></ul></div><section><div class="block"><ul><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li></ul></div></section></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../ahash/index.html"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></a><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><button type="button">?</button></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../wheel.svg"></a></div></div></form></nav></div><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn"><span class="in-band">Crate <a class="mod" href="#">ahash</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../src/ahash/lib.rs.html#1-263">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>AHash is a hashing algorithm is intended to be a high performance, (hardware specific), keyed hash function.
This can be seen as a DOS resistant alternative to <code>FxHash</code>, or a fast equivalent to <code>SipHash</code>.
It provides a high speed hash algorithm, but where the result is not predictable without knowing a Key.
This allows it to be used in a <code>HashMap</code> without allowing for the possibility that an malicious user can
induce a collision.</p>
<h2 id="how-ahash-works"><a href="#how-ahash-works">How aHash works</a></h2>
<p>aHash uses the hardware AES instruction on x86 processors to provide a keyed hash function.
aHash is not a cryptographically secure hash.</p>
<h2 id="example"><a href="#example">Example</a></h2>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">ahash</span>::{<span class="ident">AHasher</span>, <span class="ident">RandomState</span>};
<span class="kw">use</span> <span class="ident">std::collections::HashMap</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">map</span>: <span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">i32</span>, <span class="ident">i32</span>, <span class="ident">RandomState</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">HashMap::default</span>();
<span class="ident">map</span>.<span class="ident">insert</span>(<span class="number">12</span>, <span class="number">34</span>);</code></pre></div>
<p>For convinence wrappers called <code>AHashMap</code> and <code>AHashSet</code> are also provided.
These to the same thing with slightly less typing.</p>
<div class='information'><div class='tooltip ignore'></div></div><div class="example-wrap"><pre class="rust rust-example-rendered ignore"><code><span class="kw">use</span> <span class="ident">ahash::AHashMap</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">map</span>: <span class="ident">AHashMap</span><span class="op">&lt;</span><span class="ident">i32</span>, <span class="ident">i32</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">AHashMap::with_capacity</span>(<span class="number">4</span>);
<span class="ident">map</span>.<span class="ident">insert</span>(<span class="number">12</span>, <span class="number">34</span>);
<span class="ident">map</span>.<span class="ident">insert</span>(<span class="number">56</span>, <span class="number">78</span>);</code></pre></div>
</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.AHasher.html" title="ahash::AHasher struct">AHasher</a></div><div class="item-right docblock-short"><p>A <code>Hasher</code> for hashing an arbitrary stream of bytes.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.RandomState.html" title="ahash::RandomState struct">RandomState</a></div><div class="item-right docblock-short"><p>Provides a <a href="std::hash::Hasher">Hasher</a> factory. This is typically used (e.g. by <a href="std::collections::HashMap">HashMap</a>) to create
<a href="struct.AHasher.html" title="AHasher">AHasher</a>s in order to hash the keys of the map. See <code>build_hasher</code> below.</p>
</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.CallHasher.html" title="ahash::CallHasher trait">CallHasher</a></div><div class="item-right docblock-short"><p>Provides a way to get an optimized hasher for a given data type.
Rather than using a Hasher generically which can hash any value, this provides a way to get a specialized hash
for a specific type. So this may be faster for primitive types.</p>
</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="ahash" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.64.0 (a55dd71d5 2022-09-19)" ></div></body></html>