Deploying to gh-pages from @ 90e60b0486 🚀

This commit is contained in:
realaravinth
2023-04-21 09:44:52 +00:00
parent 1e50b20ffd
commit 71bf655f9a
1188 changed files with 29412 additions and 9377 deletions

View File

@@ -0,0 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `FIELDS` constant in crate `mcaptcha`."><title>FIELDS in mcaptcha::stats - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-c4dbdcde0fbd8430.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-db279b6232be9c13.css"><link rel="stylesheet" disabled href="../../static.files/dark-cf923f49f397b216.css"><link rel="stylesheet" disabled href="../../static.files/ayu-be46fdc453a55015.css"><script src="../../static.files/storage-3891ce972e3a2bf8.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-98a684e84ae5b08b.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="logo-container" href="../../mcaptcha/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2></h2></nav><nav class="sidebar"><a class="logo-container" href="../../mcaptcha/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><div class="sidebar-elems"><h2><a href="index.html">In mcaptcha::stats</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="../index.html">mcaptcha</a>::<wbr><a href="index.html">stats</a>::<wbr><a class="constant" href="#">FIELDS</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/mcaptcha/stats.rs.html#60">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>const FIELDS: &amp;'static [&amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>];</code></pre></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="mcaptcha" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>

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 +1 @@
window.SIDEBAR_ITEMS = {"struct":[["CaptchaStats",""],["Dummy",""],["Real",""]],"trait":[["CloneStats","Trait to clone MCDatabase"],["Stats",""]]};
window.SIDEBAR_ITEMS = {"constant":["FIELDS"],"enum":["__Field"],"struct":["CaptchaStats","Dummy","Real","__FieldVisitor","__Visitor"],"trait":["CloneStats","Stats"]};

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,5 +1,7 @@
<!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="Trait to clone MCDatabase"><meta name="keywords" content="rust, rustlang, rust-lang, CloneStats"><title>CloneStats in mcaptcha::stats - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-93196c7a1c3542a8.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-4743e13df3dfe8c4.css"><link rel="stylesheet" disabled href="../../static.files/dark-0e1b889528bd466b.css"><link rel="stylesheet" disabled href="../../static.files/ayu-65289d5d067c7c66.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-3367e395607fafc1.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="logo-container" href="../../mcaptcha/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2></h2></nav><nav class="sidebar"><a class="logo-container" href="../../mcaptcha/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">CloneStats</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.clone_stats">clone_stats</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In mcaptcha::stats</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">mcaptcha</a>::<wbr><a href="index.html">stats</a>::<wbr><a class="trait" href="#">CloneStats</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/mcaptcha/stats.rs.html#39-42">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><div class="item-decl"><pre class="rust"><code>pub trait CloneStats {
fn <a href="#tymethod.clone_stats" class="fn">clone_stats</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.68.2/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.Stats.html" title="trait mcaptcha::stats::Stats">Stats</a>&gt;;
}</code></pre></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait to clone MCDatabase</p>
</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.clone_stats" class="method has-srclink"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#41">source</a><h4 class="code-header">fn <a href="#tymethod.clone_stats" class="fn">clone_stats</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.68.2/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.Stats.html" title="trait mcaptcha::stats::Stats">Stats</a>&gt;</h4></section></summary><div class="docblock"><p>clone DB</p>
</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-CloneStats-for-T" class="impl has-srclink"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#44-51">source</a><a href="#impl-CloneStats-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="trait.CloneStats.html" title="trait mcaptcha::stats::CloneStats">CloneStats</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="trait.Stats.html" title="trait mcaptcha::stats::Stats">Stats</a> + <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + 'static,</span></h3></section></div><script src="../../implementors/mcaptcha/stats/trait.CloneStats.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="mcaptcha" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.2 (9eb3afe9e 2023-03-27)" data-search-js="search-98d53477a794af0b.js" data-settings-js="settings-c3c521c753752a1a.js" data-settings-css="settings-08ddfdda51b8ee2e.css" ></div></body></html>
<!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="Trait to clone MCDatabase"><title>CloneStats in mcaptcha::stats - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-c4dbdcde0fbd8430.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-db279b6232be9c13.css"><link rel="stylesheet" disabled href="../../static.files/dark-cf923f49f397b216.css"><link rel="stylesheet" disabled href="../../static.files/ayu-be46fdc453a55015.css"><script src="../../static.files/storage-3891ce972e3a2bf8.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-98a684e84ae5b08b.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="logo-container" href="../../mcaptcha/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2></h2></nav><nav class="sidebar"><a class="logo-container" href="../../mcaptcha/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">CloneStats</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.clone_stats">clone_stats</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In mcaptcha::stats</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">mcaptcha</a>::<wbr><a href="index.html">stats</a>::<wbr><a class="trait" href="#">CloneStats</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/mcaptcha/stats.rs.html#39-42">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub trait CloneStats {
// Required method
fn <a href="#tymethod.clone_stats" class="fn">clone_stats</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.Stats.html" title="trait mcaptcha::stats::Stats">Stats</a>&gt;;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait to clone MCDatabase</p>
</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.clone_stats" class="method"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#41">source</a><h4 class="code-header">fn <a href="#tymethod.clone_stats" class="fn">clone_stats</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.Stats.html" title="trait mcaptcha::stats::Stats">Stats</a>&gt;</h4></section></summary><div class="docblock"><p>clone DB</p>
</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-CloneStats-for-T" class="impl"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#44-51">source</a><a href="#impl-CloneStats-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="trait.CloneStats.html" title="trait mcaptcha::stats::CloneStats">CloneStats</a> for T<span class="where fmt-newline">where
T: <a class="trait" href="trait.Stats.html" title="trait mcaptcha::stats::Stats">Stats</a> + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + 'static,</span></h3></section></div><script src="../../implementors/mcaptcha/stats/trait.CloneStats.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="mcaptcha" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>

View File

@@ -1,10 +1,79 @@
<!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 `Stats` trait in crate `mcaptcha`."><meta name="keywords" content="rust, rustlang, rust-lang, Stats"><title>Stats in mcaptcha::stats - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-93196c7a1c3542a8.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-4743e13df3dfe8c4.css"><link rel="stylesheet" disabled href="../../static.files/dark-0e1b889528bd466b.css"><link rel="stylesheet" disabled href="../../static.files/ayu-65289d5d067c7c66.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-3367e395607fafc1.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="logo-container" href="../../mcaptcha/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2></h2></nav><nav class="sidebar"><a class="logo-container" href="../../mcaptcha/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">Stats</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.fetch">fetch</a></li><li><a href="#tymethod.record_confirm">record_confirm</a></li><li><a href="#tymethod.record_fetch">record_fetch</a></li><li><a href="#tymethod.record_solve">record_solve</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In mcaptcha::stats</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">mcaptcha</a>::<wbr><a href="index.html">stats</a>::<wbr><a class="trait" href="#">Stats</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/mcaptcha/stats.rs.html#24-36">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><div class="item-decl"><pre class="rust"><code>pub trait Stats: <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="trait.CloneStats.html" title="trait mcaptcha::stats::CloneStats">CloneStats</a> {
fn <a href="#tymethod.record_fetch" class="fn">record_fetch</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;'life0 self,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.68.2/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.68.2/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.unit.html">()</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Self: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'life0: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'life1: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'life2: 'async_trait</span>;
<span class="item-spacer"></span> fn <a href="#tymethod.record_solve" class="fn">record_solve</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;'life0 self,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.68.2/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.68.2/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.unit.html">()</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Self: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'life0: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'life1: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'life2: 'async_trait</span>;
<span class="item-spacer"></span> fn <a href="#tymethod.record_confirm" class="fn">record_confirm</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;'life0 self,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.68.2/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.68.2/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.unit.html">()</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Self: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'life0: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'life1: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'life2: 'async_trait</span>;
<span class="item-spacer"></span> fn <a href="#tymethod.fetch" class="fn">fetch</a>&lt;'life0, 'life1, 'life2, 'life3, 'async_trait&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;'life0 self,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key: &amp;'life3 <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.68.2/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.68.2/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="struct" href="struct.CaptchaStats.html" title="struct mcaptcha::stats::CaptchaStats">CaptchaStats</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Self: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'life0: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'life1: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'life2: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'life3: 'async_trait</span>;
}</code></pre></div><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.record_fetch" class="method has-srclink"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#26">source</a><h4 class="code-header">fn <a href="#tymethod.record_fetch" class="fn">record_fetch</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;'life0 self,<br>&nbsp;&nbsp;&nbsp;&nbsp;d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;key: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a><br>) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.68.2/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.68.2/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.unit.html">()</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;'life0: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;'life1: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;'life2: 'async_trait,</span></h4></section></summary><div class="docblock"><p>record PoWConfig fetches</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.record_solve" class="method has-srclink"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#29">source</a><h4 class="code-header">fn <a href="#tymethod.record_solve" class="fn">record_solve</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;'life0 self,<br>&nbsp;&nbsp;&nbsp;&nbsp;d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;key: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a><br>) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.68.2/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.68.2/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.unit.html">()</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;'life0: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;'life1: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;'life2: 'async_trait,</span></h4></section></summary><div class="docblock"><p>record PoWConfig solves</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.record_confirm" class="method has-srclink"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#32">source</a><h4 class="code-header">fn <a href="#tymethod.record_confirm" class="fn">record_confirm</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;'life0 self,<br>&nbsp;&nbsp;&nbsp;&nbsp;d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;key: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a><br>) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.68.2/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.68.2/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.unit.html">()</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;'life0: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;'life1: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;'life2: 'async_trait,</span></h4></section></summary><div class="docblock"><p>record PoWConfig confirms</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.fetch" class="method has-srclink"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#35">source</a><h4 class="code-header">fn <a href="#tymethod.fetch" class="fn">fetch</a>&lt;'life0, 'life1, 'life2, 'life3, 'async_trait&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;'life0 self,<br>&nbsp;&nbsp;&nbsp;&nbsp;d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;user: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;key: &amp;'life3 <a class="primitive" href="https://doc.rust-lang.org/1.68.2/std/primitive.str.html">str</a><br>) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.68.2/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.68.2/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="struct" href="struct.CaptchaStats.html" title="struct mcaptcha::stats::CaptchaStats">CaptchaStats</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.68.2/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Self: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;'life0: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;'life1: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;'life2: 'async_trait,<br>&nbsp;&nbsp;&nbsp;&nbsp;'life3: 'async_trait,</span></h4></section></summary><div class="docblock"><p>fetch stats</p>
</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-Stats-for-Dummy" class="impl has-srclink"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#110-130">source</a><a href="#impl-Stats-for-Dummy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Stats.html" title="trait mcaptcha::stats::Stats">Stats</a> for <a class="struct" href="struct.Dummy.html" title="struct mcaptcha::stats::Dummy">Dummy</a></h3></section><section id="impl-Stats-for-Real" class="impl has-srclink"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#71-104">source</a><a href="#impl-Stats-for-Real" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Stats.html" title="trait mcaptcha::stats::Stats">Stats</a> for <a class="struct" href="struct.Real.html" title="struct mcaptcha::stats::Real">Real</a></h3></section></div><script src="../../implementors/mcaptcha/stats/trait.Stats.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="mcaptcha" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.2 (9eb3afe9e 2023-03-27)" data-search-js="search-98d53477a794af0b.js" data-settings-js="settings-c3c521c753752a1a.js" data-settings-css="settings-08ddfdda51b8ee2e.css" ></div></body></html>
<!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 `Stats` trait in crate `mcaptcha`."><title>Stats in mcaptcha::stats - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-c4dbdcde0fbd8430.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-db279b6232be9c13.css"><link rel="stylesheet" disabled href="../../static.files/dark-cf923f49f397b216.css"><link rel="stylesheet" disabled href="../../static.files/ayu-be46fdc453a55015.css"><script src="../../static.files/storage-3891ce972e3a2bf8.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-98a684e84ae5b08b.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="logo-container" href="../../mcaptcha/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2></h2></nav><nav class="sidebar"><a class="logo-container" href="../../mcaptcha/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">Stats</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.fetch">fetch</a></li><li><a href="#tymethod.record_confirm">record_confirm</a></li><li><a href="#tymethod.record_fetch">record_fetch</a></li><li><a href="#tymethod.record_solve">record_solve</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In mcaptcha::stats</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">mcaptcha</a>::<wbr><a href="index.html">stats</a>::<wbr><a class="trait" href="#">Stats</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/mcaptcha/stats.rs.html#24-36">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub trait Stats: <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="trait.CloneStats.html" title="trait mcaptcha::stats::CloneStats">CloneStats</a> {
// Required methods
fn <a href="#tymethod.record_fetch" class="fn">record_fetch</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,
key: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;
<span class="where">where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait</span>;
<span class="item-spacer"></span> fn <a href="#tymethod.record_solve" class="fn">record_solve</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,
key: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;
<span class="where">where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait</span>;
<span class="item-spacer"></span> fn <a href="#tymethod.record_confirm" class="fn">record_confirm</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,
key: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;
<span class="where">where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait</span>;
<span class="item-spacer"></span> fn <a href="#tymethod.fetch" class="fn">fetch</a>&lt;'life0, 'life1, 'life2, 'life3, 'async_trait&gt;(
&amp;'life0 self,
d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,
user: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
key: &amp;'life3 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="struct" href="struct.CaptchaStats.html" title="struct mcaptcha::stats::CaptchaStats">CaptchaStats</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;
<span class="where">where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait</span>;
}</code></pre><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.record_fetch" class="method"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#26">source</a><h4 class="code-header">fn <a href="#tymethod.record_fetch" class="fn">record_fetch</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,
key: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<span class="where fmt-newline">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</span></h4></section></summary><div class="docblock"><p>record PoWConfig fetches</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.record_solve" class="method"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#29">source</a><h4 class="code-header">fn <a href="#tymethod.record_solve" class="fn">record_solve</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,
key: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<span class="where fmt-newline">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</span></h4></section></summary><div class="docblock"><p>record PoWConfig solves</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.record_confirm" class="method"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#32">source</a><h4 class="code-header">fn <a href="#tymethod.record_confirm" class="fn">record_confirm</a>&lt;'life0, 'life1, 'life2, 'async_trait&gt;(
&amp;'life0 self,
d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,
key: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.unit.html">()</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<span class="where fmt-newline">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,</span></h4></section></summary><div class="docblock"><p>record PoWConfig confirms</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.fetch" class="method"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#35">source</a><h4 class="code-header">fn <a href="#tymethod.fetch" class="fn">fetch</a>&lt;'life0, 'life1, 'life2, 'life3, 'async_trait&gt;(
&amp;'life0 self,
d: &amp;'life1 <a class="struct" href="../data/struct.Data.html" title="struct mcaptcha::data::Data">Data</a>,
user: &amp;'life2 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>,
key: &amp;'life3 <a class="primitive" href="https://doc.rust-lang.org/1.69.0/std/primitive.str.html">str</a>
) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.69.0/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.69.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a>&lt;Output = <a class="type" href="../../db_core/errors/type.DBResult.html" title="type db_core::errors::DBResult">DBResult</a>&lt;<a class="struct" href="struct.CaptchaStats.html" title="struct mcaptcha::stats::CaptchaStats">CaptchaStats</a>&gt;&gt; + <a class="trait" href="https://doc.rust-lang.org/1.69.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + 'async_trait&gt;&gt;<span class="where fmt-newline">where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,</span></h4></section></summary><div class="docblock"><p>fetch stats</p>
</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-Stats-for-Dummy" class="impl"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#110-130">source</a><a href="#impl-Stats-for-Dummy" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Stats.html" title="trait mcaptcha::stats::Stats">Stats</a> for <a class="struct" href="struct.Dummy.html" title="struct mcaptcha::stats::Dummy">Dummy</a></h3></section><section id="impl-Stats-for-Real" class="impl"><a class="srclink rightside" href="../../src/mcaptcha/stats.rs.html#71-104">source</a><a href="#impl-Stats-for-Real" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Stats.html" title="trait mcaptcha::stats::Stats">Stats</a> for <a class="struct" href="struct.Real.html" title="struct mcaptcha::stats::Real">Real</a></h3></section></div><script src="../../implementors/mcaptcha/stats/trait.Stats.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="mcaptcha" data-themes="" data-resource-suffix="" data-rustdoc-version="1.69.0 (84c898d65 2023-04-16)" data-search-js="search-8a59a8356673ec1f.js" data-settings-js="settings-f0c5c39777a9a2f6.js" data-settings-css="settings-0bcba95ff279c1db.css" ></div></body></html>