struct.ReseedingRng.html 26 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <!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="API documentation for the Rust `ReseedingRng` struct in crate `rand`."><meta name="keywords" content="rust, rustlang, rust-lang, ReseedingRng"><title>rand::rngs::adapter::ReseedingRng - Rust</title><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="../../../dark.css"><link rel="stylesheet" type="text/css" href="../../../light.css" id="themeStyle"><script src="../../../storage.js"></script><link rel="shortcut icon" href="https://www.rust-lang.org/favicon.ico"></head><body class="rustdoc struct"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">&#9776;</div><a href='../../../rand/index.html'><img src='https://www.rust-lang.org/logos/rust-logo-128x128-blk.png' alt='logo' width='100'></a><p class='location'>Struct ReseedingRng</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#methods">Methods</a><div class="sidebar-links"><a href="#method.new">new</a><a href="#method.reseed">reseed</a></div><a class="sidebar-title" href="#implementations">Trait Implementations</a><div class="sidebar-links"><a href="#impl-Debug">Debug</a><a href="#impl-RngCore">RngCore</a><a href="#impl-Clone">Clone</a><a href="#impl-CryptoRng">CryptoRng</a></div><a class="sidebar-title" href="#synthetic-implementations">Auto Trait Implementations</a><div class="sidebar-links"><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a></div></div><p class='location'><a href='../../index.html'>rand</a>::<wbr><a href='../index.html'>rngs</a>::<wbr><a href='index.html'>adapter</a></p><script>window.sidebarCurrent = {name: 'ReseedingRng', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!"><img src="../../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices"></div></div><script src="../../../theme.js"></script><nav class="sub"><form class="search-form js-only"><div class="search-container"><input class="search-input" name="search" autocomplete="off" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><a id="settings-menu" href="../../../settings.html"><img src="../../../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class='fqn'><span class='in-band'>Struct <a href='../../index.html'>rand</a>::<wbr><a href='../index.html'>rngs</a>::<wbr><a href='index.html'>adapter</a>::<wbr><a class="struct" href=''>ReseedingRng</a></span><span class='out-of-band'><span id='render-detail'><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class='inner'>&#x2212;</span>]</a></span><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#58-60' title='goto source code'>[src]</a></span></h1><div class="docblock type-decl"><pre class='rust struct'>pub struct ReseedingRng&lt;R, Rsdr&gt;(_)<br> <span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="../../../rand_core/block/trait.BlockRngCore.html" title="trait rand_core::block::BlockRngCore">BlockRngCore</a> + <a class="trait" href="../../../rand/trait.SeedableRng.html" title="trait rand::SeedableRng">SeedableRng</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;Rsdr: <a class="trait" href="../../../rand/trait.RngCore.html" title="trait rand::RngCore">RngCore</a></span>;</pre></div><div class='docblock'><p>A wrapper around any PRNG which reseeds the underlying PRNG after it has
  2. generated a certain number of random bytes.</p>
  3. <p>When the RNG gets cloned, the clone is reseeded on first use.</p>
  4. <p>Reseeding is never strictly <em>necessary</em>. Cryptographic PRNGs don't have a
  5. limited number of bytes they can output, or at least not a limit reachable
  6. in any practical way. There is no such thing as 'running out of entropy'.</p>
  7. <p>Some small non-cryptographic PRNGs can have very small periods, for
  8. example less than 2<sup>64</sup>. Would reseeding help to ensure that you do
  9. not wrap around at the end of the period? A period of 2<sup>64</sup> still
  10. takes several centuries of CPU-years on current hardware. Reseeding will
  11. actually make things worse, because the reseeded PRNG will just continue
  12. somewhere else <em>in the same period</em>, with a high chance of overlapping with
  13. previously used parts of it.</p>
  14. <h1 id="when-should-you-use-reseedingrng" class="section-header"><a href="#when-should-you-use-reseedingrng">When should you use <code>ReseedingRng</code>?</a></h1>
  15. <ul>
  16. <li>Reseeding can be seen as some form of 'security in depth'. Even if in the
  17. future a cryptographic weakness is found in the CSPRNG being used,
  18. occasionally reseeding should make exploiting it much more difficult or
  19. even impossible.</li>
  20. <li>It can be used as a poor man's cryptography (not recommended, just use a
  21. good CSPRNG). Previous implementations of <code>thread_rng</code> for example used
  22. <code>ReseedingRng</code> with the ISAAC RNG. That algorithm, although apparently
  23. strong and with no known attack, does not come with any proof of security
  24. and does not meet the current standards for a cryptographically secure
  25. PRNG. By reseeding it frequently (every 32 kiB) it seems safe to assume
  26. there is no attack that can operate on the tiny window between reseeds.</li>
  27. </ul>
  28. <h1 id="error-handling" class="section-header"><a href="#error-handling">Error handling</a></h1>
  29. <p>Although extremely unlikely, reseeding the wrapped PRNG can fail.
  30. <code>ReseedingRng</code> will never panic but try to handle the error intelligently
  31. through some combination of retrying and delaying reseeding until later.
  32. If handling the source error fails <code>ReseedingRng</code> will continue generating
  33. data from the wrapped PRNG without reseeding.</p>
  34. </div>
  35. <h2 id='methods' class='small-section-header'>
  36. Methods<a href='#methods' class='anchor'></a>
  37. </h2>
  38. <h3 id='impl' class='impl'><span class='in-band'><table class='table-display'><tbody><tr><td><code>impl&lt;R, Rsdr&gt; <a class="struct" href="../../../rand/rngs/adapter/struct.ReseedingRng.html" title="struct rand::rngs::adapter::ReseedingRng">ReseedingRng</a>&lt;R, Rsdr&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="../../../rand_core/block/trait.BlockRngCore.html" title="trait rand_core::block::BlockRngCore">BlockRngCore</a> + <a class="trait" href="../../../rand/trait.SeedableRng.html" title="trait rand::SeedableRng">SeedableRng</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;Rsdr: <a class="trait" href="../../../rand/trait.RngCore.html" title="trait rand::RngCore">RngCore</a>,&nbsp;</span></code><a href='#impl' class='anchor'></a></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#62-81' title='goto source code'>[src]</a></span></td></tr></tbody></table></h3><div class='impl-items'><h4 id='method.new' class="method"><span id='new.v' class='invisible'><table class='table-display'><tbody><tr><td><code>pub fn <a href='#method.new' class='fnname'>new</a>(rng: R, threshold: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, reseeder: Rsdr) -&gt; Self</code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#73-75' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Create a new <code>ReseedingRng</code> with the given parameters.</p>
  39. <h1 id="arguments" class="section-header"><a href="#arguments">Arguments</a></h1>
  40. <ul>
  41. <li><code>rng</code>: the random number generator to use.</li>
  42. <li><code>threshold</code>: the number of generated bytes after which to reseed the RNG.</li>
  43. <li><code>reseeder</code>: the RNG to use for reseeding.</li>
  44. </ul>
  45. </div><h4 id='method.reseed' class="method"><span id='reseed.v' class='invisible'><table class='table-display'><tbody><tr><td><code>pub fn <a href='#method.reseed' class='fnname'>reseed</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../../../rand/struct.Error.html" title="struct rand::Error">Error</a>&gt;</code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#78-80' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Reseed the internal PRNG.</p>
  46. </div></div>
  47. <h2 id='implementations' class='small-section-header'>
  48. Trait Implementations<a href='#implementations' class='anchor'></a>
  49. </h2>
  50. <div id='implementations-list'><h3 id='impl-Debug' class='impl'><span class='in-band'><table class='table-display'><tbody><tr><td><code>impl&lt;R:&nbsp;<a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>, Rsdr:&nbsp;<a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="../../../rand/rngs/adapter/struct.ReseedingRng.html" title="struct rand::rngs::adapter::ReseedingRng">ReseedingRng</a>&lt;R, Rsdr&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="../../../rand_core/block/trait.BlockRngCore.html" title="trait rand_core::block::BlockRngCore">BlockRngCore</a> + <a class="trait" href="../../../rand/trait.SeedableRng.html" title="trait rand::SeedableRng">SeedableRng</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;Rsdr: <a class="trait" href="../../../rand/trait.RngCore.html" title="trait rand::RngCore">RngCore</a>,&nbsp;</span></code><a href='#impl-Debug' class='anchor'></a></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#57' title='goto source code'>[src]</a></span></td></tr></tbody></table></h3><div class='impl-items'><h4 id='method.fmt' class="method"><span id='fmt.v' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt' class='fnname'>fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#57' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
  51. </div></div><h3 id='impl-RngCore' class='impl'><span class='in-band'><table class='table-display'><tbody><tr><td><code>impl&lt;R, Rsdr:&nbsp;<a class="trait" href="../../../rand/trait.RngCore.html" title="trait rand::RngCore">RngCore</a>&gt; <a class="trait" href="../../../rand/trait.RngCore.html" title="trait rand::RngCore">RngCore</a> for <a class="struct" href="../../../rand/rngs/adapter/struct.ReseedingRng.html" title="struct rand::rngs::adapter::ReseedingRng">ReseedingRng</a>&lt;R, Rsdr&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="../../../rand_core/block/trait.BlockRngCore.html" title="trait rand_core::block::BlockRngCore">BlockRngCore</a>&lt;Item = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>&gt; + <a class="trait" href="../../../rand/trait.SeedableRng.html" title="trait rand::SeedableRng">SeedableRng</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;R as <a class="trait" href="../../../rand_core/block/trait.BlockRngCore.html" title="trait rand_core::block::BlockRngCore">BlockRngCore</a>&gt;::<a class="type" href="../../../rand_core/block/trait.BlockRngCore.html#associatedtype.Results" title="type rand_core::block::BlockRngCore::Results">Results</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>&gt; + <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>&gt;,&nbsp;</span></code><a href='#impl-RngCore' class='anchor'></a></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#85-106' title='goto source code'>[src]</a></span></td></tr></tbody></table></h3><div class='impl-items'><h4 id='method.next_u32' class="method"><span id='next_u32.v' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='../../../rand/trait.RngCore.html#tymethod.next_u32' class='fnname'>next_u32</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#90-92' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Return the next random <code>u32</code>. <a href="../../../rand/trait.RngCore.html#tymethod.next_u32">Read more</a></p>
  52. </div><h4 id='method.next_u64' class="method"><span id='next_u64.v' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='../../../rand/trait.RngCore.html#tymethod.next_u64' class='fnname'>next_u64</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#95-97' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Return the next random <code>u64</code>. <a href="../../../rand/trait.RngCore.html#tymethod.next_u64">Read more</a></p>
  53. </div><h4 id='method.fill_bytes' class="method"><span id='fill_bytes.v' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='../../../rand/trait.RngCore.html#tymethod.fill_bytes' class='fnname'>fill_bytes</a>(&amp;mut self, dest: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;mut [</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>)</code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#99-101' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Fill <code>dest</code> with random data. <a href="../../../rand/trait.RngCore.html#tymethod.fill_bytes">Read more</a></p>
  54. </div><h4 id='method.try_fill_bytes' class="method"><span id='try_fill_bytes.v' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='../../../rand/trait.RngCore.html#tymethod.try_fill_bytes' class='fnname'>try_fill_bytes</a>(&amp;mut self, dest: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;mut [</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../../../rand/struct.Error.html" title="struct rand::Error">Error</a>&gt;</code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#103-105' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Fill <code>dest</code> entirely with random data. <a href="../../../rand/trait.RngCore.html#tymethod.try_fill_bytes">Read more</a></p>
  55. </div></div><h3 id='impl-Clone' class='impl'><span class='in-band'><table class='table-display'><tbody><tr><td><code>impl&lt;R, Rsdr&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="../../../rand/rngs/adapter/struct.ReseedingRng.html" title="struct rand::rngs::adapter::ReseedingRng">ReseedingRng</a>&lt;R, Rsdr&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="../../../rand_core/block/trait.BlockRngCore.html" title="trait rand_core::block::BlockRngCore">BlockRngCore</a> + <a class="trait" href="../../../rand/trait.SeedableRng.html" title="trait rand::SeedableRng">SeedableRng</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;Rsdr: <a class="trait" href="../../../rand/trait.RngCore.html" title="trait rand::RngCore">RngCore</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,&nbsp;</span></code><a href='#impl-Clone' class='anchor'></a></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#108-117' title='goto source code'>[src]</a></span></td></tr></tbody></table></h3><div class='impl-items'><h4 id='method.clone' class="method"><span id='clone.v' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone' class='fnname'>clone</a>(&amp;self) -&gt; <a class="struct" href="../../../rand/rngs/adapter/struct.ReseedingRng.html" title="struct rand::rngs::adapter::ReseedingRng">ReseedingRng</a>&lt;R, Rsdr&gt;</code></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#112-116' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
  56. </div><h4 id='method.clone_from' class="method"><span id='clone_from.v' class='invisible'><table class='table-display'><tbody><tr><td><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from' class='fnname'>clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Self)</code></span></td><td><span class='out-of-band'><div class='ghost'></div><div class='since' title='Stable since Rust version 1.0.0'>1.0.0</div><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/clone.rs.html#130-132' title='goto source code'>[src]</a></td></tr></tbody></table></span></h4><div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
  57. </div></div><h3 id='impl-CryptoRng' class='impl'><span class='in-band'><table class='table-display'><tbody><tr><td><code>impl&lt;R, Rsdr&gt; <a class="trait" href="../../../rand/trait.CryptoRng.html" title="trait rand::CryptoRng">CryptoRng</a> for <a class="struct" href="../../../rand/rngs/adapter/struct.ReseedingRng.html" title="struct rand::rngs::adapter::ReseedingRng">ReseedingRng</a>&lt;R, Rsdr&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="../../../rand_core/block/trait.BlockRngCore.html" title="trait rand_core::block::BlockRngCore">BlockRngCore</a> + <a class="trait" href="../../../rand/trait.SeedableRng.html" title="trait rand::SeedableRng">SeedableRng</a> + <a class="trait" href="../../../rand/trait.CryptoRng.html" title="trait rand::CryptoRng">CryptoRng</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;Rsdr: <a class="trait" href="../../../rand/trait.RngCore.html" title="trait rand::RngCore">RngCore</a> + <a class="trait" href="../../../rand/trait.CryptoRng.html" title="trait rand::CryptoRng">CryptoRng</a>,&nbsp;</span></code><a href='#impl-CryptoRng' class='anchor'></a></span></td><td><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../../src/rand/rngs/adapter/reseeding.rs.html#119-121' title='goto source code'>[src]</a></span></td></tr></tbody></table></h3><div class='impl-items'></div></div>
  58. <h2 id='synthetic-implementations' class='small-section-header'>
  59. Auto Trait Implementations<a href='#synthetic-implementations' class='anchor'></a>
  60. </h2>
  61. <div id='synthetic-implementations-list'>
  62. <h3 id='impl-Send' class='impl'><span class='in-band'><table class='table-display'><tbody><tr><td><code>impl&lt;R, Rsdr&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="../../../rand/rngs/adapter/struct.ReseedingRng.html" title="struct rand::rngs::adapter::ReseedingRng">ReseedingRng</a>&lt;R, Rsdr&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;Rsdr: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;R as <a class="trait" href="../../../rand_core/block/trait.BlockRngCore.html" title="trait rand_core::block::BlockRngCore">BlockRngCore</a>&gt;::<a class="type" href="../../../rand_core/block/trait.BlockRngCore.html#associatedtype.Results" title="type rand_core::block::BlockRngCore::Results">Results</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,&nbsp;</span></code><a href='#impl-Send' class='anchor'></a></span></td><td><span class='out-of-band'></span></td></tr></tbody></table></h3><div class='impl-items'></div><h3 id='impl-Sync' class='impl'><span class='in-band'><table class='table-display'><tbody><tr><td><code>impl&lt;R, Rsdr&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="../../../rand/rngs/adapter/struct.ReseedingRng.html" title="struct rand::rngs::adapter::ReseedingRng">ReseedingRng</a>&lt;R, Rsdr&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;Rsdr: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;R as <a class="trait" href="../../../rand_core/block/trait.BlockRngCore.html" title="trait rand_core::block::BlockRngCore">BlockRngCore</a>&gt;::<a class="type" href="../../../rand_core/block/trait.BlockRngCore.html#associatedtype.Results" title="type rand_core::block::BlockRngCore::Results">Results</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,&nbsp;</span></code><a href='#impl-Sync' class='anchor'></a></span></td><td><span class='out-of-band'></span></td></tr></tbody></table></h3><div class='impl-items'></div></div></section><section id="search" class="content hidden"></section><section class="footer"></section><aside id="help" class="hidden"><div><h1 class="hidden">Help</h1><div class="shortcuts"><h2>Keyboard Shortcuts</h2><dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd><dt><kbd>S</kbd></dt><dd>Focus the search field</dd><dt><kbd>↑</kbd></dt><dd>Move up in search results</dd><dt><kbd>↓</kbd></dt><dd>Move down in search results</dd><dt><kbd>↹</kbd></dt><dd>Switch tab</dd><dt><kbd>&#9166;</kbd></dt><dd>Go to active search result</dd><dt><kbd>+</kbd></dt><dd>Expand all sections</dd><dt><kbd>-</kbd></dt><dd>Collapse all sections</dd></dl></div><div class="infos"><h2>Search Tricks</h2><p>Prefix searches with a type followed by a colon (e.g. <code>fn:</code>) to restrict the search to a given type.</p><p>Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, and <code>const</code>.</p><p>Search functions by type signature (e.g. <code>vec -> usize</code> or <code>* -> vec</code>)</p><p>Search multiple things at once by splitting your query with comma (e.g. <code>str,u8</code> or <code>String,struct:Vec,test</code>)</p></div></div></aside><script>window.rootPath = "../../../";window.currentCrate = "rand";</script><script src="../../../aliases.js"></script><script src="../../../main.js"></script><script defer src="../../../search-index.js"></script></body></html>