Deploying to gh-pages from @ 9ed458ebfa 🚀

This commit is contained in:
realaravinth
2021-06-30 08:50:16 +00:00
parent cb475d6837
commit b2d92abb52
27 changed files with 370 additions and 166 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,15 +1,18 @@
<!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 `SystemGroup` enum in crate `mcaptcha`."><meta name="keywords" content="rust, rustlang, rust-lang, SystemGroup"><title>mcaptcha::data::SystemGroup - 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="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg"> <!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 `SystemGroup` enum in crate `mcaptcha`."><meta name="keywords" content="rust, rustlang, rust-lang, SystemGroup"><title>mcaptcha::data::SystemGroup - 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="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg">
<link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"> <link rel="alternate icon" type="image/png" href="../../favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc enum"><!--[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='../../mcaptcha/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><p class="location">Enum SystemGroup</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#variants">Variants</a><div class="sidebar-links"><a href="#variant.Embedded">Embedded</a><a href="#variant.Redis">Redis</a></div><a class="sidebar-title" href="#implementations">Methods</a><div class="sidebar-links"><a href="#method.get_pow">get_pow</a><a href="#method.validate_verification_tokens">validate_verification_tokens</a><a href="#method.verify_pow">verify_pow</a></div><a class="sidebar-title" href="#synthetic-implementations">Auto Trait Implementations</a><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><a class="sidebar-title" href="#blanket-implementations">Blanket Implementations</a><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow&lt;T&gt;</a><a href="#impl-BorrowMut%3CT%3E">BorrowMut&lt;T&gt;</a><a href="#impl-Conv">Conv</a><a href="#impl-FmtForward">FmtForward</a><a href="#impl-From%3CT%3E">From&lt;T&gt;</a><a href="#impl-Instrument">Instrument</a><a href="#impl-Into%3CU%3E">Into&lt;U&gt;</a><a href="#impl-Pipe">Pipe</a><a href="#impl-PipeAsRef">PipeAsRef</a><a href="#impl-PipeBorrow">PipeBorrow</a><a href="#impl-PipeDeref">PipeDeref</a><a href="#impl-PipeRef">PipeRef</a><a href="#impl-Same%3CT%3E">Same&lt;T&gt;</a><a href="#impl-Tap">Tap</a><a href="#impl-TapAsRef%3CU%3E">TapAsRef&lt;U&gt;</a><a href="#impl-TapBorrow%3CU%3E">TapBorrow&lt;U&gt;</a><a href="#impl-TapDeref">TapDeref</a><a href="#impl-TryConv">TryConv</a><a href="#impl-TryFrom%3CU%3E">TryFrom&lt;U&gt;</a><a href="#impl-TryInto%3CU%3E">TryInto&lt;U&gt;</a><a href="#impl-VZip%3CV%3E">VZip&lt;V&gt;</a></div></div><p class="location"><a href="../index.html">mcaptcha</a>::<wbr><a href="index.html">data</a></p><div id="sidebar-vars" data-name="SystemGroup" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button> <link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc enum"><!--[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='../../mcaptcha/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><p class="location">Enum SystemGroup</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#variants">Variants</a><div class="sidebar-links"><a href="#variant.Embedded">Embedded</a><a href="#variant.Redis">Redis</a></div><a class="sidebar-title" href="#implementations">Methods</a><div class="sidebar-links"><a href="#method.get_pow">get_pow</a><a href="#method.new">new</a><a href="#method.new_system">new_system</a><a href="#method.validate_verification_tokens">validate_verification_tokens</a><a href="#method.verify_pow">verify_pow</a></div><a class="sidebar-title" href="#synthetic-implementations">Auto Trait Implementations</a><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><a class="sidebar-title" href="#blanket-implementations">Blanket Implementations</a><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow&lt;T&gt;</a><a href="#impl-BorrowMut%3CT%3E">BorrowMut&lt;T&gt;</a><a href="#impl-Conv">Conv</a><a href="#impl-FmtForward">FmtForward</a><a href="#impl-From%3CT%3E">From&lt;T&gt;</a><a href="#impl-Instrument">Instrument</a><a href="#impl-Into%3CU%3E">Into&lt;U&gt;</a><a href="#impl-Pipe">Pipe</a><a href="#impl-PipeAsRef">PipeAsRef</a><a href="#impl-PipeBorrow">PipeBorrow</a><a href="#impl-PipeDeref">PipeDeref</a><a href="#impl-PipeRef">PipeRef</a><a href="#impl-Same%3CT%3E">Same&lt;T&gt;</a><a href="#impl-Tap">Tap</a><a href="#impl-TapAsRef%3CU%3E">TapAsRef&lt;U&gt;</a><a href="#impl-TapBorrow%3CU%3E">TapBorrow&lt;U&gt;</a><a href="#impl-TapDeref">TapDeref</a><a href="#impl-TryConv">TryConv</a><a href="#impl-TryFrom%3CU%3E">TryFrom&lt;U&gt;</a><a href="#impl-TryInto%3CU%3E">TryInto&lt;U&gt;</a><a href="#impl-VZip%3CV%3E">VZip&lt;V&gt;</a></div></div><p class="location"><a href="../index.html">mcaptcha</a>::<wbr><a href="index.html">data</a></p><div id="sidebar-vars" data-name="SystemGroup" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button>
<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">Enum <a href="../index.html">mcaptcha</a>::<wbr><a href="index.html">data</a>::<wbr><a class="enum" href="">SystemGroup</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/mcaptcha/data.rs.html#48-51" title="goto source code">[src]</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class="rust enum">pub enum SystemGroup { <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">Enum <a href="../index.html">mcaptcha</a>::<wbr><a href="index.html">data</a>::<wbr><a class="enum" href="">SystemGroup</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/mcaptcha/data.rs.html#49-52" title="goto source code">[src]</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class="rust enum">pub enum SystemGroup {
Embedded(System&lt;HashCache, EmbeddedMaster&gt;), Embedded(System&lt;HashCache, EmbeddedMaster&gt;),
Redis(System&lt;RedisCache, RedisMaster&gt;), Redis(System&lt;RedisCache, RedisMaster&gt;),
}</pre></div><h2 id="variants" class="variants small-section-header"> }</pre></div><div class="docblock"><p>Represents mCaptcha cache and master system.
When Redis is configured, <a href="../../mcaptcha/data/enum.SystemGroup.html#variant.Redis" title="SystemGroup::Redis">SystemGroup::Redis</a> is used and
in its absense, <a href="../../mcaptcha/data/enum.SystemGroup.html#variant.Embedded" title="SystemGroup::Embedded">SystemGroup::Embedded</a> is used</p>
</div><h2 id="variants" class="variants small-section-header">
Variants<a href="#variants" class="anchor"></a></h2> Variants<a href="#variants" class="anchor"></a></h2>
<div id="variant.Embedded" class="variant small-section-header"><a href="#variant.Embedded" class="anchor field"></a><code>Embedded(System&lt;HashCache, EmbeddedMaster&gt;)</code></div><div id="variant.Redis" class="variant small-section-header"><a href="#variant.Redis" class="anchor field"></a><code>Redis(System&lt;RedisCache, RedisMaster&gt;)</code></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><h3 id="impl" class="impl"><code class="in-band">impl <a class="enum" href="../../mcaptcha/data/enum.SystemGroup.html" title="enum mcaptcha::data::SystemGroup">SystemGroup</a></code><a href="#impl" class="anchor"></a><a class="srclink" href="../../src/mcaptcha/data.rs.html#53-92" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.get_pow" class="method"><code>pub async fn <a href="#method.get_pow" class="fnname">get_pow</a>(&amp;self, id: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;PoWConfig&gt;</code><a class="srclink" href="../../src/mcaptcha/data.rs.html#55-60" title="goto source code">[src]</a></h4><div class="docblock"><p>utility function to get difficulty factor of site <code>id</code> and cache it</p> <div id="variant.Embedded" class="variant small-section-header"><a href="#variant.Embedded" class="anchor field"></a><code>Embedded(System&lt;HashCache, EmbeddedMaster&gt;)</code></div><div id="variant.Redis" class="variant small-section-header"><a href="#variant.Redis" class="anchor field"></a><code>Redis(System&lt;RedisCache, RedisMaster&gt;)</code></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><h3 id="impl" class="impl"><code class="in-band">impl <a class="enum" href="../../mcaptcha/data/enum.SystemGroup.html" title="enum mcaptcha::data::SystemGroup">SystemGroup</a></code><a href="#impl" class="anchor"></a><a class="srclink" href="../../src/mcaptcha/data.rs.html#54-129" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.get_pow" class="method"><code>pub async fn <a href="#method.get_pow" class="fnname">get_pow</a>(&amp;self, id: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;PoWConfig&gt;</code><a class="srclink" href="../../src/mcaptcha/data.rs.html#56-61" title="goto source code">[src]</a></h4><div class="docblock"><p>utility function to get difficulty factor of site <code>id</code> and cache it</p>
</div><h4 id="method.verify_pow" class="method"><code>pub async fn <a href="#method.verify_pow" class="fnname">verify_pow</a>(&amp;self, work: Work) -&gt; CaptchaResult&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code><a class="srclink" href="../../src/mcaptcha/data.rs.html#63-68" title="goto source code">[src]</a></h4><div class="docblock"><p>utility function to verify [Work]</p> </div><h4 id="method.verify_pow" class="method"><code>pub async fn <a href="#method.verify_pow" class="fnname">verify_pow</a>(&amp;self, work: Work) -&gt; CaptchaResult&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code><a class="srclink" href="../../src/mcaptcha/data.rs.html#64-69" title="goto source code">[src]</a></h4><div class="docblock"><p>utility function to verify [Work]</p>
</div><h4 id="method.validate_verification_tokens" class="method"><code>pub async fn <a href="#method.validate_verification_tokens" class="fnname">validate_verification_tokens</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;msg: VerifyCaptchaResult<br>) -&gt; CaptchaResult&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code><a class="srclink" href="../../src/mcaptcha/data.rs.html#71-79" title="goto source code">[src]</a></h4><div class="docblock"><p>utility function to validate verification tokens</p> </div><h4 id="method.validate_verification_tokens" class="method"><code>pub async fn <a href="#method.validate_verification_tokens" class="fnname">validate_verification_tokens</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;msg: VerifyCaptchaResult<br>) -&gt; CaptchaResult&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code><a class="srclink" href="../../src/mcaptcha/data.rs.html#72-80" title="goto source code">[src]</a></h4><div class="docblock"><p>utility function to validate verification tokens</p>
</div></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"><h3 id="impl-RefUnwindSafe" class="impl"><code class="in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.RefUnwindSafe.html" title="trait std::panic::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="../../mcaptcha/data/enum.SystemGroup.html" title="enum mcaptcha::data::SystemGroup">SystemGroup</a></code><a href="#impl-RefUnwindSafe" class="anchor"></a><a class="srclink" href="../../src/mcaptcha/main.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Send" class="impl"><code class="in-band">impl <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="enum" href="../../mcaptcha/data/enum.SystemGroup.html" title="enum mcaptcha::data::SystemGroup">SystemGroup</a></code><a href="#impl-Send" class="anchor"></a><a class="srclink" href="../../src/mcaptcha/main.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Sync" class="impl"><code class="in-band">impl <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="enum" href="../../mcaptcha/data/enum.SystemGroup.html" title="enum mcaptcha::data::SystemGroup">SystemGroup</a></code><a href="#impl-Sync" class="anchor"></a><a class="srclink" href="../../src/mcaptcha/main.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Unpin" class="impl"><code class="in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="../../mcaptcha/data/enum.SystemGroup.html" title="enum mcaptcha::data::SystemGroup">SystemGroup</a></code><a href="#impl-Unpin" class="anchor"></a><a class="srclink" href="../../src/mcaptcha/main.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-UnwindSafe" class="impl"><code class="in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.UnwindSafe.html" title="trait std::panic::UnwindSafe">UnwindSafe</a> for <a class="enum" href="../../mcaptcha/data/enum.SystemGroup.html" title="enum mcaptcha::data::SystemGroup">SystemGroup</a></code><a href="#impl-UnwindSafe" class="anchor"></a><a class="srclink" href="../../src/mcaptcha/main.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><h3 id="impl-Any" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-Any" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#131-135" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.type_id" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p> </div><h4 id="method.new_system" class="method"><code>fn <a href="#method.new_system" class="fnname">new_system</a>&lt;A:&nbsp;Save, B:&nbsp;MasterTrait&gt;(m: Addr&lt;B&gt;, c: Addr&lt;A&gt;) -&gt; System&lt;A, B&gt;</code><a class="srclink" href="../../src/mcaptcha/data.rs.html#94-101" title="goto source code">[src]</a></h4><h4 id="method.new" class="method"><code>async fn <a href="#method.new" class="fnname">new</a>() -&gt; Self</code><a class="srclink" href="../../src/mcaptcha/data.rs.html#105-128" title="goto source code">[src]</a></h4></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"><h3 id="impl-RefUnwindSafe" class="impl"><code class="in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.RefUnwindSafe.html" title="trait std::panic::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="../../mcaptcha/data/enum.SystemGroup.html" title="enum mcaptcha::data::SystemGroup">SystemGroup</a></code><a href="#impl-RefUnwindSafe" class="anchor"></a><a class="srclink" href="../../src/mcaptcha/main.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Send" class="impl"><code class="in-band">impl <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="enum" href="../../mcaptcha/data/enum.SystemGroup.html" title="enum mcaptcha::data::SystemGroup">SystemGroup</a></code><a href="#impl-Send" class="anchor"></a><a class="srclink" href="../../src/mcaptcha/main.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Sync" class="impl"><code class="in-band">impl <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="enum" href="../../mcaptcha/data/enum.SystemGroup.html" title="enum mcaptcha::data::SystemGroup">SystemGroup</a></code><a href="#impl-Sync" class="anchor"></a><a class="srclink" href="../../src/mcaptcha/main.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Unpin" class="impl"><code class="in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="../../mcaptcha/data/enum.SystemGroup.html" title="enum mcaptcha::data::SystemGroup">SystemGroup</a></code><a href="#impl-Unpin" class="anchor"></a><a class="srclink" href="../../src/mcaptcha/main.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-UnwindSafe" class="impl"><code class="in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.UnwindSafe.html" title="trait std::panic::UnwindSafe">UnwindSafe</a> for <a class="enum" href="../../mcaptcha/data/enum.SystemGroup.html" title="enum mcaptcha::data::SystemGroup">SystemGroup</a></code><a href="#impl-UnwindSafe" class="anchor"></a><a class="srclink" href="../../src/mcaptcha/main.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><h3 id="impl-Any" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-Any" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#131-135" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.type_id" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
</div></div><h3 id="impl-Borrow%3CT%3E" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-Borrow%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#207-211" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.borrow" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p> </div></div><h3 id="impl-Borrow%3CT%3E" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-Borrow%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#207-211" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.borrow" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
</div></div><h3 id="impl-BorrowMut%3CT%3E" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214-218" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.borrow_mut" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#215" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p> </div></div><h3 id="impl-BorrowMut%3CT%3E" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214-218" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.borrow_mut" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#215" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
</div></div><h3 id="impl-Conv" class="impl"><code class="in-band">impl&lt;T&gt; Conv for T</code><a href="#impl-Conv" class="anchor"></a></h3><div class="impl-items"><h4 id="method.conv" class="method hidden"><code>pub fn <a href="#method.conv" class="fnname">conv</a>&lt;T&gt;(self) -&gt; T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,&nbsp;</span></code></h4><div class='docblock hidden'><p>Converts <code>self</code> into <code>T</code> using <code>Into&lt;T&gt;</code>. <a href="#method.conv">Read more</a></p> </div></div><h3 id="impl-Conv" class="impl"><code class="in-band">impl&lt;T&gt; Conv for T</code><a href="#impl-Conv" class="anchor"></a></h3><div class="impl-items"><h4 id="method.conv" class="method hidden"><code>pub fn <a href="#method.conv" class="fnname">conv</a>&lt;T&gt;(self) -&gt; T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,&nbsp;</span></code></h4><div class='docblock hidden'><p>Converts <code>self</code> into <code>T</code> using <code>Into&lt;T&gt;</code>. <a href="#method.conv">Read more</a></p>

View File

@@ -1,7 +1,14 @@
<!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 `data` mod in crate `mcaptcha`."><meta name="keywords" content="rust, rustlang, rust-lang, data"><title>mcaptcha::data - 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="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg"> <!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 `data` mod in crate `mcaptcha`."><meta name="keywords" content="rust, rustlang, rust-lang, data"><title>mcaptcha::data - 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="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg">
<link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"> <link rel="alternate icon" type="image/png" href="../../favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[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='../../mcaptcha/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><p class="location">Module data</p><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></div><p class="location"><a href="../index.html">mcaptcha</a></p><div id="sidebar-vars" data-name="data" data-ty="mod" data-relpath="../"></div><script defer src="../sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button> <link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[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='../../mcaptcha/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><p class="location">Module data</p><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#types">Type Definitions</a></li></ul></div><p class="location"><a href="../index.html">mcaptcha</a></p><div id="sidebar-vars" data-name="data" data-ty="mod" data-relpath="../"></div><script defer src="../sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button>
<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">Module <a href="../index.html">mcaptcha</a>::<wbr><a class="mod" href="">data</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/mcaptcha/data.rs.html#17-157" title="goto source code">[src]</a></span></h1><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2> <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">Module <a href="../index.html">mcaptcha</a>::<wbr><a class="mod" href="">data</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/mcaptcha/data.rs.html#17-192" title="goto source code">[src]</a></span></h1><div class="docblock"><p>App data: redis cache, database connections, etc.</p>
<table><tr class="module-item"><td><a class="struct" href="struct.Data.html" title="mcaptcha::data::Data struct">Data</a></td><td class="docblock-short"></td></tr></table><h2 id="enums" class="section-header"><a href="#enums">Enums</a></h2> </div><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2>
<table><tr class="module-item"><td><a class="enum" href="enum.SystemGroup.html" title="mcaptcha::data::SystemGroup enum">SystemGroup</a></td><td class="docblock-short"></td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="mcaptcha"></div> <table><tr class="module-item"><td><a class="struct" href="struct.Data.html" title="mcaptcha::data::Data struct">Data</a></td><td class="docblock-short"><p>App data</p>
</td></tr></table><h2 id="enums" class="section-header"><a href="#enums">Enums</a></h2>
<table><tr class="module-item"><td><a class="enum" href="enum.SystemGroup.html" title="mcaptcha::data::SystemGroup enum">SystemGroup</a></td><td class="docblock-short"><p>Represents mCaptcha cache and master system.
When Redis is configured, <a href="../../mcaptcha/data/enum.SystemGroup.html#variant.Redis" title="SystemGroup::Redis">SystemGroup::Redis</a> is used and
in its absense, <a href="../../mcaptcha/data/enum.SystemGroup.html#variant.Embedded" title="SystemGroup::Embedded">SystemGroup::Embedded</a> is used</p>
</td></tr></table><h2 id="types" class="section-header"><a href="#types">Type Definitions</a></h2>
<table><tr class="module-item"><td><a class="type" href="type.Mailer.html" title="mcaptcha::data::Mailer type">Mailer</a></td><td class="docblock-short"><p>Mailer data type AsyncSmtpTransport<Tokio1Executor></p>
</td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="mcaptcha"></div>
<script src="../../main.js"></script><script defer src="../../search-index.js"></script></body></html> <script src="../../main.js"></script><script defer src="../../search-index.js"></script></body></html>

View File

@@ -1 +1 @@
initSidebarItems({"enum":[["SystemGroup",""]],"struct":[["Data",""]]}); initSidebarItems({"enum":[["SystemGroup","Represents mCaptcha cache and master system. When Redis is configured, [SystemGroup::Redis] is used and in its absense, [SystemGroup::Embedded] is used"]],"struct":[["Data","App data"]],"type":[["Mailer","Mailer data type AsyncSmtpTransport"]]});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
<!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 `Mailer` type in crate `mcaptcha`."><meta name="keywords" content="rust, rustlang, rust-lang, Mailer"><title>mcaptcha::data::Mailer - 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="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg">
<link rel="alternate icon" type="image/png" href="../../favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc type"><!--[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='../../mcaptcha/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><p class="location">Type Definition Mailer</p><div class="sidebar-elems"><p class="location"><a href="../index.html">mcaptcha</a>::<wbr><a href="index.html">data</a></p><div id="sidebar-vars" data-name="Mailer" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button>
<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">Type Definition <a href="../index.html">mcaptcha</a>::<wbr><a href="index.html">data</a>::<wbr><a class="type" href="">Mailer</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/mcaptcha/data.rs.html#192" title="goto source code">[src]</a></span></h1><pre class="rust typedef">type Mailer = <a class="struct" href="https://docs.rs/crate/lettre/0.10.0-rc.3/lettre/transport/smtp/async_transport/struct.AsyncSmtpTransport.html" title="struct lettre::transport::smtp::async_transport::AsyncSmtpTransport">AsyncSmtpTransport</a>&lt;<a class="struct" href="https://docs.rs/crate/lettre/0.10.0-rc.3/lettre/executor/struct.Tokio1Executor.html" title="struct lettre::executor::Tokio1Executor">Tokio1Executor</a>&gt;;</pre><div class="docblock"><p>Mailer data type AsyncSmtpTransport<Tokio1Executor></p>
</div></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="mcaptcha"></div>
<script src="../../main.js"></script><script defer src="../../search-index.js"></script></body></html>

View File

@@ -2,10 +2,12 @@
<link rel="alternate icon" type="image/png" href="../favicon-16x16.png"> <link rel="alternate icon" type="image/png" href="../favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[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='../mcaptcha/index.html'><div class='logo-container rust-logo'><img src='../rust-logo.png' alt='logo'></div></a><p class="location">Crate mcaptcha</p><div class="block version"><p>Version 0.1.0</p></div><div class="sidebar-elems"><a id="all-types" href="all.html"><p>See all mcaptcha's items</p></a><div class="block items"><ul><li><a href="#modules">Modules</a></li><li><a href="#macros">Macros</a></li><li><a href="#structs">Structs</a></li><li><a href="#constants">Constants</a></li><li><a href="#statics">Statics</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Definitions</a></li></ul></div><p class="location"></p><div id="sidebar-vars" data-name="mcaptcha" data-ty="mod" data-relpath="../"></div></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button> <link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[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='../mcaptcha/index.html'><div class='logo-container rust-logo'><img src='../rust-logo.png' alt='logo'></div></a><p class="location">Crate mcaptcha</p><div class="block version"><p>Version 0.1.0</p></div><div class="sidebar-elems"><a id="all-types" href="all.html"><p>See all mcaptcha's items</p></a><div class="block items"><ul><li><a href="#modules">Modules</a></li><li><a href="#macros">Macros</a></li><li><a href="#structs">Structs</a></li><li><a href="#constants">Constants</a></li><li><a href="#statics">Statics</a></li><li><a href="#functions">Functions</a></li><li><a href="#types">Type Definitions</a></li></ul></div><p class="location"></p><div id="sidebar-vars" data-name="mcaptcha" data-ty="mod" data-relpath="../"></div></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button>
<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">Crate <a class="mod" href="">mcaptcha</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/mcaptcha/main.rs.html#17-170" title="goto source code">[src]</a></span></h1><h2 id="modules" class="section-header"><a href="#modules">Modules</a></h2> <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">Crate <a class="mod" href="">mcaptcha</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/mcaptcha/main.rs.html#17-170" title="goto source code">[src]</a></span></h1><h2 id="modules" class="section-header"><a href="#modules">Modules</a></h2>
<table><tr class="module-item"><td><a class="mod" href="api/index.html" title="mcaptcha::api mod">api</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="data/index.html" title="mcaptcha::data mod">data</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="docs/index.html" title="mcaptcha::docs mod">docs</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="errors/index.html" title="mcaptcha::errors mod">errors</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="middleware/index.html" title="mcaptcha::middleware mod">middleware</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="pages/index.html" title="mcaptcha::pages mod">pages</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="routes/index.html" title="mcaptcha::routes mod">routes</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="settings/index.html" title="mcaptcha::settings mod">settings</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="static_assets/index.html" title="mcaptcha::static_assets mod">static_assets</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="stats/index.html" title="mcaptcha::stats mod">stats</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="widget/index.html" title="mcaptcha::widget mod">widget</a></td><td class="docblock-short"></td></tr></table><h2 id="macros" class="section-header"><a href="#macros">Macros</a></h2> <table><tr class="module-item"><td><a class="mod" href="api/index.html" title="mcaptcha::api mod">api</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="data/index.html" title="mcaptcha::data mod">data</a></td><td class="docblock-short"><p>App data: redis cache, database connections, etc.</p>
</td></tr><tr class="module-item"><td><a class="mod" href="docs/index.html" title="mcaptcha::docs mod">docs</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="errors/index.html" title="mcaptcha::errors mod">errors</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="middleware/index.html" title="mcaptcha::middleware mod">middleware</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="pages/index.html" title="mcaptcha::pages mod">pages</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="routes/index.html" title="mcaptcha::routes mod">routes</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="settings/index.html" title="mcaptcha::settings mod">settings</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="static_assets/index.html" title="mcaptcha::static_assets mod">static_assets</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="stats/index.html" title="mcaptcha::stats mod">stats</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="widget/index.html" title="mcaptcha::widget mod">widget</a></td><td class="docblock-short"></td></tr></table><h2 id="macros" class="section-header"><a href="#macros">Macros</a></h2>
<table><tr class="module-item"><td><a class="macro" href="macro.define_resource.html" title="mcaptcha::define_resource macro">define_resource</a></td><td class="docblock-short"><p>Defines resoures for <a href="../mcaptcha/routes/enum.Methods.html" title="Methods">Methods</a></p> <table><tr class="module-item"><td><a class="macro" href="macro.define_resource.html" title="mcaptcha::define_resource macro">define_resource</a></td><td class="docblock-short"><p>Defines resoures for <a href="../mcaptcha/routes/enum.Methods.html" title="Methods">Methods</a></p>
</td></tr></table><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2> </td></tr></table><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2>
<table><tr class="module-item"><td><a class="struct" href="struct.CSS.html" title="mcaptcha::CSS struct">CSS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.CheckLogin.html" title="mcaptcha::CheckLogin struct">CheckLogin</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.Data.html" title="mcaptcha::Data struct">Data</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.FILES.html" title="mcaptcha::FILES struct">FILES</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.JS.html" title="mcaptcha::JS struct">JS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.MOBILE_CSS.html" title="mcaptcha::MOBILE_CSS struct">MOBILE_CSS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.SETTINGS.html" title="mcaptcha::SETTINGS struct">SETTINGS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.SOURCE_FILES_OF_INSTANCE.html" title="mcaptcha::SOURCE_FILES_OF_INSTANCE struct">SOURCE_FILES_OF_INSTANCE</a></td><td class="docblock-short"><p>points to source files matching build commit</p> <table><tr class="module-item"><td><a class="struct" href="struct.CSS.html" title="mcaptcha::CSS struct">CSS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.CheckLogin.html" title="mcaptcha::CheckLogin struct">CheckLogin</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.Data.html" title="mcaptcha::Data struct">Data</a></td><td class="docblock-short"><p>App data</p>
</td></tr><tr class="module-item"><td><a class="struct" href="struct.FILES.html" title="mcaptcha::FILES struct">FILES</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.JS.html" title="mcaptcha::JS struct">JS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.MOBILE_CSS.html" title="mcaptcha::MOBILE_CSS struct">MOBILE_CSS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.SETTINGS.html" title="mcaptcha::SETTINGS struct">SETTINGS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.SOURCE_FILES_OF_INSTANCE.html" title="mcaptcha::SOURCE_FILES_OF_INSTANCE struct">SOURCE_FILES_OF_INSTANCE</a></td><td class="docblock-short"><p>points to source files matching build commit</p>
</td></tr><tr class="module-item"><td><a class="struct" href="struct.Settings.html" title="mcaptcha::Settings struct">Settings</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.VERIFICATIN_WIDGET_CSS.html" title="mcaptcha::VERIFICATIN_WIDGET_CSS struct">VERIFICATIN_WIDGET_CSS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.VERIFICATIN_WIDGET_JS.html" title="mcaptcha::VERIFICATIN_WIDGET_JS struct">VERIFICATIN_WIDGET_JS</a></td><td class="docblock-short"></td></tr></table><h2 id="constants" class="section-header"><a href="#constants">Constants</a></h2> </td></tr><tr class="module-item"><td><a class="struct" href="struct.Settings.html" title="mcaptcha::Settings struct">Settings</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.VERIFICATIN_WIDGET_CSS.html" title="mcaptcha::VERIFICATIN_WIDGET_CSS struct">VERIFICATIN_WIDGET_CSS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.VERIFICATIN_WIDGET_JS.html" title="mcaptcha::VERIFICATIN_WIDGET_JS struct">VERIFICATIN_WIDGET_JS</a></td><td class="docblock-short"></td></tr></table><h2 id="constants" class="section-header"><a href="#constants">Constants</a></h2>
<table><tr class="module-item"><td><a class="constant" href="constant.CACHE_AGE.html" title="mcaptcha::CACHE_AGE constant">CACHE_AGE</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="constant" href="constant.DOCS.html" title="mcaptcha::DOCS constant">DOCS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="constant" href="constant.PAGES.html" title="mcaptcha::PAGES constant">PAGES</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="constant" href="constant.V1_API_ROUTES.html" title="mcaptcha::V1_API_ROUTES constant">V1_API_ROUTES</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="constant" href="constant.WIDGET_ROUTES.html" title="mcaptcha::WIDGET_ROUTES constant">WIDGET_ROUTES</a></td><td class="docblock-short"></td></tr></table><h2 id="statics" class="section-header"><a href="#statics">Statics</a></h2> <table><tr class="module-item"><td><a class="constant" href="constant.CACHE_AGE.html" title="mcaptcha::CACHE_AGE constant">CACHE_AGE</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="constant" href="constant.DOCS.html" title="mcaptcha::DOCS constant">DOCS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="constant" href="constant.PAGES.html" title="mcaptcha::PAGES constant">PAGES</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="constant" href="constant.V1_API_ROUTES.html" title="mcaptcha::V1_API_ROUTES constant">V1_API_ROUTES</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="constant" href="constant.WIDGET_ROUTES.html" title="mcaptcha::WIDGET_ROUTES constant">WIDGET_ROUTES</a></td><td class="docblock-short"></td></tr></table><h2 id="statics" class="section-header"><a href="#statics">Statics</a></h2>
<table><tr class="module-item"><td><a class="static" href="static.GIT_COMMIT_HASH.html" title="mcaptcha::GIT_COMMIT_HASH static">GIT_COMMIT_HASH</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="static" href="static.OPEN_API_DOC.html" title="mcaptcha::OPEN_API_DOC static">OPEN_API_DOC</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="static" href="static.PKG_DESCRIPTION.html" title="mcaptcha::PKG_DESCRIPTION static">PKG_DESCRIPTION</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="static" href="static.PKG_HOMEPAGE.html" title="mcaptcha::PKG_HOMEPAGE static">PKG_HOMEPAGE</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="static" href="static.PKG_NAME.html" title="mcaptcha::PKG_NAME static">PKG_NAME</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="static" href="static.VERSION.html" title="mcaptcha::VERSION static">VERSION</a></td><td class="docblock-short"></td></tr></table><h2 id="functions" class="section-header"><a href="#functions">Functions</a></h2> <table><tr class="module-item"><td><a class="static" href="static.GIT_COMMIT_HASH.html" title="mcaptcha::GIT_COMMIT_HASH static">GIT_COMMIT_HASH</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="static" href="static.OPEN_API_DOC.html" title="mcaptcha::OPEN_API_DOC static">OPEN_API_DOC</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="static" href="static.PKG_DESCRIPTION.html" title="mcaptcha::PKG_DESCRIPTION static">PKG_DESCRIPTION</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="static" href="static.PKG_HOMEPAGE.html" title="mcaptcha::PKG_HOMEPAGE static">PKG_HOMEPAGE</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="static" href="static.PKG_NAME.html" title="mcaptcha::PKG_NAME static">PKG_NAME</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="static" href="static.VERSION.html" title="mcaptcha::VERSION static">VERSION</a></td><td class="docblock-short"></td></tr></table><h2 id="functions" class="section-header"><a href="#functions">Functions</a></h2>

View File

@@ -1 +1 @@
initSidebarItems({"constant":[["CACHE_AGE",""],["DOCS",""],["PAGES",""],["V1_API_ROUTES",""],["WIDGET_ROUTES",""]],"fn":[["get_identity_service",""],["get_json_err",""],["main",""]],"macro":[["define_resource","Defines resoures for [Methods]"]],"mod":[["api",""],["data",""],["docs",""],["errors",""],["middleware",""],["pages",""],["routes",""],["settings",""],["static_assets",""],["stats",""],["widget",""]],"static":[["GIT_COMMIT_HASH",""],["OPEN_API_DOC",""],["PKG_DESCRIPTION",""],["PKG_HOMEPAGE",""],["PKG_NAME",""],["VERSION",""]],"struct":[["CSS",""],["CheckLogin",""],["Data",""],["FILES",""],["JS",""],["MOBILE_CSS",""],["SETTINGS",""],["SOURCE_FILES_OF_INSTANCE","points to source files matching build commit"],["Settings",""],["VERIFICATIN_WIDGET_CSS",""],["VERIFICATIN_WIDGET_JS",""]],"type":[["AppData",""]]}); initSidebarItems({"constant":[["CACHE_AGE",""],["DOCS",""],["PAGES",""],["V1_API_ROUTES",""],["WIDGET_ROUTES",""]],"fn":[["get_identity_service",""],["get_json_err",""],["main",""]],"macro":[["define_resource","Defines resoures for [Methods]"]],"mod":[["api",""],["data","App data: redis cache, database connections, etc."],["docs",""],["errors",""],["middleware",""],["pages",""],["routes",""],["settings",""],["static_assets",""],["stats",""],["widget",""]],"static":[["GIT_COMMIT_HASH",""],["OPEN_API_DOC",""],["PKG_DESCRIPTION",""],["PKG_HOMEPAGE",""],["PKG_NAME",""],["VERSION",""]],"struct":[["CSS",""],["CheckLogin",""],["Data","App data"],["FILES",""],["JS",""],["MOBILE_CSS",""],["SETTINGS",""],["SOURCE_FILES_OF_INSTANCE","points to source files matching build commit"],["Settings",""],["VERIFICATIN_WIDGET_CSS",""],["VERIFICATIN_WIDGET_JS",""]],"type":[["AppData",""]]});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -158,6 +158,41 @@
<span id="155">155</span> <span id="155">155</span>
<span id="156">156</span> <span id="156">156</span>
<span id="157">157</span> <span id="157">157</span>
<span id="158">158</span>
<span id="159">159</span>
<span id="160">160</span>
<span id="161">161</span>
<span id="162">162</span>
<span id="163">163</span>
<span id="164">164</span>
<span id="165">165</span>
<span id="166">166</span>
<span id="167">167</span>
<span id="168">168</span>
<span id="169">169</span>
<span id="170">170</span>
<span id="171">171</span>
<span id="172">172</span>
<span id="173">173</span>
<span id="174">174</span>
<span id="175">175</span>
<span id="176">176</span>
<span id="177">177</span>
<span id="178">178</span>
<span id="179">179</span>
<span id="180">180</span>
<span id="181">181</span>
<span id="182">182</span>
<span id="183">183</span>
<span id="184">184</span>
<span id="185">185</span>
<span id="186">186</span>
<span id="187">187</span>
<span id="188">188</span>
<span id="189">189</span>
<span id="190">190</span>
<span id="191">191</span>
<span id="192">192</span>
</pre><div class="example-wrap"><pre class="rust "> </pre><div class="example-wrap"><pre class="rust ">
<span class="comment">/* <span class="comment">/*
* Copyright (C) 2021 Aravinth Manivannan &lt;realaravinth@batsense.net&gt; * Copyright (C) 2021 Aravinth Manivannan &lt;realaravinth@batsense.net&gt;
@@ -175,10 +210,14 @@
* You should have received a copy of the GNU Affero General Public License * You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;. * along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.
*/</span> */</span>
<span class="doccomment">//! App data: redis cache, database connections, etc.</span>
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>; <span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
<span class="kw">use</span> <span class="ident">actix</span>::<span class="ident">prelude</span>::<span class="kw-2">*</span>; <span class="kw">use</span> <span class="ident">actix</span>::<span class="ident">prelude</span>::<span class="kw-2">*</span>;
<span class="kw">use</span> <span class="ident">argon2_creds</span>::{<span class="ident">Config</span>, <span class="ident">ConfigBuilder</span>, <span class="ident">PasswordPolicy</span>}; <span class="kw">use</span> <span class="ident">argon2_creds</span>::{<span class="ident">Config</span>, <span class="ident">ConfigBuilder</span>, <span class="ident">PasswordPolicy</span>};
<span class="kw">use</span> <span class="ident">lettre</span>::{
<span class="ident">transport</span>::<span class="ident">smtp</span>::<span class="ident">authentication</span>::<span class="ident">Credentials</span>, <span class="ident">AsyncSmtpTransport</span>, <span class="ident">Tokio1Executor</span>,
};
<span class="kw">use</span> <span class="ident">libmcaptcha</span>::<span class="ident">cache</span>::<span class="ident">hashcache</span>::<span class="ident">HashCache</span>; <span class="kw">use</span> <span class="ident">libmcaptcha</span>::<span class="ident">cache</span>::<span class="ident">hashcache</span>::<span class="ident">HashCache</span>;
<span class="kw">use</span> <span class="ident">libmcaptcha</span>::<span class="ident">cache</span>::<span class="ident">redis</span>::<span class="ident">RedisCache</span>; <span class="kw">use</span> <span class="ident">libmcaptcha</span>::<span class="ident">cache</span>::<span class="ident">redis</span>::<span class="ident">RedisCache</span>;
<span class="kw">use</span> <span class="ident">libmcaptcha</span>::<span class="ident">master</span>::<span class="ident">redis</span>::<span class="ident">master</span>::<span class="ident">Master</span> <span class="kw">as</span> <span class="ident">RedisMaster</span>; <span class="kw">use</span> <span class="ident">libmcaptcha</span>::<span class="ident">master</span>::<span class="ident">redis</span>::<span class="ident">master</span>::<span class="ident">Master</span> <span class="kw">as</span> <span class="ident">RedisMaster</span>;
@@ -200,12 +239,9 @@
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">SETTINGS</span>; <span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">SETTINGS</span>;
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Data</span> { <span class="doccomment">/// Represents mCaptcha cache and master system.</span>
<span class="kw">pub</span> <span class="ident">db</span>: <span class="ident">PgPool</span>, <span class="doccomment">/// When Redis is configured, [SystemGroup::Redis] is used and</span>
<span class="kw">pub</span> <span class="ident">creds</span>: <span class="ident">Config</span>, <span class="doccomment">/// in its absense, [SystemGroup::Embedded] is used</span>
<span class="kw">pub</span> <span class="ident">captcha</span>: <span class="ident">SystemGroup</span>,
}
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SystemGroup</span> { <span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SystemGroup</span> {
<span class="ident">Embedded</span>(<span class="ident">System</span><span class="op">&lt;</span><span class="ident">HashCache</span>, <span class="ident">EmbeddedMaster</span><span class="op">&gt;</span>), <span class="ident">Embedded</span>(<span class="ident">System</span><span class="op">&lt;</span><span class="ident">HashCache</span>, <span class="ident">EmbeddedMaster</span><span class="op">&gt;</span>),
<span class="ident">Redis</span>(<span class="ident">System</span><span class="op">&lt;</span><span class="ident">RedisCache</span>, <span class="ident">RedisMaster</span><span class="op">&gt;</span>), <span class="ident">Redis</span>(<span class="ident">System</span><span class="op">&lt;</span><span class="ident">RedisCache</span>, <span class="ident">RedisMaster</span><span class="op">&gt;</span>),
@@ -239,21 +275,70 @@
} }
} }
<span class="comment">// /// utility function to AddSite</span> <span class="comment">// /// utility function to AddSite</span>
<span class="comment">// pub async fn add_site(</span> <span class="comment">// pub async fn add_site(</span>
<span class="comment">// &amp;self,</span> <span class="comment">// &amp;self,</span>
<span class="comment">// msg: AddSite,</span> <span class="comment">// msg: AddSite,</span>
<span class="comment">// ) -&gt; CaptchaResult&lt;()&gt; {</span> <span class="comment">// ) -&gt; CaptchaResult&lt;()&gt; {</span>
<span class="comment">// match self {</span> <span class="comment">// match self {</span>
<span class="comment">// Self::Embedded(val) =&gt; val.master.send(msg).await?,</span> <span class="comment">// Self::Embedded(val) =&gt; val.master.send(msg).await?,</span>
<span class="comment">// Self::Redis(val) =&gt; val.master.send(msg).await?,</span> <span class="comment">// Self::Redis(val) =&gt; val.master.send(msg).await?,</span>
<span class="comment">// };</span> <span class="comment">// };</span>
<span class="comment">// Ok(())</span> <span class="comment">// Ok(())</span>
<span class="comment">// }</span> <span class="comment">// }</span>
<span class="kw">fn</span> <span class="ident">new_system</span><span class="op">&lt;</span><span class="ident">A</span>: <span class="ident">Save</span>, <span class="ident">B</span>: <span class="ident">MasterTrait</span><span class="op">&gt;</span>(<span class="ident">m</span>: <span class="ident">Addr</span><span class="op">&lt;</span><span class="ident">B</span><span class="op">&gt;</span>, <span class="ident">c</span>: <span class="ident">Addr</span><span class="op">&lt;</span><span class="ident">A</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">System</span><span class="op">&lt;</span><span class="ident">A</span>, <span class="ident">B</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">pow</span> <span class="op">=</span> <span class="ident">PoWConfigBuilder</span>::<span class="ident">default</span>()
.<span class="ident">salt</span>(<span class="ident">SETTINGS</span>.<span class="ident">pow</span>.<span class="ident">salt</span>.<span class="ident">clone</span>())
.<span class="ident">build</span>()
.<span class="ident">unwrap</span>();
<span class="ident">SystemBuilder</span>::<span class="ident">default</span>().<span class="ident">pow</span>(<span class="ident">pow</span>).<span class="ident">cache</span>(<span class="ident">c</span>).<span class="ident">master</span>(<span class="ident">m</span>).<span class="ident">build</span>()
}
<span class="comment">// read settings, if Redis is configured then produce a Redis mCaptcha cache</span>
<span class="comment">// based SystemGroup</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">match</span> <span class="kw-2">&amp;</span><span class="ident">SETTINGS</span>.<span class="ident">redis</span> {
<span class="prelude-val">Some</span>(<span class="ident">val</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">master</span> <span class="op">=</span> <span class="ident">RedisMaster</span>::<span class="ident">new</span>(<span class="ident">RedisConfig</span>::<span class="ident">Single</span>(<span class="ident">val</span>.<span class="ident">url</span>.<span class="ident">clone</span>()))
.<span class="kw">await</span>
.<span class="ident">unwrap</span>()
.<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">cache</span> <span class="op">=</span> <span class="ident">RedisCache</span>::<span class="ident">new</span>(<span class="ident">RedisConfig</span>::<span class="ident">Single</span>(<span class="ident">val</span>.<span class="ident">url</span>.<span class="ident">clone</span>()))
.<span class="kw">await</span>
.<span class="ident">unwrap</span>()
.<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">captcha</span> <span class="op">=</span> <span class="self">Self</span>::<span class="ident">new_system</span>(<span class="ident">master</span>, <span class="ident">cache</span>);
<span class="ident">SystemGroup</span>::<span class="ident">Redis</span>(<span class="ident">captcha</span>)
}
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">master</span> <span class="op">=</span> <span class="ident">EmbeddedMaster</span>::<span class="ident">new</span>(<span class="ident">SETTINGS</span>.<span class="ident">pow</span>.<span class="ident">gc</span>).<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">cache</span> <span class="op">=</span> <span class="ident">HashCache</span>::<span class="ident">default</span>().<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">captcha</span> <span class="op">=</span> <span class="self">Self</span>::<span class="ident">new_system</span>(<span class="ident">master</span>, <span class="ident">cache</span>);
<span class="ident">SystemGroup</span>::<span class="ident">Embedded</span>(<span class="ident">captcha</span>)
}
}
}
}
<span class="doccomment">/// App data</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Data</span> {
<span class="doccomment">/// databse pool</span>
<span class="kw">pub</span> <span class="ident">db</span>: <span class="ident">PgPool</span>,
<span class="doccomment">/// credential management configuration</span>
<span class="kw">pub</span> <span class="ident">creds</span>: <span class="ident">Config</span>,
<span class="doccomment">/// mCaptcha system: Redis cache, etc.</span>
<span class="kw">pub</span> <span class="ident">captcha</span>: <span class="ident">SystemGroup</span>,
<span class="doccomment">/// email client</span>
<span class="kw">pub</span> <span class="ident">mailer</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Mailer</span><span class="op">&gt;</span>,
} }
<span class="kw">impl</span> <span class="ident">Data</span> { <span class="kw">impl</span> <span class="ident">Data</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span> <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="doccomment">/// create new instance of app data</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="self">Self</span><span class="op">&gt;</span> { <span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="self">Self</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">PgPoolOptions</span>::<span class="ident">new</span>() <span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">PgPoolOptions</span>::<span class="ident">new</span>()
.<span class="ident">max_connections</span>(<span class="ident">SETTINGS</span>.<span class="ident">database</span>.<span class="ident">pool</span>) .<span class="ident">max_connections</span>(<span class="ident">SETTINGS</span>.<span class="ident">database</span>.<span class="ident">pool</span>)
@@ -273,49 +358,34 @@
<span class="ident">creds</span>.<span class="ident">init</span>(); <span class="ident">creds</span>.<span class="ident">init</span>();
<span class="ident">log</span>::<span class="macro">info</span><span class="macro">!</span>(<span class="string">&quot;Initialized credential manager&quot;</span>); <span class="ident">log</span>::<span class="macro">info</span><span class="macro">!</span>(<span class="string">&quot;Initialized credential manager&quot;</span>);
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="kw">match</span> <span class="kw-2">&amp;</span><span class="ident">SETTINGS</span>.<span class="ident">redis</span> { <span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">Data</span> {
<span class="prelude-val">Some</span>(<span class="ident">val</span>) <span class="op">=</span><span class="op">&gt;</span> { <span class="ident">creds</span>,
<span class="kw">let</span> <span class="ident">master</span> <span class="op">=</span> <span class="ident">RedisMaster</span>::<span class="ident">new</span>(<span class="ident">RedisConfig</span>::<span class="ident">Single</span>(<span class="ident">val</span>.<span class="ident">url</span>.<span class="ident">clone</span>())) <span class="ident">db</span>,
.<span class="kw">await</span> <span class="ident">captcha</span>: <span class="ident">SystemGroup</span>::<span class="ident">new</span>().<span class="kw">await</span>,
.<span class="ident">unwrap</span>() <span class="ident">mailer</span>: <span class="self">Self</span>::<span class="ident">get_mailer</span>(),
.<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">cache</span> <span class="op">=</span> <span class="ident">RedisCache</span>::<span class="ident">new</span>(<span class="ident">RedisConfig</span>::<span class="ident">Single</span>(<span class="ident">val</span>.<span class="ident">url</span>.<span class="ident">clone</span>()))
.<span class="kw">await</span>
.<span class="ident">unwrap</span>()
.<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">captcha</span> <span class="op">=</span> <span class="self">Self</span>::<span class="ident">new_system</span>(<span class="ident">master</span>, <span class="ident">cache</span>);
<span class="ident">Data</span> {
<span class="ident">creds</span>,
<span class="ident">db</span>,
<span class="ident">captcha</span>: <span class="ident">SystemGroup</span>::<span class="ident">Redis</span>(<span class="ident">captcha</span>),
}
}
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">master</span> <span class="op">=</span> <span class="ident">EmbeddedMaster</span>::<span class="ident">new</span>(<span class="ident">SETTINGS</span>.<span class="ident">pow</span>.<span class="ident">gc</span>).<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">cache</span> <span class="op">=</span> <span class="ident">HashCache</span>::<span class="ident">default</span>().<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">captcha</span> <span class="op">=</span> <span class="self">Self</span>::<span class="ident">new_system</span>(<span class="ident">master</span>, <span class="ident">cache</span>);
<span class="ident">Data</span> {
<span class="ident">creds</span>,
<span class="ident">db</span>,
<span class="ident">captcha</span>: <span class="ident">SystemGroup</span>::<span class="ident">Embedded</span>(<span class="ident">captcha</span>),
}
}
}; };
<span class="ident">Arc</span>::<span class="ident">new</span>(<span class="ident">data</span>) <span class="ident">Arc</span>::<span class="ident">new</span>(<span class="ident">data</span>)
} }
<span class="kw">fn</span> <span class="ident">new_system</span><span class="op">&lt;</span><span class="ident">A</span>: <span class="ident">Save</span>, <span class="ident">B</span>: <span class="ident">MasterTrait</span><span class="op">&gt;</span>(<span class="ident">m</span>: <span class="ident">Addr</span><span class="op">&lt;</span><span class="ident">B</span><span class="op">&gt;</span>, <span class="ident">c</span>: <span class="ident">Addr</span><span class="op">&lt;</span><span class="ident">A</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">System</span><span class="op">&lt;</span><span class="ident">A</span>, <span class="ident">B</span><span class="op">&gt;</span> { <span class="kw">fn</span> <span class="ident">get_mailer</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Mailer</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">pow</span> <span class="op">=</span> <span class="ident">PoWConfigBuilder</span>::<span class="ident">default</span>() <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">smtp</span>) <span class="op">=</span> <span class="ident">SETTINGS</span>.<span class="ident">smtp</span>.<span class="ident">as_ref</span>() {
.<span class="ident">salt</span>(<span class="ident">SETTINGS</span>.<span class="ident">pow</span>.<span class="ident">salt</span>.<span class="ident">clone</span>()) <span class="kw">let</span> <span class="ident">creds</span> <span class="op">=</span>
.<span class="ident">build</span>() <span class="ident">Credentials</span>::<span class="ident">new</span>(<span class="ident">smtp</span>.<span class="ident">username</span>.<span class="ident">to_string</span>(), <span class="ident">smtp</span>.<span class="ident">password</span>.<span class="ident">to_string</span>()); <span class="comment">// &quot;smtp_username&quot;.to_string(), &quot;smtp_password&quot;.to_string());</span>
.<span class="ident">unwrap</span>();
<span class="ident">SystemBuilder</span>::<span class="ident">default</span>().<span class="ident">pow</span>(<span class="ident">pow</span>).<span class="ident">cache</span>(<span class="ident">c</span>).<span class="ident">master</span>(<span class="ident">m</span>).<span class="ident">build</span>() <span class="kw">let</span> <span class="ident">mailer</span>: <span class="ident">Mailer</span> <span class="op">=</span> <span class="ident">AsyncSmtpTransport</span>::<span class="op">&lt;</span><span class="ident">Tokio1Executor</span><span class="op">&gt;</span>::<span class="ident">relay</span>(<span class="kw-2">&amp;</span><span class="ident">smtp</span>.<span class="ident">url</span>) <span class="comment">//&quot;smtp.gmail.com&quot;)</span>
.<span class="ident">unwrap</span>()
.<span class="ident">credentials</span>(<span class="ident">creds</span>)
.<span class="ident">build</span>();
<span class="prelude-val">Some</span>(<span class="ident">mailer</span>)
} <span class="kw">else</span> {
<span class="prelude-val">None</span>
}
} }
} }
<span class="doccomment">/// Mailer data type AsyncSmtpTransport&lt;Tokio1Executor&gt;</span>
<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">Mailer</span> <span class="op">=</span> <span class="ident">AsyncSmtpTransport</span><span class="op">&lt;</span><span class="ident">Tokio1Executor</span><span class="op">&gt;</span>;
</pre></div> </pre></div>
</section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="mcaptcha"></div> </section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="mcaptcha"></div>
<script src="../../main.js"></script><script src="../../source-script.js"></script><script src="../../source-files.js"></script><script defer src="../../search-index.js"></script></body></html> <script src="../../main.js"></script><script src="../../source-script.js"></script><script src="../../source-files.js"></script><script defer src="../../search-index.js"></script></body></html>

View File

@@ -158,6 +158,41 @@
<span id="155">155</span> <span id="155">155</span>
<span id="156">156</span> <span id="156">156</span>
<span id="157">157</span> <span id="157">157</span>
<span id="158">158</span>
<span id="159">159</span>
<span id="160">160</span>
<span id="161">161</span>
<span id="162">162</span>
<span id="163">163</span>
<span id="164">164</span>
<span id="165">165</span>
<span id="166">166</span>
<span id="167">167</span>
<span id="168">168</span>
<span id="169">169</span>
<span id="170">170</span>
<span id="171">171</span>
<span id="172">172</span>
<span id="173">173</span>
<span id="174">174</span>
<span id="175">175</span>
<span id="176">176</span>
<span id="177">177</span>
<span id="178">178</span>
<span id="179">179</span>
<span id="180">180</span>
<span id="181">181</span>
<span id="182">182</span>
<span id="183">183</span>
<span id="184">184</span>
<span id="185">185</span>
<span id="186">186</span>
<span id="187">187</span>
<span id="188">188</span>
<span id="189">189</span>
<span id="190">190</span>
<span id="191">191</span>
<span id="192">192</span>
</pre><div class="example-wrap"><pre class="rust "> </pre><div class="example-wrap"><pre class="rust ">
<span class="comment">/* <span class="comment">/*
* Copyright (C) 2021 Aravinth Manivannan &lt;realaravinth@batsense.net&gt; * Copyright (C) 2021 Aravinth Manivannan &lt;realaravinth@batsense.net&gt;
@@ -175,10 +210,14 @@
* You should have received a copy of the GNU Affero General Public License * You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;. * along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.
*/</span> */</span>
<span class="doccomment">//! App data: redis cache, database connections, etc.</span>
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>; <span class="kw">use</span> <span class="ident">std</span>::<span class="ident">sync</span>::<span class="ident">Arc</span>;
<span class="kw">use</span> <span class="ident">actix</span>::<span class="ident">prelude</span>::<span class="kw-2">*</span>; <span class="kw">use</span> <span class="ident">actix</span>::<span class="ident">prelude</span>::<span class="kw-2">*</span>;
<span class="kw">use</span> <span class="ident">argon2_creds</span>::{<span class="ident">Config</span>, <span class="ident">ConfigBuilder</span>, <span class="ident">PasswordPolicy</span>}; <span class="kw">use</span> <span class="ident">argon2_creds</span>::{<span class="ident">Config</span>, <span class="ident">ConfigBuilder</span>, <span class="ident">PasswordPolicy</span>};
<span class="kw">use</span> <span class="ident">lettre</span>::{
<span class="ident">transport</span>::<span class="ident">smtp</span>::<span class="ident">authentication</span>::<span class="ident">Credentials</span>, <span class="ident">AsyncSmtpTransport</span>, <span class="ident">Tokio1Executor</span>,
};
<span class="kw">use</span> <span class="ident">libmcaptcha</span>::<span class="ident">cache</span>::<span class="ident">hashcache</span>::<span class="ident">HashCache</span>; <span class="kw">use</span> <span class="ident">libmcaptcha</span>::<span class="ident">cache</span>::<span class="ident">hashcache</span>::<span class="ident">HashCache</span>;
<span class="kw">use</span> <span class="ident">libmcaptcha</span>::<span class="ident">cache</span>::<span class="ident">redis</span>::<span class="ident">RedisCache</span>; <span class="kw">use</span> <span class="ident">libmcaptcha</span>::<span class="ident">cache</span>::<span class="ident">redis</span>::<span class="ident">RedisCache</span>;
<span class="kw">use</span> <span class="ident">libmcaptcha</span>::<span class="ident">master</span>::<span class="ident">redis</span>::<span class="ident">master</span>::<span class="ident">Master</span> <span class="kw">as</span> <span class="ident">RedisMaster</span>; <span class="kw">use</span> <span class="ident">libmcaptcha</span>::<span class="ident">master</span>::<span class="ident">redis</span>::<span class="ident">master</span>::<span class="ident">Master</span> <span class="kw">as</span> <span class="ident">RedisMaster</span>;
@@ -200,12 +239,9 @@
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">SETTINGS</span>; <span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">SETTINGS</span>;
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Data</span> { <span class="doccomment">/// Represents mCaptcha cache and master system.</span>
<span class="kw">pub</span> <span class="ident">db</span>: <span class="ident">PgPool</span>, <span class="doccomment">/// When Redis is configured, [SystemGroup::Redis] is used and</span>
<span class="kw">pub</span> <span class="ident">creds</span>: <span class="ident">Config</span>, <span class="doccomment">/// in its absense, [SystemGroup::Embedded] is used</span>
<span class="kw">pub</span> <span class="ident">captcha</span>: <span class="ident">SystemGroup</span>,
}
<span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SystemGroup</span> { <span class="kw">pub</span> <span class="kw">enum</span> <span class="ident">SystemGroup</span> {
<span class="ident">Embedded</span>(<span class="ident">System</span><span class="op">&lt;</span><span class="ident">HashCache</span>, <span class="ident">EmbeddedMaster</span><span class="op">&gt;</span>), <span class="ident">Embedded</span>(<span class="ident">System</span><span class="op">&lt;</span><span class="ident">HashCache</span>, <span class="ident">EmbeddedMaster</span><span class="op">&gt;</span>),
<span class="ident">Redis</span>(<span class="ident">System</span><span class="op">&lt;</span><span class="ident">RedisCache</span>, <span class="ident">RedisMaster</span><span class="op">&gt;</span>), <span class="ident">Redis</span>(<span class="ident">System</span><span class="op">&lt;</span><span class="ident">RedisCache</span>, <span class="ident">RedisMaster</span><span class="op">&gt;</span>),
@@ -239,21 +275,70 @@
} }
} }
<span class="comment">// /// utility function to AddSite</span> <span class="comment">// /// utility function to AddSite</span>
<span class="comment">// pub async fn add_site(</span> <span class="comment">// pub async fn add_site(</span>
<span class="comment">// &amp;self,</span> <span class="comment">// &amp;self,</span>
<span class="comment">// msg: AddSite,</span> <span class="comment">// msg: AddSite,</span>
<span class="comment">// ) -&gt; CaptchaResult&lt;()&gt; {</span> <span class="comment">// ) -&gt; CaptchaResult&lt;()&gt; {</span>
<span class="comment">// match self {</span> <span class="comment">// match self {</span>
<span class="comment">// Self::Embedded(val) =&gt; val.master.send(msg).await?,</span> <span class="comment">// Self::Embedded(val) =&gt; val.master.send(msg).await?,</span>
<span class="comment">// Self::Redis(val) =&gt; val.master.send(msg).await?,</span> <span class="comment">// Self::Redis(val) =&gt; val.master.send(msg).await?,</span>
<span class="comment">// };</span> <span class="comment">// };</span>
<span class="comment">// Ok(())</span> <span class="comment">// Ok(())</span>
<span class="comment">// }</span> <span class="comment">// }</span>
<span class="kw">fn</span> <span class="ident">new_system</span><span class="op">&lt;</span><span class="ident">A</span>: <span class="ident">Save</span>, <span class="ident">B</span>: <span class="ident">MasterTrait</span><span class="op">&gt;</span>(<span class="ident">m</span>: <span class="ident">Addr</span><span class="op">&lt;</span><span class="ident">B</span><span class="op">&gt;</span>, <span class="ident">c</span>: <span class="ident">Addr</span><span class="op">&lt;</span><span class="ident">A</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">System</span><span class="op">&lt;</span><span class="ident">A</span>, <span class="ident">B</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">pow</span> <span class="op">=</span> <span class="ident">PoWConfigBuilder</span>::<span class="ident">default</span>()
.<span class="ident">salt</span>(<span class="ident">SETTINGS</span>.<span class="ident">pow</span>.<span class="ident">salt</span>.<span class="ident">clone</span>())
.<span class="ident">build</span>()
.<span class="ident">unwrap</span>();
<span class="ident">SystemBuilder</span>::<span class="ident">default</span>().<span class="ident">pow</span>(<span class="ident">pow</span>).<span class="ident">cache</span>(<span class="ident">c</span>).<span class="ident">master</span>(<span class="ident">m</span>).<span class="ident">build</span>()
}
<span class="comment">// read settings, if Redis is configured then produce a Redis mCaptcha cache</span>
<span class="comment">// based SystemGroup</span>
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="self">Self</span> {
<span class="kw">match</span> <span class="kw-2">&amp;</span><span class="ident">SETTINGS</span>.<span class="ident">redis</span> {
<span class="prelude-val">Some</span>(<span class="ident">val</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">master</span> <span class="op">=</span> <span class="ident">RedisMaster</span>::<span class="ident">new</span>(<span class="ident">RedisConfig</span>::<span class="ident">Single</span>(<span class="ident">val</span>.<span class="ident">url</span>.<span class="ident">clone</span>()))
.<span class="kw">await</span>
.<span class="ident">unwrap</span>()
.<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">cache</span> <span class="op">=</span> <span class="ident">RedisCache</span>::<span class="ident">new</span>(<span class="ident">RedisConfig</span>::<span class="ident">Single</span>(<span class="ident">val</span>.<span class="ident">url</span>.<span class="ident">clone</span>()))
.<span class="kw">await</span>
.<span class="ident">unwrap</span>()
.<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">captcha</span> <span class="op">=</span> <span class="self">Self</span>::<span class="ident">new_system</span>(<span class="ident">master</span>, <span class="ident">cache</span>);
<span class="ident">SystemGroup</span>::<span class="ident">Redis</span>(<span class="ident">captcha</span>)
}
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">master</span> <span class="op">=</span> <span class="ident">EmbeddedMaster</span>::<span class="ident">new</span>(<span class="ident">SETTINGS</span>.<span class="ident">pow</span>.<span class="ident">gc</span>).<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">cache</span> <span class="op">=</span> <span class="ident">HashCache</span>::<span class="ident">default</span>().<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">captcha</span> <span class="op">=</span> <span class="self">Self</span>::<span class="ident">new_system</span>(<span class="ident">master</span>, <span class="ident">cache</span>);
<span class="ident">SystemGroup</span>::<span class="ident">Embedded</span>(<span class="ident">captcha</span>)
}
}
}
}
<span class="doccomment">/// App data</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Data</span> {
<span class="doccomment">/// databse pool</span>
<span class="kw">pub</span> <span class="ident">db</span>: <span class="ident">PgPool</span>,
<span class="doccomment">/// credential management configuration</span>
<span class="kw">pub</span> <span class="ident">creds</span>: <span class="ident">Config</span>,
<span class="doccomment">/// mCaptcha system: Redis cache, etc.</span>
<span class="kw">pub</span> <span class="ident">captcha</span>: <span class="ident">SystemGroup</span>,
<span class="doccomment">/// email client</span>
<span class="kw">pub</span> <span class="ident">mailer</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Mailer</span><span class="op">&gt;</span>,
} }
<span class="kw">impl</span> <span class="ident">Data</span> { <span class="kw">impl</span> <span class="ident">Data</span> {
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span> <span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">not</span>(<span class="ident">tarpaulin_include</span>))]</span>
<span class="doccomment">/// create new instance of app data</span>
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="self">Self</span><span class="op">&gt;</span> { <span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="ident">Arc</span><span class="op">&lt;</span><span class="self">Self</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">PgPoolOptions</span>::<span class="ident">new</span>() <span class="kw">let</span> <span class="ident">db</span> <span class="op">=</span> <span class="ident">PgPoolOptions</span>::<span class="ident">new</span>()
.<span class="ident">max_connections</span>(<span class="ident">SETTINGS</span>.<span class="ident">database</span>.<span class="ident">pool</span>) .<span class="ident">max_connections</span>(<span class="ident">SETTINGS</span>.<span class="ident">database</span>.<span class="ident">pool</span>)
@@ -273,49 +358,34 @@
<span class="ident">creds</span>.<span class="ident">init</span>(); <span class="ident">creds</span>.<span class="ident">init</span>();
<span class="ident">log</span>::<span class="macro">info</span><span class="macro">!</span>(<span class="string">&quot;Initialized credential manager&quot;</span>); <span class="ident">log</span>::<span class="macro">info</span><span class="macro">!</span>(<span class="string">&quot;Initialized credential manager&quot;</span>);
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="kw">match</span> <span class="kw-2">&amp;</span><span class="ident">SETTINGS</span>.<span class="ident">redis</span> { <span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">Data</span> {
<span class="prelude-val">Some</span>(<span class="ident">val</span>) <span class="op">=</span><span class="op">&gt;</span> { <span class="ident">creds</span>,
<span class="kw">let</span> <span class="ident">master</span> <span class="op">=</span> <span class="ident">RedisMaster</span>::<span class="ident">new</span>(<span class="ident">RedisConfig</span>::<span class="ident">Single</span>(<span class="ident">val</span>.<span class="ident">url</span>.<span class="ident">clone</span>())) <span class="ident">db</span>,
.<span class="kw">await</span> <span class="ident">captcha</span>: <span class="ident">SystemGroup</span>::<span class="ident">new</span>().<span class="kw">await</span>,
.<span class="ident">unwrap</span>() <span class="ident">mailer</span>: <span class="self">Self</span>::<span class="ident">get_mailer</span>(),
.<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">cache</span> <span class="op">=</span> <span class="ident">RedisCache</span>::<span class="ident">new</span>(<span class="ident">RedisConfig</span>::<span class="ident">Single</span>(<span class="ident">val</span>.<span class="ident">url</span>.<span class="ident">clone</span>()))
.<span class="kw">await</span>
.<span class="ident">unwrap</span>()
.<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">captcha</span> <span class="op">=</span> <span class="self">Self</span>::<span class="ident">new_system</span>(<span class="ident">master</span>, <span class="ident">cache</span>);
<span class="ident">Data</span> {
<span class="ident">creds</span>,
<span class="ident">db</span>,
<span class="ident">captcha</span>: <span class="ident">SystemGroup</span>::<span class="ident">Redis</span>(<span class="ident">captcha</span>),
}
}
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">master</span> <span class="op">=</span> <span class="ident">EmbeddedMaster</span>::<span class="ident">new</span>(<span class="ident">SETTINGS</span>.<span class="ident">pow</span>.<span class="ident">gc</span>).<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">cache</span> <span class="op">=</span> <span class="ident">HashCache</span>::<span class="ident">default</span>().<span class="ident">start</span>();
<span class="kw">let</span> <span class="ident">captcha</span> <span class="op">=</span> <span class="self">Self</span>::<span class="ident">new_system</span>(<span class="ident">master</span>, <span class="ident">cache</span>);
<span class="ident">Data</span> {
<span class="ident">creds</span>,
<span class="ident">db</span>,
<span class="ident">captcha</span>: <span class="ident">SystemGroup</span>::<span class="ident">Embedded</span>(<span class="ident">captcha</span>),
}
}
}; };
<span class="ident">Arc</span>::<span class="ident">new</span>(<span class="ident">data</span>) <span class="ident">Arc</span>::<span class="ident">new</span>(<span class="ident">data</span>)
} }
<span class="kw">fn</span> <span class="ident">new_system</span><span class="op">&lt;</span><span class="ident">A</span>: <span class="ident">Save</span>, <span class="ident">B</span>: <span class="ident">MasterTrait</span><span class="op">&gt;</span>(<span class="ident">m</span>: <span class="ident">Addr</span><span class="op">&lt;</span><span class="ident">B</span><span class="op">&gt;</span>, <span class="ident">c</span>: <span class="ident">Addr</span><span class="op">&lt;</span><span class="ident">A</span><span class="op">&gt;</span>) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">System</span><span class="op">&lt;</span><span class="ident">A</span>, <span class="ident">B</span><span class="op">&gt;</span> { <span class="kw">fn</span> <span class="ident">get_mailer</span>() <span class="op">-</span><span class="op">&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Mailer</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">pow</span> <span class="op">=</span> <span class="ident">PoWConfigBuilder</span>::<span class="ident">default</span>() <span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">smtp</span>) <span class="op">=</span> <span class="ident">SETTINGS</span>.<span class="ident">smtp</span>.<span class="ident">as_ref</span>() {
.<span class="ident">salt</span>(<span class="ident">SETTINGS</span>.<span class="ident">pow</span>.<span class="ident">salt</span>.<span class="ident">clone</span>()) <span class="kw">let</span> <span class="ident">creds</span> <span class="op">=</span>
.<span class="ident">build</span>() <span class="ident">Credentials</span>::<span class="ident">new</span>(<span class="ident">smtp</span>.<span class="ident">username</span>.<span class="ident">to_string</span>(), <span class="ident">smtp</span>.<span class="ident">password</span>.<span class="ident">to_string</span>()); <span class="comment">// &quot;smtp_username&quot;.to_string(), &quot;smtp_password&quot;.to_string());</span>
.<span class="ident">unwrap</span>();
<span class="ident">SystemBuilder</span>::<span class="ident">default</span>().<span class="ident">pow</span>(<span class="ident">pow</span>).<span class="ident">cache</span>(<span class="ident">c</span>).<span class="ident">master</span>(<span class="ident">m</span>).<span class="ident">build</span>() <span class="kw">let</span> <span class="ident">mailer</span>: <span class="ident">Mailer</span> <span class="op">=</span> <span class="ident">AsyncSmtpTransport</span>::<span class="op">&lt;</span><span class="ident">Tokio1Executor</span><span class="op">&gt;</span>::<span class="ident">relay</span>(<span class="kw-2">&amp;</span><span class="ident">smtp</span>.<span class="ident">url</span>) <span class="comment">//&quot;smtp.gmail.com&quot;)</span>
.<span class="ident">unwrap</span>()
.<span class="ident">credentials</span>(<span class="ident">creds</span>)
.<span class="ident">build</span>();
<span class="prelude-val">Some</span>(<span class="ident">mailer</span>)
} <span class="kw">else</span> {
<span class="prelude-val">None</span>
}
} }
} }
<span class="doccomment">/// Mailer data type AsyncSmtpTransport&lt;Tokio1Executor&gt;</span>
<span class="kw">pub</span> <span class="kw">type</span> <span class="ident">Mailer</span> <span class="op">=</span> <span class="ident">AsyncSmtpTransport</span><span class="op">&lt;</span><span class="ident">Tokio1Executor</span><span class="op">&gt;</span>;
</pre></div> </pre></div>
</section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="tests_migrate"></div> </section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="tests_migrate"></div>
<script src="../../main.js"></script><script src="../../source-script.js"></script><script src="../../source-files.js"></script><script defer src="../../search-index.js"></script></body></html> <script src="../../main.js"></script><script src="../../source-script.js"></script><script src="../../source-files.js"></script><script defer src="../../search-index.js"></script></body></html>

View File

@@ -3,5 +3,5 @@
<link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[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='../tests_migrate/index.html'><div class='logo-container rust-logo'><img src='../rust-logo.png' alt='logo'></div></a><p class="location">Crate tests_migrate</p><div class="block version"><p>Version 0.1.0</p></div><a id="all-types" href="index.html"><p>Back to index</p></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button> <link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[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='../tests_migrate/index.html'><div class='logo-container rust-logo'><img src='../rust-logo.png' alt='logo'></div></a><p class="location">Crate tests_migrate</p><div class="block version"><p>Version 0.1.0</p></div><a id="all-types" href="index.html"><p>Back to index</p></a></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button>
<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">List of all items</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 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">List of all items</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>
</span> </span>
</h1><h3 id="Structs">Structs</h3><ul class="structs docblock"><li><a href="struct.Data.html">Data</a></li><li><a href="struct.SETTINGS.html">SETTINGS</a></li><li><a href="struct.Settings.html">Settings</a></li><li><a href="data/struct.Data.html">data::Data</a></li><li><a href="settings/struct.Captcha.html">settings::Captcha</a></li><li><a href="settings/struct.Database.html">settings::Database</a></li><li><a href="settings/struct.DatabaseBuilder.html">settings::DatabaseBuilder</a></li><li><a href="settings/struct.Redis.html">settings::Redis</a></li><li><a href="settings/struct.Server.html">settings::Server</a></li><li><a href="settings/struct.Settings.html">settings::Settings</a></li><li><a href="settings/struct.Smtp.html">settings::Smtp</a></li></ul><h3 id="Enums">Enums</h3><ul class="enums docblock"><li><a href="data/enum.SystemGroup.html">data::SystemGroup</a></li></ul><h3 id="Functions">Functions</h3><ul class="functions docblock"><li><a href="fn.build.html">build</a></li><li><a href="fn.cache_bust.html">cache_bust</a></li><li><a href="fn.main.html">main</a></li><li><a href="settings/fn.check_url.html">settings::check_url</a></li><li><a href="settings/fn.set_database_url.html">settings::set_database_url</a></li><li><a href="settings/fn.set_from_database_url.html">settings::set_from_database_url</a></li></ul></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../" data-current-crate="tests_migrate"></div> </h1><h3 id="Structs">Structs</h3><ul class="structs docblock"><li><a href="struct.Data.html">Data</a></li><li><a href="struct.SETTINGS.html">SETTINGS</a></li><li><a href="struct.Settings.html">Settings</a></li><li><a href="data/struct.Data.html">data::Data</a></li><li><a href="settings/struct.Captcha.html">settings::Captcha</a></li><li><a href="settings/struct.Database.html">settings::Database</a></li><li><a href="settings/struct.DatabaseBuilder.html">settings::DatabaseBuilder</a></li><li><a href="settings/struct.Redis.html">settings::Redis</a></li><li><a href="settings/struct.Server.html">settings::Server</a></li><li><a href="settings/struct.Settings.html">settings::Settings</a></li><li><a href="settings/struct.Smtp.html">settings::Smtp</a></li></ul><h3 id="Enums">Enums</h3><ul class="enums docblock"><li><a href="data/enum.SystemGroup.html">data::SystemGroup</a></li></ul><h3 id="Functions">Functions</h3><ul class="functions docblock"><li><a href="fn.build.html">build</a></li><li><a href="fn.cache_bust.html">cache_bust</a></li><li><a href="fn.main.html">main</a></li><li><a href="settings/fn.check_url.html">settings::check_url</a></li><li><a href="settings/fn.set_database_url.html">settings::set_database_url</a></li><li><a href="settings/fn.set_from_database_url.html">settings::set_from_database_url</a></li></ul><h3 id="Typedefs">Typedefs</h3><ul class="typedefs docblock"><li><a href="data/type.Mailer.html">data::Mailer</a></li></ul></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../" data-current-crate="tests_migrate"></div>
<script src="../main.js"></script><script defer src="../search-index.js"></script></body></html> <script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>

View File

@@ -1,15 +1,18 @@
<!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 `SystemGroup` enum in crate `tests_migrate`."><meta name="keywords" content="rust, rustlang, rust-lang, SystemGroup"><title>tests_migrate::data::SystemGroup - 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="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg"> <!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 `SystemGroup` enum in crate `tests_migrate`."><meta name="keywords" content="rust, rustlang, rust-lang, SystemGroup"><title>tests_migrate::data::SystemGroup - 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="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg">
<link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"> <link rel="alternate icon" type="image/png" href="../../favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc enum"><!--[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='../../tests_migrate/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><p class="location">Enum SystemGroup</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#variants">Variants</a><div class="sidebar-links"><a href="#variant.Embedded">Embedded</a><a href="#variant.Redis">Redis</a></div><a class="sidebar-title" href="#implementations">Methods</a><div class="sidebar-links"><a href="#method.get_pow">get_pow</a><a href="#method.validate_verification_tokens">validate_verification_tokens</a><a href="#method.verify_pow">verify_pow</a></div><a class="sidebar-title" href="#synthetic-implementations">Auto Trait Implementations</a><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><a class="sidebar-title" href="#blanket-implementations">Blanket Implementations</a><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow&lt;T&gt;</a><a href="#impl-BorrowMut%3CT%3E">BorrowMut&lt;T&gt;</a><a href="#impl-Conv">Conv</a><a href="#impl-FmtForward">FmtForward</a><a href="#impl-From%3CT%3E">From&lt;T&gt;</a><a href="#impl-Instrument">Instrument</a><a href="#impl-Into%3CU%3E">Into&lt;U&gt;</a><a href="#impl-Pipe">Pipe</a><a href="#impl-PipeAsRef">PipeAsRef</a><a href="#impl-PipeBorrow">PipeBorrow</a><a href="#impl-PipeDeref">PipeDeref</a><a href="#impl-PipeRef">PipeRef</a><a href="#impl-Same%3CT%3E">Same&lt;T&gt;</a><a href="#impl-Tap">Tap</a><a href="#impl-TapAsRef%3CU%3E">TapAsRef&lt;U&gt;</a><a href="#impl-TapBorrow%3CU%3E">TapBorrow&lt;U&gt;</a><a href="#impl-TapDeref">TapDeref</a><a href="#impl-TryConv">TryConv</a><a href="#impl-TryFrom%3CU%3E">TryFrom&lt;U&gt;</a><a href="#impl-TryInto%3CU%3E">TryInto&lt;U&gt;</a><a href="#impl-VZip%3CV%3E">VZip&lt;V&gt;</a></div></div><p class="location"><a href="../index.html">tests_migrate</a>::<wbr><a href="index.html">data</a></p><div id="sidebar-vars" data-name="SystemGroup" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button> <link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc enum"><!--[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='../../tests_migrate/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><p class="location">Enum SystemGroup</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#variants">Variants</a><div class="sidebar-links"><a href="#variant.Embedded">Embedded</a><a href="#variant.Redis">Redis</a></div><a class="sidebar-title" href="#implementations">Methods</a><div class="sidebar-links"><a href="#method.get_pow">get_pow</a><a href="#method.new">new</a><a href="#method.new_system">new_system</a><a href="#method.validate_verification_tokens">validate_verification_tokens</a><a href="#method.verify_pow">verify_pow</a></div><a class="sidebar-title" href="#synthetic-implementations">Auto Trait Implementations</a><div class="sidebar-links"><a href="#impl-RefUnwindSafe">!RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">!UnwindSafe</a></div><a class="sidebar-title" href="#blanket-implementations">Blanket Implementations</a><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow&lt;T&gt;</a><a href="#impl-BorrowMut%3CT%3E">BorrowMut&lt;T&gt;</a><a href="#impl-Conv">Conv</a><a href="#impl-FmtForward">FmtForward</a><a href="#impl-From%3CT%3E">From&lt;T&gt;</a><a href="#impl-Instrument">Instrument</a><a href="#impl-Into%3CU%3E">Into&lt;U&gt;</a><a href="#impl-Pipe">Pipe</a><a href="#impl-PipeAsRef">PipeAsRef</a><a href="#impl-PipeBorrow">PipeBorrow</a><a href="#impl-PipeDeref">PipeDeref</a><a href="#impl-PipeRef">PipeRef</a><a href="#impl-Same%3CT%3E">Same&lt;T&gt;</a><a href="#impl-Tap">Tap</a><a href="#impl-TapAsRef%3CU%3E">TapAsRef&lt;U&gt;</a><a href="#impl-TapBorrow%3CU%3E">TapBorrow&lt;U&gt;</a><a href="#impl-TapDeref">TapDeref</a><a href="#impl-TryConv">TryConv</a><a href="#impl-TryFrom%3CU%3E">TryFrom&lt;U&gt;</a><a href="#impl-TryInto%3CU%3E">TryInto&lt;U&gt;</a><a href="#impl-VZip%3CV%3E">VZip&lt;V&gt;</a></div></div><p class="location"><a href="../index.html">tests_migrate</a>::<wbr><a href="index.html">data</a></p><div id="sidebar-vars" data-name="SystemGroup" data-ty="enum" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button>
<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">Enum <a href="../index.html">tests_migrate</a>::<wbr><a href="index.html">data</a>::<wbr><a class="enum" href="">SystemGroup</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/tests_migrate/data.rs.html#48-51" title="goto source code">[src]</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class="rust enum">pub enum SystemGroup { <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">Enum <a href="../index.html">tests_migrate</a>::<wbr><a href="index.html">data</a>::<wbr><a class="enum" href="">SystemGroup</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/tests_migrate/data.rs.html#49-52" title="goto source code">[src]</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class="rust enum">pub enum SystemGroup {
Embedded(System&lt;HashCache, EmbeddedMaster&gt;), Embedded(System&lt;HashCache, EmbeddedMaster&gt;),
Redis(System&lt;RedisCache, RedisMaster&gt;), Redis(System&lt;RedisCache, RedisMaster&gt;),
}</pre></div><h2 id="variants" class="variants small-section-header"> }</pre></div><div class="docblock"><p>Represents mCaptcha cache and master system.
When Redis is configured, <a href="../../tests_migrate/data/enum.SystemGroup.html#variant.Redis" title="SystemGroup::Redis">SystemGroup::Redis</a> is used and
in its absense, <a href="../../tests_migrate/data/enum.SystemGroup.html#variant.Embedded" title="SystemGroup::Embedded">SystemGroup::Embedded</a> is used</p>
</div><h2 id="variants" class="variants small-section-header">
Variants<a href="#variants" class="anchor"></a></h2> Variants<a href="#variants" class="anchor"></a></h2>
<div id="variant.Embedded" class="variant small-section-header"><a href="#variant.Embedded" class="anchor field"></a><code>Embedded(System&lt;HashCache, EmbeddedMaster&gt;)</code></div><div id="variant.Redis" class="variant small-section-header"><a href="#variant.Redis" class="anchor field"></a><code>Redis(System&lt;RedisCache, RedisMaster&gt;)</code></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><h3 id="impl" class="impl"><code class="in-band">impl <a class="enum" href="../../tests_migrate/data/enum.SystemGroup.html" title="enum tests_migrate::data::SystemGroup">SystemGroup</a></code><a href="#impl" class="anchor"></a><a class="srclink" href="../../src/tests_migrate/data.rs.html#53-92" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.get_pow" class="method"><code>pub async fn <a href="#method.get_pow" class="fnname">get_pow</a>(&amp;self, id: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;PoWConfig&gt;</code><a class="srclink" href="../../src/tests_migrate/data.rs.html#55-60" title="goto source code">[src]</a></h4><div class="docblock"><p>utility function to get difficulty factor of site <code>id</code> and cache it</p> <div id="variant.Embedded" class="variant small-section-header"><a href="#variant.Embedded" class="anchor field"></a><code>Embedded(System&lt;HashCache, EmbeddedMaster&gt;)</code></div><div id="variant.Redis" class="variant small-section-header"><a href="#variant.Redis" class="anchor field"></a><code>Redis(System&lt;RedisCache, RedisMaster&gt;)</code></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><h3 id="impl" class="impl"><code class="in-band">impl <a class="enum" href="../../tests_migrate/data/enum.SystemGroup.html" title="enum tests_migrate::data::SystemGroup">SystemGroup</a></code><a href="#impl" class="anchor"></a><a class="srclink" href="../../src/tests_migrate/data.rs.html#54-129" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.get_pow" class="method"><code>pub async fn <a href="#method.get_pow" class="fnname">get_pow</a>(&amp;self, id: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;PoWConfig&gt;</code><a class="srclink" href="../../src/tests_migrate/data.rs.html#56-61" title="goto source code">[src]</a></h4><div class="docblock"><p>utility function to get difficulty factor of site <code>id</code> and cache it</p>
</div><h4 id="method.verify_pow" class="method"><code>pub async fn <a href="#method.verify_pow" class="fnname">verify_pow</a>(&amp;self, work: Work) -&gt; CaptchaResult&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code><a class="srclink" href="../../src/tests_migrate/data.rs.html#63-68" title="goto source code">[src]</a></h4><div class="docblock"><p>utility function to verify [Work]</p> </div><h4 id="method.verify_pow" class="method"><code>pub async fn <a href="#method.verify_pow" class="fnname">verify_pow</a>(&amp;self, work: Work) -&gt; CaptchaResult&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>&gt;</code><a class="srclink" href="../../src/tests_migrate/data.rs.html#64-69" title="goto source code">[src]</a></h4><div class="docblock"><p>utility function to verify [Work]</p>
</div><h4 id="method.validate_verification_tokens" class="method"><code>pub async fn <a href="#method.validate_verification_tokens" class="fnname">validate_verification_tokens</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;msg: VerifyCaptchaResult<br>) -&gt; CaptchaResult&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code><a class="srclink" href="../../src/tests_migrate/data.rs.html#71-79" title="goto source code">[src]</a></h4><div class="docblock"><p>utility function to validate verification tokens</p> </div><h4 id="method.validate_verification_tokens" class="method"><code>pub async fn <a href="#method.validate_verification_tokens" class="fnname">validate_verification_tokens</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;msg: VerifyCaptchaResult<br>) -&gt; CaptchaResult&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</code><a class="srclink" href="../../src/tests_migrate/data.rs.html#72-80" title="goto source code">[src]</a></h4><div class="docblock"><p>utility function to validate verification tokens</p>
</div></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"><h3 id="impl-RefUnwindSafe" class="impl"><code class="in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.RefUnwindSafe.html" title="trait std::panic::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="../../tests_migrate/data/enum.SystemGroup.html" title="enum tests_migrate::data::SystemGroup">SystemGroup</a></code><a href="#impl-RefUnwindSafe" class="anchor"></a><a class="srclink" href="../../src/tests_migrate/tests-migrate.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Send" class="impl"><code class="in-band">impl <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="enum" href="../../tests_migrate/data/enum.SystemGroup.html" title="enum tests_migrate::data::SystemGroup">SystemGroup</a></code><a href="#impl-Send" class="anchor"></a><a class="srclink" href="../../src/tests_migrate/tests-migrate.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Sync" class="impl"><code class="in-band">impl <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="enum" href="../../tests_migrate/data/enum.SystemGroup.html" title="enum tests_migrate::data::SystemGroup">SystemGroup</a></code><a href="#impl-Sync" class="anchor"></a><a class="srclink" href="../../src/tests_migrate/tests-migrate.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Unpin" class="impl"><code class="in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="../../tests_migrate/data/enum.SystemGroup.html" title="enum tests_migrate::data::SystemGroup">SystemGroup</a></code><a href="#impl-Unpin" class="anchor"></a><a class="srclink" href="../../src/tests_migrate/tests-migrate.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-UnwindSafe" class="impl"><code class="in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.UnwindSafe.html" title="trait std::panic::UnwindSafe">UnwindSafe</a> for <a class="enum" href="../../tests_migrate/data/enum.SystemGroup.html" title="enum tests_migrate::data::SystemGroup">SystemGroup</a></code><a href="#impl-UnwindSafe" class="anchor"></a><a class="srclink" href="../../src/tests_migrate/tests-migrate.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><h3 id="impl-Any" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-Any" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#131-135" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.type_id" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p> </div><h4 id="method.new_system" class="method"><code>fn <a href="#method.new_system" class="fnname">new_system</a>&lt;A:&nbsp;Save, B:&nbsp;MasterTrait&gt;(m: Addr&lt;B&gt;, c: Addr&lt;A&gt;) -&gt; System&lt;A, B&gt;</code><a class="srclink" href="../../src/tests_migrate/data.rs.html#94-101" title="goto source code">[src]</a></h4><h4 id="method.new" class="method"><code>async fn <a href="#method.new" class="fnname">new</a>() -&gt; Self</code><a class="srclink" href="../../src/tests_migrate/data.rs.html#105-128" title="goto source code">[src]</a></h4></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"><h3 id="impl-RefUnwindSafe" class="impl"><code class="in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.RefUnwindSafe.html" title="trait std::panic::RefUnwindSafe">RefUnwindSafe</a> for <a class="enum" href="../../tests_migrate/data/enum.SystemGroup.html" title="enum tests_migrate::data::SystemGroup">SystemGroup</a></code><a href="#impl-RefUnwindSafe" class="anchor"></a><a class="srclink" href="../../src/tests_migrate/tests-migrate.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Send" class="impl"><code class="in-band">impl <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="enum" href="../../tests_migrate/data/enum.SystemGroup.html" title="enum tests_migrate::data::SystemGroup">SystemGroup</a></code><a href="#impl-Send" class="anchor"></a><a class="srclink" href="../../src/tests_migrate/tests-migrate.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Sync" class="impl"><code class="in-band">impl <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="enum" href="../../tests_migrate/data/enum.SystemGroup.html" title="enum tests_migrate::data::SystemGroup">SystemGroup</a></code><a href="#impl-Sync" class="anchor"></a><a class="srclink" href="../../src/tests_migrate/tests-migrate.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Unpin" class="impl"><code class="in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="enum" href="../../tests_migrate/data/enum.SystemGroup.html" title="enum tests_migrate::data::SystemGroup">SystemGroup</a></code><a href="#impl-Unpin" class="anchor"></a><a class="srclink" href="../../src/tests_migrate/tests-migrate.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-UnwindSafe" class="impl"><code class="in-band">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.UnwindSafe.html" title="trait std::panic::UnwindSafe">UnwindSafe</a> for <a class="enum" href="../../tests_migrate/data/enum.SystemGroup.html" title="enum tests_migrate::data::SystemGroup">SystemGroup</a></code><a href="#impl-UnwindSafe" class="anchor"></a><a class="srclink" href="../../src/tests_migrate/tests-migrate.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><h3 id="impl-Any" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-Any" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#131-135" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.type_id" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></p>
</div></div><h3 id="impl-Borrow%3CT%3E" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-Borrow%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#207-211" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.borrow" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p> </div></div><h3 id="impl-Borrow%3CT%3E" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-Borrow%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#207-211" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.borrow" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
</div></div><h3 id="impl-BorrowMut%3CT%3E" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214-218" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.borrow_mut" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#215" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p> </div></div><h3 id="impl-BorrowMut%3CT%3E" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214-218" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.borrow_mut" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#215" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
</div></div><h3 id="impl-Conv" class="impl"><code class="in-band">impl&lt;T&gt; Conv for T</code><a href="#impl-Conv" class="anchor"></a></h3><div class="impl-items"><h4 id="method.conv" class="method hidden"><code>pub fn <a href="#method.conv" class="fnname">conv</a>&lt;T&gt;(self) -&gt; T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,&nbsp;</span></code></h4><div class='docblock hidden'><p>Converts <code>self</code> into <code>T</code> using <code>Into&lt;T&gt;</code>. <a href="#method.conv">Read more</a></p> </div></div><h3 id="impl-Conv" class="impl"><code class="in-band">impl&lt;T&gt; Conv for T</code><a href="#impl-Conv" class="anchor"></a></h3><div class="impl-items"><h4 id="method.conv" class="method hidden"><code>pub fn <a href="#method.conv" class="fnname">conv</a>&lt;T&gt;(self) -&gt; T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,&nbsp;</span></code></h4><div class='docblock hidden'><p>Converts <code>self</code> into <code>T</code> using <code>Into&lt;T&gt;</code>. <a href="#method.conv">Read more</a></p>

View File

@@ -1,7 +1,14 @@
<!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 `data` mod in crate `tests_migrate`."><meta name="keywords" content="rust, rustlang, rust-lang, data"><title>tests_migrate::data - 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="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg"> <!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 `data` mod in crate `tests_migrate`."><meta name="keywords" content="rust, rustlang, rust-lang, data"><title>tests_migrate::data - 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="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg">
<link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"> <link rel="alternate icon" type="image/png" href="../../favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[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='../../tests_migrate/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><p class="location">Module data</p><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></div><p class="location"><a href="../index.html">tests_migrate</a></p><div id="sidebar-vars" data-name="data" data-ty="mod" data-relpath="../"></div><script defer src="../sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button> <link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[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='../../tests_migrate/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><p class="location">Module data</p><div class="sidebar-elems"><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#types">Type Definitions</a></li></ul></div><p class="location"><a href="../index.html">tests_migrate</a></p><div id="sidebar-vars" data-name="data" data-ty="mod" data-relpath="../"></div><script defer src="../sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button>
<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">Module <a href="../index.html">tests_migrate</a>::<wbr><a class="mod" href="">data</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/tests_migrate/data.rs.html#17-157" title="goto source code">[src]</a></span></h1><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2> <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">Module <a href="../index.html">tests_migrate</a>::<wbr><a class="mod" href="">data</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/tests_migrate/data.rs.html#17-192" title="goto source code">[src]</a></span></h1><div class="docblock"><p>App data: redis cache, database connections, etc.</p>
<table><tr class="module-item"><td><a class="struct" href="struct.Data.html" title="tests_migrate::data::Data struct">Data</a></td><td class="docblock-short"></td></tr></table><h2 id="enums" class="section-header"><a href="#enums">Enums</a></h2> </div><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2>
<table><tr class="module-item"><td><a class="enum" href="enum.SystemGroup.html" title="tests_migrate::data::SystemGroup enum">SystemGroup</a></td><td class="docblock-short"></td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="tests_migrate"></div> <table><tr class="module-item"><td><a class="struct" href="struct.Data.html" title="tests_migrate::data::Data struct">Data</a></td><td class="docblock-short"><p>App data</p>
</td></tr></table><h2 id="enums" class="section-header"><a href="#enums">Enums</a></h2>
<table><tr class="module-item"><td><a class="enum" href="enum.SystemGroup.html" title="tests_migrate::data::SystemGroup enum">SystemGroup</a></td><td class="docblock-short"><p>Represents mCaptcha cache and master system.
When Redis is configured, <a href="../../tests_migrate/data/enum.SystemGroup.html#variant.Redis" title="SystemGroup::Redis">SystemGroup::Redis</a> is used and
in its absense, <a href="../../tests_migrate/data/enum.SystemGroup.html#variant.Embedded" title="SystemGroup::Embedded">SystemGroup::Embedded</a> is used</p>
</td></tr></table><h2 id="types" class="section-header"><a href="#types">Type Definitions</a></h2>
<table><tr class="module-item"><td><a class="type" href="type.Mailer.html" title="tests_migrate::data::Mailer type">Mailer</a></td><td class="docblock-short"><p>Mailer data type AsyncSmtpTransport<Tokio1Executor></p>
</td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="tests_migrate"></div>
<script src="../../main.js"></script><script defer src="../../search-index.js"></script></body></html> <script src="../../main.js"></script><script defer src="../../search-index.js"></script></body></html>

View File

@@ -1 +1 @@
initSidebarItems({"enum":[["SystemGroup",""]],"struct":[["Data",""]]}); initSidebarItems({"enum":[["SystemGroup","Represents mCaptcha cache and master system. When Redis is configured, [SystemGroup::Redis] is used and in its absense, [SystemGroup::Embedded] is used"]],"struct":[["Data","App data"]],"type":[["Mailer","Mailer data type AsyncSmtpTransport"]]});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
<!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 `Mailer` type in crate `tests_migrate`."><meta name="keywords" content="rust, rustlang, rust-lang, Mailer"><title>tests_migrate::data::Mailer - 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="../../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled ><script id="default-settings"></script><script src="../../storage.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../../favicon.svg">
<link rel="alternate icon" type="image/png" href="../../favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../../down-arrow.svg");}</style></head><body class="rustdoc type"><!--[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='../../tests_migrate/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><p class="location">Type Definition Mailer</p><div class="sidebar-elems"><p class="location"><a href="../index.html">tests_migrate</a>::<wbr><a href="index.html">data</a></p><div id="sidebar-vars" data-name="Mailer" data-ty="type" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button>
<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">Type Definition <a href="../index.html">tests_migrate</a>::<wbr><a href="index.html">data</a>::<wbr><a class="type" href="">Mailer</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/tests_migrate/data.rs.html#192" title="goto source code">[src]</a></span></h1><pre class="rust typedef">type Mailer = <a class="struct" href="https://docs.rs/crate/lettre/0.10.0-rc.3/lettre/transport/smtp/async_transport/struct.AsyncSmtpTransport.html" title="struct lettre::transport::smtp::async_transport::AsyncSmtpTransport">AsyncSmtpTransport</a>&lt;<a class="struct" href="https://docs.rs/crate/lettre/0.10.0-rc.3/lettre/executor/struct.Tokio1Executor.html" title="struct lettre::executor::Tokio1Executor">Tokio1Executor</a>&gt;;</pre><div class="docblock"><p>Mailer data type AsyncSmtpTransport<Tokio1Executor></p>
</div></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../../" data-current-crate="tests_migrate"></div>
<script src="../../main.js"></script><script defer src="../../search-index.js"></script></body></html>

View File

@@ -2,7 +2,9 @@
<link rel="alternate icon" type="image/png" href="../favicon-16x16.png"> <link rel="alternate icon" type="image/png" href="../favicon-16x16.png">
<link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[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='../tests_migrate/index.html'><div class='logo-container rust-logo'><img src='../rust-logo.png' alt='logo'></div></a><p class="location">Crate tests_migrate</p><div class="block version"><p>Version 0.1.0</p></div><div class="sidebar-elems"><a id="all-types" href="all.html"><p>See all tests_migrate's items</p></a><div class="block items"><ul><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#functions">Functions</a></li></ul></div><p class="location"></p><div id="sidebar-vars" data-name="tests_migrate" data-ty="mod" data-relpath="../"></div></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button> <link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[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='../tests_migrate/index.html'><div class='logo-container rust-logo'><img src='../rust-logo.png' alt='logo'></div></a><p class="location">Crate tests_migrate</p><div class="block version"><p>Version 0.1.0</p></div><div class="sidebar-elems"><a id="all-types" href="all.html"><p>See all tests_migrate's items</p></a><div class="block items"><ul><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#functions">Functions</a></li></ul></div><p class="location"></p><div id="sidebar-vars" data-name="tests_migrate" data-ty="mod" data-relpath="../"></div></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" class="help-button">?</button>
<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">Crate <a class="mod" href="">tests_migrate</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/tests_migrate/tests-migrate.rs.html#17-89" title="goto source code">[src]</a></span></h1><h2 id="modules" class="section-header"><a href="#modules">Modules</a></h2> <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">Crate <a class="mod" href="">tests_migrate</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/tests_migrate/tests-migrate.rs.html#17-89" title="goto source code">[src]</a></span></h1><h2 id="modules" class="section-header"><a href="#modules">Modules</a></h2>
<table><tr class="module-item"><td><a class="mod" href="data/index.html" title="tests_migrate::data mod">data</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="mod" href="settings/index.html" title="tests_migrate::settings mod">settings</a></td><td class="docblock-short"></td></tr></table><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2> <table><tr class="module-item"><td><a class="mod" href="data/index.html" title="tests_migrate::data mod">data</a></td><td class="docblock-short"><p>App data: redis cache, database connections, etc.</p>
<table><tr class="module-item"><td><a class="struct" href="struct.Data.html" title="tests_migrate::Data struct">Data</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.SETTINGS.html" title="tests_migrate::SETTINGS struct">SETTINGS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.Settings.html" title="tests_migrate::Settings struct">Settings</a></td><td class="docblock-short"></td></tr></table><h2 id="functions" class="section-header"><a href="#functions">Functions</a></h2> </td></tr><tr class="module-item"><td><a class="mod" href="settings/index.html" title="tests_migrate::settings mod">settings</a></td><td class="docblock-short"></td></tr></table><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2>
<table><tr class="module-item"><td><a class="struct" href="struct.Data.html" title="tests_migrate::Data struct">Data</a></td><td class="docblock-short"><p>App data</p>
</td></tr><tr class="module-item"><td><a class="struct" href="struct.SETTINGS.html" title="tests_migrate::SETTINGS struct">SETTINGS</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="struct" href="struct.Settings.html" title="tests_migrate::Settings struct">Settings</a></td><td class="docblock-short"></td></tr></table><h2 id="functions" class="section-header"><a href="#functions">Functions</a></h2>
<table><tr class="module-item"><td><a class="fn" href="fn.build.html" title="tests_migrate::build fn">build</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="fn" href="fn.cache_bust.html" title="tests_migrate::cache_bust fn">cache_bust</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="fn" href="fn.main.html" title="tests_migrate::main fn">main</a></td><td class="docblock-short"></td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../" data-current-crate="tests_migrate"></div> <table><tr class="module-item"><td><a class="fn" href="fn.build.html" title="tests_migrate::build fn">build</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="fn" href="fn.cache_bust.html" title="tests_migrate::cache_bust fn">cache_bust</a></td><td class="docblock-short"></td></tr><tr class="module-item"><td><a class="fn" href="fn.main.html" title="tests_migrate::main fn">main</a></td><td class="docblock-short"></td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../" data-current-crate="tests_migrate"></div>
<script src="../main.js"></script><script defer src="../search-index.js"></script></body></html> <script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>

View File

@@ -1 +1 @@
initSidebarItems({"fn":[["build",""],["cache_bust",""],["main",""]],"mod":[["data",""],["settings",""]],"struct":[["Data",""],["SETTINGS",""],["Settings",""]]}); initSidebarItems({"fn":[["build",""],["cache_bust",""],["main",""]],"mod":[["data","App data: redis cache, database connections, etc."],["settings",""]],"struct":[["Data","App data"],["SETTINGS",""],["Settings",""]]});

File diff suppressed because one or more lines are too long