| <!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="An LRU Cache"><meta name="keywords" content="rust, rustlang, rust-lang, LruCache"><title>LruCache in lru - 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" href="../normalize.css"><link rel="stylesheet" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../ayu.css" disabled><link rel="stylesheet" href="../dark.css" disabled><link rel="stylesheet" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script defer src="sidebar-items.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 struct"><!--[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">☰</button><a class="sidebar-logo" href="../lru/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../lru/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">LruCache</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.cap">cap</a></li><li><a href="#method.clear">clear</a></li><li><a href="#method.contains">contains</a></li><li><a href="#method.get">get</a></li><li><a href="#method.get_mut">get_mut</a></li><li><a href="#method.get_or_insert">get_or_insert</a></li><li><a href="#method.is_empty">is_empty</a></li><li><a href="#method.iter">iter</a></li><li><a href="#method.iter_mut">iter_mut</a></li><li><a href="#method.len">len</a></li><li><a href="#method.new">new</a></li><li><a href="#method.peek">peek</a></li><li><a href="#method.peek_lru">peek_lru</a></li><li><a href="#method.peek_mut">peek_mut</a></li><li><a href="#method.pop">pop</a></li><li><a href="#method.pop_entry">pop_entry</a></li><li><a href="#method.pop_lru">pop_lru</a></li><li><a href="#method.push">push</a></li><li><a href="#method.put">put</a></li><li><a href="#method.resize">resize</a></li><li><a href="#method.unbounded">unbounded</a></li><li><a href="#method.unbounded_with_hasher">unbounded_with_hasher</a></li><li><a href="#method.with_hasher">with_hasher</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Debug-for-LruCache%3CK%2C%20V%3E">Debug</a></li><li><a href="#impl-Drop-for-LruCache%3CK%2C%20V%2C%20S%3E">Drop</a></li><li><a href="#impl-IntoIterator-for-%26%27a%20LruCache%3CK%2C%20V%2C%20S%3E">IntoIterator</a></li><li><a href="#impl-IntoIterator-for-%26%27a%20mut%20LruCache%3CK%2C%20V%2C%20S%3E">IntoIterator</a></li><li><a href="#impl-IntoIterator-for-LruCache%3CK%2C%20V%3E">IntoIterator</a></li><li><a href="#impl-Send-for-LruCache%3CK%2C%20V%2C%20S%3E">Send</a></li><li><a href="#impl-Sync-for-LruCache%3CK%2C%20V%2C%20S%3E">Sync</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-LruCache%3CK%2C%20V%2C%20S%3E">RefUnwindSafe</a></li><li><a href="#impl-Unpin-for-LruCache%3CK%2C%20V%2C%20S%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-LruCache%3CK%2C%20V%2C%20S%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-LruCache%3CK%2C%20V%2C%20S%3E">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-LruCache%3CK%2C%20V%2C%20S%3E">Borrow<T></a></li><li><a href="#impl-BorrowMut%3CT%3E-for-LruCache%3CK%2C%20V%2C%20S%3E">BorrowMut<T></a></li><li><a href="#impl-From%3CT%3E-for-LruCache%3CK%2C%20V%2C%20S%3E">From<T></a></li><li><a href="#impl-Into%3CU%3E-for-LruCache%3CK%2C%20V%2C%20S%3E">Into<U></a></li><li><a href="#impl-TryFrom%3CU%3E-for-LruCache%3CK%2C%20V%2C%20S%3E">TryFrom<U></a></li><li><a href="#impl-TryInto%3CU%3E-for-LruCache%3CK%2C%20V%2C%20S%3E">TryInto<U></a></li></ul></section><h2><a href="index.html">In lru</a></h2></div></nav><main><div class="width-limiter"><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"><a href="../help.html">?</a></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><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="index.html">lru</a>::<wbr><a class="struct" href="#">LruCache</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></h1><span class="out-of-band"><a class="srclink" href="../src/lru/lib.rs.html#189-196">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct LruCache<K, V, S = <a class="type" href="type.DefaultHasher.html" title="type lru::DefaultHasher">DefaultHasher</a>> { /* private fields */ }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An LRU Cache</p> |
| </div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-LruCache%3CK%2C%20V%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#198-222">source</a><a href="#impl-LruCache%3CK%2C%20V%3E" class="anchor"></a><h3 class="code-header">impl<K: Hash + Eq, V> <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#207-209">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>(cap: usize) -> <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V></h4></section></summary><div class="docblock"><p>Creates a new LRU Cache that holds at most <code>cap</code> items.</p> |
| <h5 id="example"><a href="#example">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache: LruCache<isize, <span class="kw-2">&</span>str> = LruCache::new(<span class="number">10</span>);</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.unbounded" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#219-221">source</a><h4 class="code-header">pub fn <a href="#method.unbounded" class="fnname">unbounded</a>() -> <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V></h4></section></summary><div class="docblock"><p>Creates a new LRU Cache that never automatically evicts items.</p> |
| <h5 id="example-1"><a href="#example-1">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache: LruCache<isize, <span class="kw-2">&</span>str> = LruCache::unbounded();</code></pre></div> |
| </div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#224-908">source</a><a href="#impl-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<K: Hash + Eq, V, S: BuildHasher> <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V, S></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.with_hasher" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#236-238">source</a><h4 class="code-header">pub fn <a href="#method.with_hasher" class="fnname">with_hasher</a>(cap: usize, hash_builder: S) -> <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V, S></h4></section></summary><div class="docblock"><p>Creates a new LRU Cache that holds at most <code>cap</code> items and |
| uses the provided hash builder to hash keys.</p> |
| <h5 id="example-2"><a href="#example-2">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::{LruCache, DefaultHasher}; |
| |
| <span class="kw">let </span>s = DefaultHasher::default(); |
| <span class="kw">let </span><span class="kw-2">mut </span>cache: LruCache<isize, <span class="kw-2">&</span>str> = LruCache::with_hasher(<span class="number">10</span>, s);</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.unbounded_with_hasher" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#251-253">source</a><h4 class="code-header">pub fn <a href="#method.unbounded_with_hasher" class="fnname">unbounded_with_hasher</a>(hash_builder: S) -> <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V, S></h4></section></summary><div class="docblock"><p>Creates a new LRU Cache that never automatically evicts items and |
| uses the provided hash builder to hash keys.</p> |
| <h5 id="example-3"><a href="#example-3">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::{LruCache, DefaultHasher}; |
| |
| <span class="kw">let </span>s = DefaultHasher::default(); |
| <span class="kw">let </span><span class="kw-2">mut </span>cache: LruCache<isize, <span class="kw-2">&</span>str> = LruCache::unbounded_with_hasher(s);</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.put" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#290-292">source</a><h4 class="code-header">pub fn <a href="#method.put" class="fnname">put</a>(&mut self, k: K, v: V) -> Option<V></h4></section></summary><div class="docblock"><p>Puts a key-value pair into cache. If the key already exists in the cache, then it updates |
| the key’s value and returns the old value. Otherwise, <code>None</code> is returned.</p> |
| <h5 id="example-4"><a href="#example-4">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| |
| <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, cache.put(<span class="number">1</span>, <span class="string">"a"</span>)); |
| <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, cache.put(<span class="number">2</span>, <span class="string">"b"</span>)); |
| <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"b"</span>), cache.put(<span class="number">2</span>, <span class="string">"beta"</span>)); |
| |
| <span class="macro">assert_eq!</span>(cache.get(<span class="kw-2">&</span><span class="number">1</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"a"</span>)); |
| <span class="macro">assert_eq!</span>(cache.get(<span class="kw-2">&</span><span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"beta"</span>));</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.push" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#317-319">source</a><h4 class="code-header">pub fn <a href="#method.push" class="fnname">push</a>(&mut self, k: K, v: V) -> Option<(K, V)></h4></section></summary><div class="docblock"><p>Pushes a key-value pair into the cache. If an entry with key <code>k</code> already exists in |
| the cache or another cache entry is removed (due to the lru’s capacity), |
| then it returns the old entry’s key-value pair. Otherwise, returns <code>None</code>.</p> |
| <h5 id="example-5"><a href="#example-5">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| |
| <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, cache.push(<span class="number">1</span>, <span class="string">"a"</span>)); |
| <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, cache.push(<span class="number">2</span>, <span class="string">"b"</span>)); |
| |
| <span class="comment">// This push call returns (2, "b") because that was previously 2's entry in the cache. |
| </span><span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>((<span class="number">2</span>, <span class="string">"b"</span>)), cache.push(<span class="number">2</span>, <span class="string">"beta"</span>)); |
| |
| <span class="comment">// This push call returns (1, "a") because the cache is at capacity and 1's entry was the lru entry. |
| </span><span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>((<span class="number">1</span>, <span class="string">"a"</span>)), cache.push(<span class="number">3</span>, <span class="string">"alpha"</span>)); |
| |
| <span class="macro">assert_eq!</span>(cache.get(<span class="kw-2">&</span><span class="number">1</span>), <span class="prelude-val">None</span>); |
| <span class="macro">assert_eq!</span>(cache.get(<span class="kw-2">&</span><span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"beta"</span>)); |
| <span class="macro">assert_eq!</span>(cache.get(<span class="kw-2">&</span><span class="number">3</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"alpha"</span>));</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#401-416">source</a><h4 class="code-header">pub fn <a href="#method.get" class="fnname">get</a><'a, Q>(&'a mut self, k: &Q) -> Option<&'a V><span class="where fmt-newline">where<br> KeyRef<K>: Borrow<Q>,<br> Q: Hash + Eq + ?Sized,</span></h4></section></summary><div class="docblock"><p>Returns a reference to the value of the key in the cache or <code>None</code> if it is not |
| present in the cache. Moves the key to the head of the LRU list if it exists.</p> |
| <h5 id="example-6"><a href="#example-6">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| |
| cache.put(<span class="number">1</span>, <span class="string">"a"</span>); |
| cache.put(<span class="number">2</span>, <span class="string">"b"</span>); |
| cache.put(<span class="number">2</span>, <span class="string">"c"</span>); |
| cache.put(<span class="number">3</span>, <span class="string">"d"</span>); |
| |
| <span class="macro">assert_eq!</span>(cache.get(<span class="kw-2">&</span><span class="number">1</span>), <span class="prelude-val">None</span>); |
| <span class="macro">assert_eq!</span>(cache.get(<span class="kw-2">&</span><span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"c"</span>)); |
| <span class="macro">assert_eq!</span>(cache.get(<span class="kw-2">&</span><span class="number">3</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"d"</span>));</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_mut" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#436-451">source</a><h4 class="code-header">pub fn <a href="#method.get_mut" class="fnname">get_mut</a><'a, Q>(&'a mut self, k: &Q) -> Option<&'a mut V><span class="where fmt-newline">where<br> KeyRef<K>: Borrow<Q>,<br> Q: Hash + Eq + ?Sized,</span></h4></section></summary><div class="docblock"><p>Returns a mutable reference to the value of the key in the cache or <code>None</code> if it |
| is not present in the cache. Moves the key to the head of the LRU list if it exists.</p> |
| <h5 id="example-7"><a href="#example-7">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| |
| cache.put(<span class="string">"apple"</span>, <span class="number">8</span>); |
| cache.put(<span class="string">"banana"</span>, <span class="number">4</span>); |
| cache.put(<span class="string">"banana"</span>, <span class="number">6</span>); |
| cache.put(<span class="string">"pear"</span>, <span class="number">2</span>); |
| |
| <span class="macro">assert_eq!</span>(cache.get_mut(<span class="kw-2">&</span><span class="string">"apple"</span>), <span class="prelude-val">None</span>); |
| <span class="macro">assert_eq!</span>(cache.get_mut(<span class="kw-2">&</span><span class="string">"banana"</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&mut </span><span class="number">6</span>)); |
| <span class="macro">assert_eq!</span>(cache.get_mut(<span class="kw-2">&</span><span class="string">"pear"</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&mut </span><span class="number">2</span>));</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_or_insert" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#477-504">source</a><h4 class="code-header">pub fn <a href="#method.get_or_insert" class="fnname">get_or_insert</a><'a, F>(&'a mut self, k: K, f: F) -> Option<&'a V><span class="where fmt-newline">where<br> F: FnOnce() -> V,</span></h4></section></summary><div class="docblock"><p>Returns a reference to the value of the key in the cache if it is |
| present in the cache and moves the key to the head of the LRU list. |
| If the key does not exist the provided <code>FnOnce</code> is used to populate |
| the list and a reference is returned.</p> |
| <p>This method will only return <code>None</code> when the capacity of the cache is 0 and no entries |
| can be populated.</p> |
| <h5 id="example-8"><a href="#example-8">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| |
| cache.put(<span class="number">1</span>, <span class="string">"a"</span>); |
| cache.put(<span class="number">2</span>, <span class="string">"b"</span>); |
| cache.put(<span class="number">2</span>, <span class="string">"c"</span>); |
| cache.put(<span class="number">3</span>, <span class="string">"d"</span>); |
| |
| <span class="macro">assert_eq!</span>(cache.get_or_insert(<span class="number">2</span>, ||<span class="string">"a"</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"c"</span>)); |
| <span class="macro">assert_eq!</span>(cache.get_or_insert(<span class="number">3</span>, ||<span class="string">"a"</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"d"</span>)); |
| <span class="macro">assert_eq!</span>(cache.get_or_insert(<span class="number">1</span>, ||<span class="string">"a"</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"a"</span>)); |
| <span class="macro">assert_eq!</span>(cache.get_or_insert(<span class="number">1</span>, ||<span class="string">"b"</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"a"</span>));</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.peek" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#522-530">source</a><h4 class="code-header">pub fn <a href="#method.peek" class="fnname">peek</a><'a, Q>(&'a self, k: &Q) -> Option<&'a V><span class="where fmt-newline">where<br> KeyRef<K>: Borrow<Q>,<br> Q: Hash + Eq + ?Sized,</span></h4></section></summary><div class="docblock"><p>Returns a reference to the value corresponding to the key in the cache or <code>None</code> if it is |
| not present in the cache. Unlike <code>get</code>, <code>peek</code> does not update the LRU list so the key’s |
| position will be unchanged.</p> |
| <h5 id="example-9"><a href="#example-9">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| |
| cache.put(<span class="number">1</span>, <span class="string">"a"</span>); |
| cache.put(<span class="number">2</span>, <span class="string">"b"</span>); |
| |
| <span class="macro">assert_eq!</span>(cache.peek(<span class="kw-2">&</span><span class="number">1</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"a"</span>)); |
| <span class="macro">assert_eq!</span>(cache.peek(<span class="kw-2">&</span><span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"b"</span>));</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.peek_mut" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#548-557">source</a><h4 class="code-header">pub fn <a href="#method.peek_mut" class="fnname">peek_mut</a><'a, Q>(&'a mut self, k: &Q) -> Option<&'a mut V><span class="where fmt-newline">where<br> KeyRef<K>: Borrow<Q>,<br> Q: Hash + Eq + ?Sized,</span></h4></section></summary><div class="docblock"><p>Returns a mutable reference to the value corresponding to the key in the cache or <code>None</code> |
| if it is not present in the cache. Unlike <code>get_mut</code>, <code>peek_mut</code> does not update the LRU |
| list so the key’s position will be unchanged.</p> |
| <h5 id="example-10"><a href="#example-10">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| |
| cache.put(<span class="number">1</span>, <span class="string">"a"</span>); |
| cache.put(<span class="number">2</span>, <span class="string">"b"</span>); |
| |
| <span class="macro">assert_eq!</span>(cache.peek_mut(<span class="kw-2">&</span><span class="number">1</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&mut </span><span class="string">"a"</span>)); |
| <span class="macro">assert_eq!</span>(cache.peek_mut(<span class="kw-2">&</span><span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&mut </span><span class="string">"b"</span>));</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.peek_lru" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#574-587">source</a><h4 class="code-header">pub fn <a href="#method.peek_lru" class="fnname">peek_lru</a><'a>(&self) -> Option<(&'a K, &'a V)></h4></section></summary><div class="docblock"><p>Returns the value corresponding to the least recently used item or <code>None</code> if the |
| cache is empty. Like <code>peek</code>, <code>peek_lru</code> does not update the LRU list so the item’s |
| position will be unchanged.</p> |
| <h5 id="example-11"><a href="#example-11">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| |
| cache.put(<span class="number">1</span>, <span class="string">"a"</span>); |
| cache.put(<span class="number">2</span>, <span class="string">"b"</span>); |
| |
| <span class="macro">assert_eq!</span>(cache.peek_lru(), <span class="prelude-val">Some</span>((<span class="kw-2">&</span><span class="number">1</span>, <span class="kw-2">&</span><span class="string">"a"</span>)));</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.contains" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#606-612">source</a><h4 class="code-header">pub fn <a href="#method.contains" class="fnname">contains</a><Q>(&self, k: &Q) -> bool<span class="where fmt-newline">where<br> KeyRef<K>: Borrow<Q>,<br> Q: Hash + Eq + ?Sized,</span></h4></section></summary><div class="docblock"><p>Returns a bool indicating whether the given key is in the cache. Does not update the |
| LRU list.</p> |
| <h5 id="example-12"><a href="#example-12">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| |
| cache.put(<span class="number">1</span>, <span class="string">"a"</span>); |
| cache.put(<span class="number">2</span>, <span class="string">"b"</span>); |
| cache.put(<span class="number">3</span>, <span class="string">"c"</span>); |
| |
| <span class="macro">assert!</span>(!cache.contains(<span class="kw-2">&</span><span class="number">1</span>)); |
| <span class="macro">assert!</span>(cache.contains(<span class="kw-2">&</span><span class="number">2</span>)); |
| <span class="macro">assert!</span>(cache.contains(<span class="kw-2">&</span><span class="number">3</span>));</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.pop" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#630-646">source</a><h4 class="code-header">pub fn <a href="#method.pop" class="fnname">pop</a><Q>(&mut self, k: &Q) -> Option<V><span class="where fmt-newline">where<br> KeyRef<K>: Borrow<Q>,<br> Q: Hash + Eq + ?Sized,</span></h4></section></summary><div class="docblock"><p>Removes and returns the value corresponding to the key from the cache or |
| <code>None</code> if it does not exist.</p> |
| <h5 id="example-13"><a href="#example-13">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| |
| cache.put(<span class="number">2</span>, <span class="string">"a"</span>); |
| |
| <span class="macro">assert_eq!</span>(cache.pop(<span class="kw-2">&</span><span class="number">1</span>), <span class="prelude-val">None</span>); |
| <span class="macro">assert_eq!</span>(cache.pop(<span class="kw-2">&</span><span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="string">"a"</span>)); |
| <span class="macro">assert_eq!</span>(cache.pop(<span class="kw-2">&</span><span class="number">2</span>), <span class="prelude-val">None</span>); |
| <span class="macro">assert_eq!</span>(cache.len(), <span class="number">0</span>);</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.pop_entry" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#666-679">source</a><h4 class="code-header">pub fn <a href="#method.pop_entry" class="fnname">pop_entry</a><Q>(&mut self, k: &Q) -> Option<(K, V)><span class="where fmt-newline">where<br> KeyRef<K>: Borrow<Q>,<br> Q: Hash + Eq + ?Sized,</span></h4></section></summary><div class="docblock"><p>Removes and returns the key and the value corresponding to the key from the cache or |
| <code>None</code> if it does not exist.</p> |
| <h5 id="example-14"><a href="#example-14">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| |
| cache.put(<span class="number">1</span>, <span class="string">"a"</span>); |
| cache.put(<span class="number">2</span>, <span class="string">"a"</span>); |
| |
| <span class="macro">assert_eq!</span>(cache.pop(<span class="kw-2">&</span><span class="number">1</span>), <span class="prelude-val">Some</span>(<span class="string">"a"</span>)); |
| <span class="macro">assert_eq!</span>(cache.pop_entry(<span class="kw-2">&</span><span class="number">2</span>), <span class="prelude-val">Some</span>((<span class="number">2</span>, <span class="string">"a"</span>))); |
| <span class="macro">assert_eq!</span>(cache.pop(<span class="kw-2">&</span><span class="number">1</span>), <span class="prelude-val">None</span>); |
| <span class="macro">assert_eq!</span>(cache.pop_entry(<span class="kw-2">&</span><span class="number">2</span>), <span class="prelude-val">None</span>); |
| <span class="macro">assert_eq!</span>(cache.len(), <span class="number">0</span>);</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.pop_lru" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#700-706">source</a><h4 class="code-header">pub fn <a href="#method.pop_lru" class="fnname">pop_lru</a>(&mut self) -> Option<(K, V)></h4></section></summary><div class="docblock"><p>Removes and returns the key and value corresponding to the least recently |
| used item or <code>None</code> if the cache is empty.</p> |
| <h5 id="example-15"><a href="#example-15">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| |
| cache.put(<span class="number">2</span>, <span class="string">"a"</span>); |
| cache.put(<span class="number">3</span>, <span class="string">"b"</span>); |
| cache.put(<span class="number">4</span>, <span class="string">"c"</span>); |
| cache.get(<span class="kw-2">&</span><span class="number">3</span>); |
| |
| <span class="macro">assert_eq!</span>(cache.pop_lru(), <span class="prelude-val">Some</span>((<span class="number">4</span>, <span class="string">"c"</span>))); |
| <span class="macro">assert_eq!</span>(cache.pop_lru(), <span class="prelude-val">Some</span>((<span class="number">3</span>, <span class="string">"b"</span>))); |
| <span class="macro">assert_eq!</span>(cache.pop_lru(), <span class="prelude-val">None</span>); |
| <span class="macro">assert_eq!</span>(cache.len(), <span class="number">0</span>);</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.len" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#726-728">source</a><h4 class="code-header">pub fn <a href="#method.len" class="fnname">len</a>(&self) -> usize</h4></section></summary><div class="docblock"><p>Returns the number of key-value pairs that are currently in the the cache.</p> |
| <h5 id="example-16"><a href="#example-16">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| <span class="macro">assert_eq!</span>(cache.len(), <span class="number">0</span>); |
| |
| cache.put(<span class="number">1</span>, <span class="string">"a"</span>); |
| <span class="macro">assert_eq!</span>(cache.len(), <span class="number">1</span>); |
| |
| cache.put(<span class="number">2</span>, <span class="string">"b"</span>); |
| <span class="macro">assert_eq!</span>(cache.len(), <span class="number">2</span>); |
| |
| cache.put(<span class="number">3</span>, <span class="string">"c"</span>); |
| <span class="macro">assert_eq!</span>(cache.len(), <span class="number">2</span>);</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_empty" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#742-744">source</a><h4 class="code-header">pub fn <a href="#method.is_empty" class="fnname">is_empty</a>(&self) -> bool</h4></section></summary><div class="docblock"><p>Returns a bool indicating whether the cache is empty or not.</p> |
| <h5 id="example-17"><a href="#example-17">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">2</span>); |
| <span class="macro">assert!</span>(cache.is_empty()); |
| |
| cache.put(<span class="number">1</span>, <span class="string">"a"</span>); |
| <span class="macro">assert!</span>(!cache.is_empty());</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cap" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#755-757">source</a><h4 class="code-header">pub fn <a href="#method.cap" class="fnname">cap</a>(&self) -> usize</h4></section></summary><div class="docblock"><p>Returns the maximum number of key-value pairs the cache can hold.</p> |
| <h5 id="example-18"><a href="#example-18">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache: LruCache<isize, <span class="kw-2">&</span>str> = LruCache::new(<span class="number">2</span>); |
| <span class="macro">assert_eq!</span>(cache.cap(), <span class="number">2</span>);</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.resize" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#780-792">source</a><h4 class="code-header">pub fn <a href="#method.resize" class="fnname">resize</a>(&mut self, cap: usize)</h4></section></summary><div class="docblock"><p>Resizes the cache. If the new capacity is smaller than the size of the current |
| cache any entries past the new capacity are discarded.</p> |
| <h5 id="example-19"><a href="#example-19">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache: LruCache<isize, <span class="kw-2">&</span>str> = LruCache::new(<span class="number">2</span>); |
| |
| cache.put(<span class="number">1</span>, <span class="string">"a"</span>); |
| cache.put(<span class="number">2</span>, <span class="string">"b"</span>); |
| cache.resize(<span class="number">4</span>); |
| cache.put(<span class="number">3</span>, <span class="string">"c"</span>); |
| cache.put(<span class="number">4</span>, <span class="string">"d"</span>); |
| |
| <span class="macro">assert_eq!</span>(cache.len(), <span class="number">4</span>); |
| <span class="macro">assert_eq!</span>(cache.get(<span class="kw-2">&</span><span class="number">1</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"a"</span>)); |
| <span class="macro">assert_eq!</span>(cache.get(<span class="kw-2">&</span><span class="number">2</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"b"</span>)); |
| <span class="macro">assert_eq!</span>(cache.get(<span class="kw-2">&</span><span class="number">3</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"c"</span>)); |
| <span class="macro">assert_eq!</span>(cache.get(<span class="kw-2">&</span><span class="number">4</span>), <span class="prelude-val">Some</span>(<span class="kw-2">&</span><span class="string">"d"</span>));</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clear" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#812-814">source</a><h4 class="code-header">pub fn <a href="#method.clear" class="fnname">clear</a>(&mut self)</h4></section></summary><div class="docblock"><p>Clears the contents of the cache.</p> |
| <h5 id="example-20"><a href="#example-20">Example</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| <span class="kw">let </span><span class="kw-2">mut </span>cache: LruCache<isize, <span class="kw-2">&</span>str> = LruCache::new(<span class="number">2</span>); |
| <span class="macro">assert_eq!</span>(cache.len(), <span class="number">0</span>); |
| |
| cache.put(<span class="number">1</span>, <span class="string">"a"</span>); |
| <span class="macro">assert_eq!</span>(cache.len(), <span class="number">1</span>); |
| |
| cache.put(<span class="number">2</span>, <span class="string">"b"</span>); |
| <span class="macro">assert_eq!</span>(cache.len(), <span class="number">2</span>); |
| |
| cache.clear(); |
| <span class="macro">assert_eq!</span>(cache.len(), <span class="number">0</span>);</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#833-840">source</a><h4 class="code-header">pub fn <a href="#method.iter" class="fnname">iter</a>(&self) -> <a class="struct" href="struct.Iter.html" title="struct lru::Iter">Iter</a><'_, K, V><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.Iter.html" title="struct lru::Iter">Iter</a><'a, K, V></span><code class="content"><span class="where fmt-newline">impl<'a, K, V> Iterator for <a class="struct" href="struct.Iter.html" title="struct lru::Iter">Iter</a><'a, K, V></span><span class="where fmt-newline"> type <a class="associatedtype">Item</a> = (&'a K, &'a V);</span></code></span></span></span></span></h4></section></summary><div class="docblock"><p>An iterator visiting all entries in most-recently used order. The iterator element type is |
| <code>(&K, &V)</code>.</p> |
| <h5 id="examples"><a href="#examples">Examples</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">3</span>); |
| cache.put(<span class="string">"a"</span>, <span class="number">1</span>); |
| cache.put(<span class="string">"b"</span>, <span class="number">2</span>); |
| cache.put(<span class="string">"c"</span>, <span class="number">3</span>); |
| |
| <span class="kw">for </span>(key, val) <span class="kw">in </span>cache.iter() { |
| <span class="macro">println!</span>(<span class="string">"key: {} val: {}"</span>, key, val); |
| }</code></pre></div> |
| </div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter_mut" class="method has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#868-875">source</a><h4 class="code-header">pub fn <a href="#method.iter_mut" class="fnname">iter_mut</a>(&mut self) -> <a class="struct" href="struct.IterMut.html" title="struct lru::IterMut">IterMut</a><'_, K, V><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.IterMut.html" title="struct lru::IterMut">IterMut</a><'a, K, V></span><code class="content"><span class="where fmt-newline">impl<'a, K, V> Iterator for <a class="struct" href="struct.IterMut.html" title="struct lru::IterMut">IterMut</a><'a, K, V></span><span class="where fmt-newline"> type <a class="associatedtype">Item</a> = (&'a K, &'a mut V);</span></code></span></span></span></span></h4></section></summary><div class="docblock"><p>An iterator visiting all entries in most-recently-used order, giving a mutable reference on |
| V. The iterator element type is <code>(&K, &mut V)</code>.</p> |
| <h5 id="examples-1"><a href="#examples-1">Examples</a></h5> |
| <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>lru::LruCache; |
| |
| <span class="kw">struct </span>HddBlock { |
| dirty: bool, |
| data: [u8; <span class="number">512</span>] |
| } |
| |
| <span class="kw">let </span><span class="kw-2">mut </span>cache = LruCache::new(<span class="number">3</span>); |
| cache.put(<span class="number">0</span>, HddBlock { dirty: <span class="bool-val">false</span>, data: [<span class="number">0x00</span>; <span class="number">512</span>]}); |
| cache.put(<span class="number">1</span>, HddBlock { dirty: <span class="bool-val">true</span>, data: [<span class="number">0x55</span>; <span class="number">512</span>]}); |
| cache.put(<span class="number">2</span>, HddBlock { dirty: <span class="bool-val">true</span>, data: [<span class="number">0x77</span>; <span class="number">512</span>]}); |
| |
| <span class="comment">// write dirty blocks to disk. |
| </span><span class="kw">for </span>(block_id, block) <span class="kw">in </span>cache.iter_mut() { |
| <span class="kw">if </span>block.dirty { |
| <span class="comment">// write block to disk |
| </span>block.dirty = <span class="bool-val">false |
| </span>} |
| }</code></pre></div> |
| </div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-LruCache%3CK%2C%20V%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#949-956">source</a><a href="#impl-Debug-for-LruCache%3CK%2C%20V%3E" class="anchor"></a><h3 class="code-header">impl<K: Hash + Eq, V> Debug for <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#950-955">source</a><a href="#method.fmt" class="anchor"></a><h4 class="code-header">fn <a class="fnname">fmt</a>(&self, f: &mut Formatter<'_>) -> Result</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Drop-for-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#910-923">source</a><a href="#impl-Drop-for-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<K, V, S> Drop for <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V, S></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#911-922">source</a><a href="#method.drop" class="anchor"></a><h4 class="code-header">fn <a class="fnname">drop</a>(&mut self)</h4></section></summary><div class='docblock'>Executes the destructor for this type. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-IntoIterator-for-%26%27a%20LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#925-932">source</a><a href="#impl-IntoIterator-for-%26%27a%20LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<'a, K: Hash + Eq, V, S: BuildHasher> IntoIterator for &'a <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V, S></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Item" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Item</a> = (&'a K, &'a V)</h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.IntoIter" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.IntoIter" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">IntoIter</a> = <a class="struct" href="struct.Iter.html" title="struct lru::Iter">Iter</a><'a, K, V></h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_iter" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#929-931">source</a><a href="#method.into_iter" class="anchor"></a><h4 class="code-header">fn <a class="fnname">into_iter</a>(self) -> <a class="struct" href="struct.Iter.html" title="struct lru::Iter">Iter</a><'a, K, V><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.Iter.html" title="struct lru::Iter">Iter</a><'a, K, V></span><code class="content"><span class="where fmt-newline">impl<'a, K, V> Iterator for <a class="struct" href="struct.Iter.html" title="struct lru::Iter">Iter</a><'a, K, V></span><span class="where fmt-newline"> type <a class="associatedtype">Item</a> = (&'a K, &'a V);</span></code></span></span></span></span></h4></section></summary><div class='docblock'>Creates an iterator from a value. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-IntoIterator-for-%26%27a%20mut%20LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#934-941">source</a><a href="#impl-IntoIterator-for-%26%27a%20mut%20LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<'a, K: Hash + Eq, V, S: BuildHasher> IntoIterator for &'a mut <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V, S></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Item-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-1" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Item</a> = (&'a K, &'a mut V)</h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.IntoIter-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.IntoIter-1" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">IntoIter</a> = <a class="struct" href="struct.IterMut.html" title="struct lru::IterMut">IterMut</a><'a, K, V></h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_iter-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#938-940">source</a><a href="#method.into_iter-1" class="anchor"></a><h4 class="code-header">fn <a class="fnname">into_iter</a>(self) -> <a class="struct" href="struct.IterMut.html" title="struct lru::IterMut">IterMut</a><'a, K, V><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.IterMut.html" title="struct lru::IterMut">IterMut</a><'a, K, V></span><code class="content"><span class="where fmt-newline">impl<'a, K, V> Iterator for <a class="struct" href="struct.IterMut.html" title="struct lru::IterMut">IterMut</a><'a, K, V></span><span class="where fmt-newline"> type <a class="associatedtype">Item</a> = (&'a K, &'a mut V);</span></code></span></span></span></span></h4></section></summary><div class='docblock'>Creates an iterator from a value. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-IntoIterator-for-LruCache%3CK%2C%20V%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#1138-1145">source</a><a href="#impl-IntoIterator-for-LruCache%3CK%2C%20V%3E" class="anchor"></a><h3 class="code-header">impl<K: Hash + Eq, V> IntoIterator for <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Item-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Item-2" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Item</a> = (K, V)</h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class="rustdoc-toggle" open><summary><section id="associatedtype.IntoIter-2" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.IntoIter-2" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">IntoIter</a> = <a class="struct" href="struct.IntoIter.html" title="struct lru::IntoIter">IntoIter</a><K, V></h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_iter-2" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#1142-1144">source</a><a href="#method.into_iter-2" class="anchor"></a><h4 class="code-header">fn <a class="fnname">into_iter</a>(self) -> <a class="struct" href="struct.IntoIter.html" title="struct lru::IntoIter">IntoIter</a><K, V><span class="notable-traits"><span class="notable-traits-tooltip">ⓘ<span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.IntoIter.html" title="struct lru::IntoIter">IntoIter</a><K, V></span><code class="content"><span class="where fmt-newline">impl<K, V> Iterator for <a class="struct" href="struct.IntoIter.html" title="struct lru::IntoIter">IntoIter</a><K, V><span class="where fmt-newline">where<br> K: Hash + Eq,</span></span><span class="where fmt-newline"> type <a class="associatedtype">Item</a> = (K, V);</span></code></span></span></span></span></h4></section></summary><div class='docblock'>Creates an iterator from a value. <a>Read more</a></div></details></div></details><section id="impl-Send-for-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#946">source</a><a href="#impl-Send-for-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<K: Send, V: Send, S: Send> Send for <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V, S></h3></section><section id="impl-Sync-for-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a class="srclink rightside" href="../src/lru/lib.rs.html#947">source</a><a href="#impl-Sync-for-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<K: Sync, V: Sync, S: Sync> Sync for <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V, S></h3></section></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<K, V, S> RefUnwindSafe for <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V, S><span class="where fmt-newline">where<br> K: RefUnwindSafe,<br> S: RefUnwindSafe,<br> V: RefUnwindSafe,</span></h3></section><section id="impl-Unpin-for-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a href="#impl-Unpin-for-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<K, V, S> Unpin for <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V, S><span class="where fmt-newline">where<br> S: Unpin,</span></h3></section><section id="impl-UnwindSafe-for-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a href="#impl-UnwindSafe-for-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<K, V, S> UnwindSafe for <a class="struct" href="struct.LruCache.html" title="struct lru::LruCache">LruCache</a><K, V, S><span class="where fmt-newline">where<br> K: UnwindSafe + RefUnwindSafe,<br> S: UnwindSafe,<br> V: UnwindSafe + RefUnwindSafe,</span></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a href="#impl-Any-for-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<T> Any for T<span class="where fmt-newline">where<br> T: 'static + ?Sized,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a href="#method.type_id" class="anchor"></a><h4 class="code-header">fn <a class="fnname">type_id</a>(&self) -> TypeId</h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a href="#impl-Borrow%3CT%3E-for-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<T> Borrow<T> for T<span class="where fmt-newline">where<br> T: ?Sized,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span><a href="#method.borrow" class="anchor"></a><h4 class="code-header">fn <a class="fnname">borrow</a>(&self) -> &T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a href="#impl-BorrowMut%3CT%3E-for-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<T> BorrowMut<T> for T<span class="where fmt-newline">where<br> T: ?Sized,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">fn <a class="fnname">borrow_mut</a>(&mut self) -> &mut T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a>Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a href="#impl-From%3CT%3E-for-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<T> From<T> for T</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a class="fnname">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p> |
| </div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a href="#impl-Into%3CU%3E-for-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<T, U> Into<U> for T<span class="where fmt-newline">where<br> U: From<T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.into" class="anchor"></a><h4 class="code-header">fn <a class="fnname">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p> |
| <p>That is, this conversion is whatever the implementation of |
| <code>[From]<T> for U</code> chooses to do.</p> |
| </div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a href="#impl-TryFrom%3CU%3E-for-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<T, U> TryFrom<U> for T<span class="where fmt-newline">where<br> U: Into<T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Error</a> = Infallible</h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.try_from" class="anchor"></a><h4 class="code-header">fn <a class="fnname">try_from</a>(value: U) -> Result<T, <T as TryFrom<U>>::Error></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-LruCache%3CK%2C%20V%2C%20S%3E" class="impl has-srclink"><a href="#impl-TryInto%3CU%3E-for-LruCache%3CK%2C%20V%2C%20S%3E" class="anchor"></a><h3 class="code-header">impl<T, U> TryInto<U> for T<span class="where fmt-newline">where<br> U: TryFrom<T>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a class="associatedtype">Error</a> = <U as TryFrom<T>>::Error</h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="since rightside" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span><a href="#method.try_into" class="anchor"></a><h4 class="code-header">fn <a class="fnname">try_into</a>(self) -> Result<U, <U as TryFrom<T>>::Error></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="lru" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html> |