the rustdoc book.";var container=document.createElement("div");var shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["T","Focus the theme picker menu"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(function(x){return""+x[0].split(" ").map(function(y,index){return(index&1)===0?""+y+"":" "+y+" "}).join("")+""+x[1]+""}).join("");var div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="Keyboard Shortcuts
"+shortcuts+"
";var infos=["Prefix searches with a type followed by a colon (e.g., fn:
) to \
restrict the search to a given item kind.","Accepted kinds are: fn
, mod
, struct
, \
enum
, trait
, type
, macro
, \
and const
.","Search functions by type signature (e.g., vec -> usize
or \
* -> vec
)","Search multiple things at once by splitting your query with comma (e.g., \
str,u8
or String,struct:Vec,test
)","You can look for items with an exact name by putting double quotes around \
- your request: \"string\"
","Look for items inside another one by searching for a path: vec::Vec
",].map(function(x){return""+x+"
"}).join("");var div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="Search Tricks
"+infos;container.appendChild(book_info);container.appendChild(div_shortcuts);container.appendChild(div_infos);popup.appendChild(container);insertAfter(popup,searchState.outputElement());buildHelperPopup=function(){}};onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){var reset_button_timeout=null;window.copy_path=function(but){var parent=but.parentElement;var path=[];onEach(parent.childNodes,function(child){if(child.tagName==='A'){path.push(child.textContent)}});var el=document.createElement('textarea');el.value=path.join('::');el.setAttribute('readonly','');el.style.position='absolute';el.style.left='-9999px';document.body.appendChild(el);el.select();document.execCommand('copy');document.body.removeChild(el);but.children[0].style.display='none';var tmp;if(but.childNodes.length<2){tmp=document.createTextNode('✓');but.appendChild(tmp)}else{onEachLazy(but.childNodes,function(e){if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent='✓'}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent='';reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}())
\ No newline at end of file
+ your request: \"string\"
","Look for items inside another one by searching for a path: vec::Vec
",].map(function(x){return""+x+"
"}).join("");var div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="Search Tricks
"+infos;container.appendChild(book_info);container.appendChild(div_shortcuts);container.appendChild(div_infos);var rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";var rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc 1.57.0-nightly (41dfaaa3c 2021-10-10)";rustdoc_version.appendChild(rustdoc_version_code);container.appendChild(rustdoc_version);popup.appendChild(container);insertAfter(popup,searchState.outputElement());buildHelperPopup=function(){}};onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){var reset_button_timeout=null;window.copy_path=function(but){var parent=but.parentElement;var path=[];onEach(parent.childNodes,function(child){if(child.tagName==='A'){path.push(child.textContent)}});var el=document.createElement('textarea');el.value=path.join('::');el.setAttribute('readonly','');el.style.position='absolute';el.style.left='-9999px';document.body.appendChild(el);el.select();document.execCommand('copy');document.body.removeChild(el);but.children[0].style.display='none';var tmp;if(but.childNodes.length<2){tmp=document.createTextNode('✓');but.appendChild(tmp)}else{onEachLazy(but.childNodes,function(e){if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent='✓'}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent='';reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}())
\ No newline at end of file
diff --git a/rustdoc.css b/rustdoc.css
index 29c1a7eb5..bced0db9f 100644
--- a/rustdoc.css
+++ b/rustdoc.css
@@ -1 +1 @@
- @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular.woff2") format("woff2"),url("FiraSans-Regular.woff") format('woff');font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium.woff2") format("woff2"),url("FiraSans-Medium.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular.ttf.woff2") format("woff2"),url("SourceSerif4-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It.ttf.woff2") format("woff2"),url("SourceSerif4-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold.ttf.woff2") format("woff2"),url("SourceSerif4-Bold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular.ttf.woff2") format("woff2"),url("SourceCodePro-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It.ttf.woff2") format("woff2"),url("SourceCodePro-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold.ttf.woff2") format("woff2"),url("SourceCodePro-Semibold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Noto Sans KR';src:url("noto-sans-kr-v13-korean-regular.woff") format("woff");font-display:swap;unicode-range:U+A960-A97F,U+AC00-D7AF,U+D7B0-D7FF;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:16px/1.4 "Source Serif 4","Noto Sans KR",serif;margin:0;position:relative;padding:10px 15px 20px 15px;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";}h1{font-size:1.5em;}h2{font-size:1.4em;}h3{font-size:1.3em;}h1,h2,h3,h4{font-weight:500;margin:20px 0 15px 0;padding-bottom:6px;}h1.fqn{display:flex;border-bottom:1px dashed;margin-top:0;padding-left:1px;}h1.fqn>.in-band>a:hover{text-decoration:underline;}h2,h3,h4{border-bottom:1px solid;}h3.code-header,h4.code-header{font-size:1em;font-weight:600;border:none;padding:0;margin:0;}.impl,.impl-items .method,.methods .method,.impl-items .type,.methods .type,.impl-items .associatedconstant,.methods .associatedconstant,.impl-items .associatedtype,.methods .associatedtype{flex-basis:100%;font-weight:600;margin-top:16px;margin-bottom:10px;position:relative;}.impl,.method.trait-impl,.type.trait-impl,.associatedconstant.trait-impl,.associatedtype.trait-impl{padding-left:15px;}div.impl-items>div{padding-left:0;}h1,h2,h3,h4,.sidebar,a.source,.search-input,.search-results .result-name,.content table td:first-child>a,.item-left>a,div.item-list .out-of-band,span.since,#source-sidebar,#sidebar-toggle,details.rustdoc-toggle>summary::before,details.undocumented>summary::before,div.impl-items>div:not(.docblock):not(.item-info),.content ul.crate a.crate,a.srclink,#main>ul.docblock>li>a{font-family:"Fira Sans",Arial,sans-serif;}.content ul.crate a.crate{font-size:16px/1.6;}ol,ul{padding-left:25px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.6em;}p{margin:0 0 .6em 0;}summary{outline:none;}td,th{padding:0;}table{border-collapse:collapse;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}details:not(.rustdoc-toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.1em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;}.type-decl pre{overflow-x:auto;}.source .content pre{padding:20px;}img{max-width:100%;}li{position:relative;}.source .content{margin-top:50px;max-width:none;overflow:visible;margin-left:0px;}nav.sub{font-size:16px;text-transform:uppercase;}.sidebar{width:200px;position:fixed;left:0;top:0;bottom:0;overflow:auto;}*{scrollbar-width:initial;}.sidebar{scrollbar-width:thin;}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;}.sidebar .block>ul>li{margin-right:-10px;}.content,nav{max-width:960px;}.hidden{display:none !important;}.logo-container{height:100px;width:100px;position:relative;margin:20px auto;display:block;margin-top:10px;}.logo-container>img{max-width:100px;max-height:100px;height:100%;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;}.sidebar .location{border:1px solid;font-size:17px;margin:30px 10px 20px 10px;text-align:center;word-wrap:break-word;font-weight:inherit;padding:0;}.sidebar .version{font-size:15px;text-align:center;border-bottom:1px solid;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;}.location:empty{border:none;}.location a:first-of-type{font-weight:500;}.location a:hover{text-decoration:underline;}.block{padding:0;margin-bottom:14px;}.block h2,.block h3{text-align:center;}.block ul,.block li{margin:0 10px;padding:0;list-style:none;}.block a{display:block;text-overflow:ellipsis;overflow:hidden;line-height:15px;padding:7px 5px;font-size:14px;font-weight:300;transition:border 500ms ease-out;}.sidebar-title{border-top:1px solid;border-bottom:1px solid;text-align:center;font-size:17px;margin-bottom:5px;font-weight:inherit;padding:0;}.sidebar-links{margin-bottom:15px;}.sidebar-links>a{padding-left:10px;width:100%;}.sidebar-menu{display:none;}.content{padding:15px 0;}.source .content pre.rust{white-space:pre;overflow:auto;padding-left:0;}.rustdoc .example-wrap{display:inline-flex;margin-bottom:10px;}.example-wrap{position:relative;width:100%;}.example-wrap>pre.line-number{overflow:initial;border:1px solid;padding:13px 8px;text-align:right;border-top-left-radius:5px;border-bottom-left-radius:5px;}.example-wrap>pre.rust a:hover{text-decoration:underline;}.rustdoc:not(.source) .example-wrap>pre:not(.line-number){width:100%;overflow-x:auto;}.rustdoc .example-wrap>pre{margin:0;}#search{margin-left:230px;position:relative;}#results>table{width:100%;table-layout:fixed;}.content>.example-wrap pre.line-numbers{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.line-numbers span{cursor:pointer;}.docblock-short{overflow-wrap:anywhere;}.docblock-short p{display:inline;}.docblock-short p{overflow:hidden;text-overflow:ellipsis;margin:0;}.docblock>:not(pre)>code,.docblock-short>:not(pre)>code{white-space:pre-wrap;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5{border-bottom:1px solid;}.top-doc .docblock h1{font-size:1.3em;}.top-doc .docblock h2{font-size:1.15em;}.top-doc .docblock h3,.top-doc .docblock h4,.top-doc .docblock h5{font-size:1em;}.docblock h1{font-size:1em;}.docblock h2{font-size:0.95em;}.docblock h3,.docblock h4,.docblock h5{font-size:0.9em;}.docblock{margin-left:24px;position:relative;}.content .out-of-band{flex-grow:0;text-align:right;font-size:23px;margin:0px;padding:0 0 0 12px;font-weight:normal;}.method>.code-header,.trait-impl>.code-header,.invisible>.code-header{max-width:calc(100% - 41px);display:block;}.invisible{width:100%;display:inline-block;}.content .in-band{flex-grow:1;margin:0px;padding:0px;}.in-band>code,.in-band>.code-header{display:inline-block;}#main{position:relative;}#main>.since{top:inherit;font-family:"Fira Sans",Arial,sans-serif;}.content table:not(.table-display){border-spacing:0 5px;}.content td{vertical-align:top;}.content td:first-child{padding-right:20px;}.content td p:first-child{margin-top:0;}.content td h1,.content td h2{margin-left:0;font-size:1.1em;}.content tr:first-child td{border-top:0;}.docblock table{margin:.5em 0;width:calc(100% - 2px);overflow-x:auto;display:block;}.docblock table td{padding:.5em;border:1px dashed;}.docblock table th{padding:.5em;text-align:left;border:1px solid;}.fields+table{margin-bottom:1em;}.content .item-list{list-style-type:none;padding:0;}.content .multi-column{-moz-column-count:5;-moz-column-gap:2.5em;-webkit-column-count:5;-webkit-column-gap:2.5em;column-count:5;column-gap:2.5em;}.content .multi-column li{width:100%;display:inline-block;}.content>.methods>.method{font-size:1em;position:relative;}.content .method .where,.content .fn .where,.content .where.fmt-newline{display:block;font-size:0.8em;}.content .methods>div:not(.notable-traits):not(.method){margin-left:40px;margin-bottom:15px;}.content .docblock>.impl-items{margin-left:20px;margin-top:-34px;}.content .docblock>.impl-items .table-display{margin:0;}.content .docblock>.impl-items table td{padding:0;}.content .docblock>.impl-items .table-display,.impl-items table td{border:none;}.content .item-info code{font-size:90%;}.content .item-info{position:relative;margin-left:33px;}.sub-variant>div>.item-info{margin-top:initial;}.content .item-info::before{content:'⬑';font-size:25px;position:absolute;top:-6px;left:-19px;}.content .impl-items .method,.content .impl-items>.type,.impl-items>.associatedconstant,.impl-items>.associatedtype,.content .impl-items details>summary>.type,.impl-items details>summary>.associatedconstant,.impl-items details>summary>.associatedtype{margin-left:20px;}.content .impl-items .docblock,.content .impl-items .item-info{margin-bottom:.6em;}.content .impl-items>.item-info{margin-left:40px;}.methods>.item-info,.content .impl-items>.item-info{margin-top:-8px;}.impl-items{flex-basis:100%;}#main>.item-info{margin-top:0;}nav:not(.sidebar){border-bottom:1px solid;padding-bottom:10px;margin-bottom:10px;}nav.main{padding:20px 0;text-align:center;}nav.main .current{border-top:1px solid;border-bottom:1px solid;}nav.main .separator{border:1px solid;display:inline-block;height:23px;margin:0 20px;}nav.sum{text-align:right;}nav.sub form{display:inline;}nav.sub,.content{margin-left:230px;}a{text-decoration:none;background:transparent;}.small-section-header{display:flex;justify-content:space-between;position:relative;}.small-section-header:hover>.anchor{display:initial;}.in-band:hover>.anchor,.impl:hover>.anchor,.method.trait-impl:hover>.anchor,.type.trait-impl:hover>.anchor,.associatedconstant.trait-impl:hover>.anchor,.associatedtype.trait-impl:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:0;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.anchor::before{content:'§';}.docblock a:not(.srclink):not(.test-arrow):hover,.docblock-short a:not(.srclink):not(.test-arrow):hover,.item-info a{text-decoration:underline;}.invisible>.srclink,.method>.code-header+.srclink{position:absolute;top:0;right:0;font-size:17px;font-weight:normal;}.block a.current.crate{font-weight:500;}.item-table{display:grid;column-gap:1.2rem;row-gap:0.0rem;grid-template-columns:auto 1fr;justify-items:start;}.item-left,.item-right{display:block;}.item-left{grid-column:1;}.item-right{grid-column:2;}.search-container{position:relative;}.search-container>div{display:inline-flex;width:calc(100% - 63px);}#crate-search{min-width:115px;margin-top:5px;padding:6px;padding-right:19px;flex:none;border:0;border-right:0;border-radius:4px 0 0 4px;outline:none;cursor:pointer;border-right:1px solid;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;text-overflow:"";background-repeat:no-repeat;background-color:transparent;background-size:20px;background-position:calc(100% - 1px) 56%;}.search-container>.top-button{position:absolute;right:0;top:10px;}.search-input{-moz-box-sizing:border-box !important;box-sizing:border-box !important;outline:none;border:none;border-radius:1px;margin-top:5px;padding:10px 16px;font-size:17px;transition:border-color 300ms ease;transition:border-radius 300ms ease-in-out;transition:box-shadow 300ms ease-in-out;width:100%;}#crate-search+.search-input{border-radius:0 1px 1px 0;width:calc(100% - 32px);}.search-input:focus{border-radius:2px;border:0;outline:0;}.search-results{display:none;padding-bottom:2em;}.search-results.active{display:block;clear:both;}.search-results .desc>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;}.search-results>a{display:block;width:100%;margin-left:2px;margin-right:2px;border-bottom:1px solid #aaa3;}.search-results>a>div{display:flex;flex-flow:row wrap;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:50%;}.search-results .result-name{padding-right:1em;}.search-results .result-name>span{display:inline-block;margin:0;font-weight:normal;}body.blur>:not(#help){filter:blur(8px);-webkit-filter:blur(8px);opacity:.7;}#help{width:100%;height:100vh;position:fixed;top:0;left:0;display:flex;justify-content:center;align-items:center;}#help>div{flex:0 0 auto;box-shadow:0 0 6px rgba(0,0,0,.2);width:550px;height:auto;border:1px solid;}#help dt{float:left;clear:left;display:block;margin-right:0.5rem;}#help>div>span{text-align:center;display:block;margin:10px 0;font-size:18px;border-bottom:1px solid #ccc;padding-bottom:4px;margin-bottom:6px;}#help dd{margin:5px 35px;}#help .infos{padding-left:0;}#help h1,#help h2{margin-top:0;}#help>div div{width:50%;float:left;padding:0 20px 20px 17px;;}.item-info .stab{display:table;}.stab{border-width:1px;border-style:solid;padding:3px;margin-bottom:5px;font-size:90%;font-weight:normal;}.stab p{display:inline;}.stab .emoji{font-size:1.5em;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.module-item .stab,.import-item .stab{border-radius:3px;display:inline-block;font-size:80%;line-height:1.2;margin-bottom:0;margin-left:.3em;padding:2px;vertical-align:text-bottom;}.module-item.unstable,.import-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;}.impl-items .since,.impl .since,.methods .since{padding-left:12px;padding-right:2px;position:initial;}.impl-items .srclink,.impl .srclink,.methods .srclink{font-size:17px;font-weight:normal;}.rightside{float:right;}.has-srclink{font-size:16px;margin-bottom:12px;justify-content:space-between;}.variants_table{width:100%;}.variants_table tbody tr td:first-child{width:1%;}td.summary-column{width:100%;}.summary{padding-right:0px;}pre.rust .question-mark{font-weight:bold;}a.test-arrow{display:inline-block;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:130%;top:5px;right:5px;z-index:1;}a.test-arrow:hover{text-decoration:none;}.section-header:hover a:before{position:absolute;left:-25px;padding-right:10px;content:'\2002\00a7\2002';}.section-header:hover a{text-decoration:none;}.section-header a{color:inherit;}.code-attribute{font-weight:300;}.since+.srclink{padding-left:10px;}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{position:initial;font-size:20px;margin-right:5px;}.sub-variant,.sub-variant>h3{margin-top:0px !important;padding-top:1px;}#main .sub-variant>h3{font-size:15px;margin-left:25px;margin-bottom:5px;}.sub-variant>div{margin-left:20px;margin-bottom:10px;}.sub-variant>div>span{display:block;position:relative;}.toggle-label{display:inline-block;margin-left:4px;margin-top:3px;}.docblock>.section-header:first-child{margin-left:15px;margin-top:0;}.docblock>.section-header:first-child:hover>a:before{left:-10px;}:target>code,:target>.code-header{opacity:1;}:target{padding-right:3px;}.information{position:absolute;left:-25px;margin-top:7px;z-index:1;}.tooltip{position:relative;display:inline-block;cursor:pointer;}.tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:16px;}.tooltip.ignore::after{content:"This example is not tested";}.tooltip.compile_fail::after{content:"This example deliberately fails to compile";}.tooltip.should_panic::after{content:"This example panics";}.tooltip.edition::after{content:"This code runs with edition " attr(data-edition);}.tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;border-width:5px;border-style:solid;display:none;}.tooltip:hover::before,.tooltip:hover::after{display:inline;}.tooltip.compile_fail,.tooltip.should_panic,.tooltip.ignore{font-weight:bold;font-size:20px;}.notable-traits-tooltip{display:inline-block;cursor:pointer;}.notable-traits:hover .notable-traits-tooltiptext,.notable-traits .notable-traits-tooltiptext.force-tooltip{display:inline-block;}.notable-traits .notable-traits-tooltiptext{display:none;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;z-index:10;font-size:16px;cursor:default;position:absolute;border:1px solid;}.notable-traits-tooltip::after{content:"\00a0\00a0\00a0";}.notable-traits .notable,.notable-traits .docblock{margin:0;}.notable-traits .notable{margin:0;margin-bottom:13px;font-size:19px;font-weight:600;}.notable-traits .docblock code.content{margin:0;padding:0;font-size:20px;}pre.rust.rust-example-rendered{position:relative;}pre.rust{tab-size:4;-moz-tab-size:4;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{height:35px;}#titles>button{float:left;width:33.3%;text-align:center;font-size:18px;cursor:pointer;border:0;border-top:2px solid;}#titles>button:not(:last-child){margin-right:1px;width:calc(33.3% - 1px);}#titles>button>div.count{display:inline-block;font-size:16px;}.notable-traits{cursor:pointer;z-index:2;margin-left:5px;}#all-types{text-align:center;border:1px solid;margin:0 10px;margin-bottom:10px;display:block;border-radius:7px;}#all-types>p{margin:5px 0;}#sidebar-toggle{position:fixed;top:30px;left:300px;z-index:10;padding:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer;font-weight:bold;transition:left .5s;font-size:1.2em;border:1px solid;border-left:0;}#source-sidebar{position:fixed;top:0;bottom:0;left:0;width:300px;z-index:1;overflow:auto;transition:left .5s;border-right:1px solid;}#source-sidebar>.title{font-size:1.5em;text-align:center;border-bottom:1px solid;margin-bottom:6px;}.theme-picker{position:absolute;left:211px;top:19px;}.theme-picker button{outline:none;}#settings-menu,#help-button{position:absolute;top:10px;}#settings-menu{right:0;outline:none;}#theme-picker,#settings-menu,#help-button,#copy-path{padding:4px;width:27px;height:29px;border:1px solid;border-radius:3px;cursor:pointer;}#help-button{right:30px;font-family:"Fira Sans",Arial,sans-serif;text-align:center;font-size:17px;padding-top:2px;}#copy-path{background:initial;margin-left:10px;padding:0;padding-left:2px;border:0;}#theme-choices{display:none;position:absolute;left:0;top:28px;border:1px solid;border-radius:3px;z-index:1;cursor:pointer;}#theme-choices>button{border:none;width:100%;padding:4px 8px;text-align:center;background:rgba(0,0,0,0);}#theme-choices>button:not(:first-child){border-top:1px solid;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px;border-radius:3px;box-shadow:inset 0 -1px 0;cursor:default;}.hidden-by-impl-hider,.hidden-by-usual-hider{display:none !important;}#implementations-list>h3>span.in-band{width:100%;}.table-display{width:100%;border:0;border-collapse:collapse;border-spacing:0;font-size:16px;}.table-display tr td:first-child{padding-right:0;}.table-display tr td:last-child{float:right;}.table-display .out-of-band{position:relative;font-size:19px;display:block;}#implementors-list>.impl-items .table-display .out-of-band{font-size:17px;}.table-display td:hover .anchor{display:block;top:2px;left:-5px;}#main>ul{padding-left:10px;}#main>ul>li{list-style:none;}.non-exhaustive{margin-bottom:1em;}div.children{padding-left:27px;display:none;}div.name{cursor:pointer;position:relative;margin-left:16px;}div.files>a{display:block;padding:0 3px;}div.files>a:hover,div.name:hover{background-color:#a14b4b;}div.name.expand+.children{display:block;}div.name::before{content:"\25B6";padding-left:4px;font-size:0.7em;position:absolute;left:-16px;top:4px;}div.name.expand::before{transform:rotate(90deg);left:-15px;top:2px;}details.rustdoc-toggle>summary.hideme{cursor:pointer;}details.rustdoc-toggle>summary,details.undocumented>summary{list-style:none;}details.rustdoc-toggle>summary::-webkit-details-marker,details.rustdoc-toggle>summary::marker,details.undocumented>summary::-webkit-details-marker,details.undocumented>summary::marker{display:none;}details.rustdoc-toggle>summary.hideme>span{margin-left:9px;}details.rustdoc-toggle>summary::before{content:"";cursor:pointer;width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;vertical-align:middle;opacity:.5;}details.rustdoc-toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.rustdoc-toggle>summary.hideme::after{content:"";}details.rustdoc-toggle>summary:focus::before,details.rustdoc-toggle>summary:hover::before{opacity:1;}details.rustdoc-toggle.top-doc>summary,details.rustdoc-toggle.top-doc>summary::before,details.rustdoc-toggle.non-exhaustive>summary,details.rustdoc-toggle.non-exhaustive>summary::before{font-family:'Fira Sans';font-size:16px;}details.non-exhaustive{margin-bottom:8px;}details.rustdoc-toggle>summary.hideme::before{position:relative;}details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-23px;top:3px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before,.undocumented>details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-2px;}details.rustdoc-toggle[open] >summary.hideme{position:absolute;}details.rustdoc-toggle,details.undocumented{position:relative;}details.rustdoc-toggle[open] >summary.hideme>span{display:none;}details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;content:"";}details.rustdoc-toggle[open] >summary::after,details.rustdoc-toggle[open] >summary.hideme::after{content:"Collapse";}details.undocumented>summary::before{padding-left:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;content:"Show hidden undocumented items";cursor:pointer;font-size:16px;font-weight:300;opacity:.5;}details.undocumented>summary:focus::before,details.undocumented>summary:hover::before{opacity:1;}details.undocumented[open] >summary::before{padding-left:17px;height:max(17px,1.1em);background-repeat:no-repeat background-position:top left;content:"Hide undocumented items";}@media (min-width:701px){.docblock>.information:first-child>.tooltip{margin-top:16px;}}@media (max-width:700px){body{padding-top:0px;}.rustdoc>.sidebar{height:45px;min-height:40px;margin:0;margin-left:-15px;padding:0 15px;position:static;z-index:11;}.sidebar>.location{float:right;margin:0px;margin-top:2px;padding:3px 10px 1px 10px;min-height:39px;background:inherit;text-align:left;font-size:24px;}.sidebar .location:empty{padding:0;}.sidebar .logo-container{width:35px;height:35px;margin-top:5px;margin-bottom:5px;float:left;margin-left:50px;}.sidebar .logo-container>img{max-width:35px;max-height:35px;}.sidebar-menu{position:fixed;z-index:10;font-size:2rem;cursor:pointer;width:45px;left:0;text-align:center;display:block;border-bottom:1px solid;border-right:1px solid;height:45px;}.rustdoc.source>.sidebar>.sidebar-menu{display:none;}.sidebar-elems{position:fixed;z-index:1;top:45px;bottom:0;width:246px;left:-246px;overflow-y:auto;border-right:1px solid;}.sidebar>.block.version{overflow:hidden;border-bottom:none;margin-bottom:0;height:100%;padding-left:12px;}.sidebar>.block.version>div.narrow-helper{float:left;width:1px;height:100%;}.sidebar>.block.version>p{margin:0;min-width:55px;display:flex;align-items:center;height:100%;}nav.sub{width:calc(100% - 32px);float:right;}.content{margin-left:0px;}#main,#search{margin-top:45px;padding:0;}#search{margin-left:0;}.anchor{display:none !important;}.theme-picker{left:10px;top:54px;z-index:1;}.notable-traits{position:absolute;left:-22px;top:24px;}#titles>button>div.count{float:left;width:100%;}#titles{height:50px;}.sidebar.mobile{position:fixed;width:100%;margin-left:0;background-color:rgba(0,0,0,0);height:100%;}.sidebar.mobile>div.version{overflow:hidden;max-height:33px;}.sidebar{width:calc(100% + 30px);}.show-it,.sidebar-elems:focus-within{z-index:2;left:0;}.show-it>.block.items{margin:8px 0;}.show-it>.block.items>ul{margin:0;}.show-it>.block.items>ul>li{text-align:center;margin:2px 0;}.show-it>.block.items>ul>li>a{font-size:21px;}#sidebar-filler{position:fixed;left:45px;width:calc(100% - 45px);top:0;height:45px;z-index:-1;border-bottom:1px solid;}#main>details.rustdoc-toggle>summary::before,#main>div>details.rustdoc-toggle>summary::before{left:-11px;}#all-types{margin:10px;}#sidebar-toggle{top:100px;width:30px;font-size:1.5rem;text-align:center;padding:0;}#source-sidebar{z-index:11;}#main>.line-numbers{margin-top:0;}.notable-traits .notable-traits-tooltiptext{left:0;top:100%;}#help-button{display:none;}.item-table{display:flex;flex-flow:column wrap;}.item-left,.item-right{width:100%;}.search-container>div{width:calc(100% - 32px);}.search-results>a{border-bottom:1px solid #aaa9;padding:5px 0px;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:100%;}.search-results div.desc,.search-results .result-description,.item-right{padding-left:2em;}}@media print{nav.sub,.content .out-of-band{display:none;}}@media (max-width:464px){#titles,#titles>button{height:73px;}#main,#search{margin-top:100px;}#main>table:not(.table-display) td{word-break:break-word;width:50%;}.search-container>div{display:block;width:calc(100% - 37px);}#crate-search{width:100%;border-radius:4px;border:0;}#crate-search+.search-input{width:calc(100% + 71px);margin-left:-36px;}#theme-picker,#settings-menu{padding:5px;width:31px;height:31px;}#theme-picker{margin-top:-2px;}#settings-menu{top:7px;}.docblock{margin-left:12px;}}details.undocumented[open] >summary::before,details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{background-image:url(toggle-minus.svg);}details.undocumented>summary::before,details.rustdoc-toggle>summary::before{background-image:url(toggle-plus.svg);}
\ No newline at end of file
+ @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular.woff2") format("woff2"),url("FiraSans-Regular.woff") format('woff');font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium.woff2") format("woff2"),url("FiraSans-Medium.woff") format('woff');font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular.ttf.woff2") format("woff2"),url("SourceSerif4-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It.ttf.woff2") format("woff2"),url("SourceSerif4-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold.ttf.woff2") format("woff2"),url("SourceSerif4-Bold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular.ttf.woff2") format("woff2"),url("SourceCodePro-Regular.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It.ttf.woff2") format("woff2"),url("SourceCodePro-It.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold.ttf.woff2") format("woff2"),url("SourceCodePro-Semibold.ttf.woff") format("woff");font-display:swap;}@font-face {font-family:'Noto Sans KR';src:url("noto-sans-kr-v13-korean-regular.woff") format("woff");font-display:swap;unicode-range:U+A960-A97F,U+AC00-D7AF,U+D7B0-D7FF;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:16px/1.4 "Source Serif 4","Noto Sans KR",serif;margin:0;position:relative;padding:10px 15px 20px 15px;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";}h1{font-size:1.5em;}h2{font-size:1.4em;}h3{font-size:1.3em;}h1,h2,h3,h4,h5,h6{font-weight:500;margin:20px 0 15px 0;padding-bottom:6px;}h1.fqn{display:flex;border-bottom:1px dashed;margin-top:0;padding-left:1px;}h1.fqn>.in-band>a:hover{text-decoration:underline;}h2,h3,h4{border-bottom:1px solid;}h3.code-header,h4.code-header{font-size:1em;font-weight:600;border:none;padding:0;margin:0;}.impl,.impl-items .method,.methods .method,.impl-items .type,.methods .type,.impl-items .associatedconstant,.methods .associatedconstant,.impl-items .associatedtype,.methods .associatedtype{flex-basis:100%;font-weight:600;margin-top:16px;margin-bottom:10px;position:relative;}.impl,.method.trait-impl,.type.trait-impl,.associatedconstant.trait-impl,.associatedtype.trait-impl{padding-left:15px;}div.impl-items>div{padding-left:0;}h1,h2,h3,h4,h5,h6,.sidebar,a.source,.search-input,.search-results .result-name,.content table td:first-child>a,.item-left>a,div.item-list .out-of-band,span.since,#source-sidebar,#sidebar-toggle,details.rustdoc-toggle>summary::before,details.undocumented>summary::before,div.impl-items>div:not(.docblock):not(.item-info),.content ul.crate a.crate,a.srclink,#main>ul.docblock>li>a{font-family:"Fira Sans",Arial,sans-serif;}.content ul.crate a.crate{font-size:16px/1.6;}ol,ul{padding-left:25px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.6em;}p{margin:0 0 .6em 0;}summary{outline:none;}td,th{padding:0;}table{border-collapse:collapse;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}details:not(.rustdoc-toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.1em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;}.type-decl pre{overflow-x:auto;}.source .content pre{padding:20px;}img{max-width:100%;}li{position:relative;}.source .content{margin-top:50px;max-width:none;overflow:visible;margin-left:0px;}nav.sub{font-size:16px;text-transform:uppercase;}.sidebar{width:200px;position:fixed;left:0;top:0;bottom:0;overflow:auto;}*{scrollbar-width:initial;}.sidebar{scrollbar-width:thin;}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;}.sidebar .block>ul>li{margin-right:-10px;}.content,nav{max-width:960px;}.hidden{display:none !important;}.logo-container{height:100px;width:100px;position:relative;margin:20px auto;display:block;margin-top:10px;}.logo-container>img{max-width:100px;max-height:100px;height:100%;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;}.sidebar .location{border:1px solid;font-size:17px;margin:30px 10px 20px 10px;text-align:center;word-wrap:break-word;font-weight:inherit;padding:0;}.sidebar .version{font-size:15px;text-align:center;border-bottom:1px solid;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;}.location:empty{border:none;}.location a:first-of-type{font-weight:500;}.location a:hover{text-decoration:underline;}.block{padding:0;margin-bottom:14px;}.block h2,.block h3{text-align:center;}.block ul,.block li{margin:0 10px;padding:0;list-style:none;}.block a{display:block;text-overflow:ellipsis;overflow:hidden;line-height:15px;padding:7px 5px;font-size:14px;font-weight:300;transition:border 500ms ease-out;}.sidebar-title{border-top:1px solid;border-bottom:1px solid;text-align:center;font-size:17px;margin-bottom:5px;font-weight:inherit;padding:0;}.sidebar-links{margin-bottom:15px;}.sidebar-links>a{padding-left:10px;width:100%;}.sidebar-menu{display:none;}.content{padding:15px 0;}.source .content pre.rust{white-space:pre;overflow:auto;padding-left:0;}.rustdoc .example-wrap{display:inline-flex;margin-bottom:10px;}.example-wrap{position:relative;width:100%;}.example-wrap>pre.line-number{overflow:initial;border:1px solid;padding:13px 8px;text-align:right;border-top-left-radius:5px;border-bottom-left-radius:5px;}.example-wrap>pre.rust a:hover{text-decoration:underline;}.rustdoc:not(.source) .example-wrap>pre:not(.line-number){width:100%;overflow-x:auto;}.rustdoc .example-wrap>pre{margin:0;}#search{margin-left:230px;position:relative;}#results>table{width:100%;table-layout:fixed;}.content>.example-wrap pre.line-numbers{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.line-numbers span{cursor:pointer;}.docblock-short{overflow-wrap:anywhere;}.docblock-short p{display:inline;}.docblock-short p{overflow:hidden;text-overflow:ellipsis;margin:0;}.docblock>:not(pre)>code,.docblock-short>:not(pre)>code{white-space:pre-wrap;}.docblock h1,.docblock h2,.docblock h3,.docblock h4,.docblock h5,.docblock h6{border-bottom:1px solid;}.top-doc .docblock h2{font-size:1.3em;}.top-doc .docblock h3{font-size:1.15em;}.top-doc .docblock h4,.top-doc .docblock h5,.top-doc .docblock h6{font-size:1em;}.docblock h5{font-size:1em;}.docblock h6{font-size:0.95em;}.docblock{margin-left:24px;position:relative;}.docblock>*{max-width:100%;overflow-x:auto;}.content .out-of-band{flex-grow:0;text-align:right;font-size:23px;margin:0px;padding:0 0 0 12px;font-weight:normal;}.method>.code-header,.trait-impl>.code-header,.invisible>.code-header{max-width:calc(100% - 41px);display:block;}.invisible{width:100%;display:inline-block;}.content .in-band{flex-grow:1;margin:0px;padding:0px;}.in-band>code,.in-band>.code-header{display:inline-block;}#main{position:relative;}#main>.since{top:inherit;font-family:"Fira Sans",Arial,sans-serif;}.content table:not(.table-display){border-spacing:0 5px;}.content td{vertical-align:top;}.content td:first-child{padding-right:20px;}.content td p:first-child{margin-top:0;}.content td h1,.content td h2{margin-left:0;font-size:1.1em;}.content tr:first-child td{border-top:0;}.docblock table{margin:.5em 0;width:calc(100% - 2px);overflow-x:auto;display:block;}.docblock table td{padding:.5em;border:1px dashed;}.docblock table th{padding:.5em;text-align:left;border:1px solid;}.fields+table{margin-bottom:1em;}.content .item-list{list-style-type:none;padding:0;}.content .multi-column{-moz-column-count:5;-moz-column-gap:2.5em;-webkit-column-count:5;-webkit-column-gap:2.5em;column-count:5;column-gap:2.5em;}.content .multi-column li{width:100%;display:inline-block;}.content>.methods>.method{font-size:1em;position:relative;}.content .method .where,.content .fn .where,.content .where.fmt-newline{display:block;font-size:0.8em;}.content .methods>div:not(.notable-traits):not(.method){margin-left:40px;margin-bottom:15px;}.content .docblock>.impl-items{margin-left:20px;margin-top:-34px;}.content .docblock>.impl-items .table-display{margin:0;}.content .docblock>.impl-items table td{padding:0;}.content .docblock>.impl-items .table-display,.impl-items table td{border:none;}.content .item-info code{font-size:90%;}.content .item-info{position:relative;margin-left:33px;}.sub-variant>div>.item-info{margin-top:initial;}.content .item-info::before{content:'⬑';font-size:25px;position:absolute;top:-6px;left:-19px;}.content .impl-items .method,.content .impl-items>.type,.impl-items>.associatedconstant,.impl-items>.associatedtype,.content .impl-items details>summary>.type,.impl-items details>summary>.associatedconstant,.impl-items details>summary>.associatedtype{margin-left:20px;}.content .impl-items .docblock,.content .impl-items .item-info{margin-bottom:.6em;}.content .impl-items>.item-info{margin-left:40px;}.methods>.item-info,.content .impl-items>.item-info{margin-top:-8px;}.impl-items{flex-basis:100%;}#main>.item-info{margin-top:0;}nav:not(.sidebar){border-bottom:1px solid;padding-bottom:10px;margin-bottom:10px;}nav.main{padding:20px 0;text-align:center;}nav.main .current{border-top:1px solid;border-bottom:1px solid;}nav.main .separator{border:1px solid;display:inline-block;height:23px;margin:0 20px;}nav.sum{text-align:right;}nav.sub form{display:inline;}nav.sub,.content{margin-left:230px;}a{text-decoration:none;background:transparent;}.small-section-header{display:flex;justify-content:space-between;position:relative;}.small-section-header:hover>.anchor{display:initial;}.in-band:hover>.anchor,.impl:hover>.anchor,.method.trait-impl:hover>.anchor,.type.trait-impl:hover>.anchor,.associatedconstant.trait-impl:hover>.anchor,.associatedtype.trait-impl:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:0;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.anchor::before{content:'§';}.docblock a:not(.srclink):not(.test-arrow):hover,.docblock-short a:not(.srclink):not(.test-arrow):hover,.item-info a{text-decoration:underline;}.invisible>.srclink,.method>.code-header+.srclink{position:absolute;top:0;right:0;font-size:17px;font-weight:normal;}.block a.current.crate{font-weight:500;}.item-table{display:table-row;justify-items:start;}.item-row{display:table-row;}.item-left,.item-right{display:table-cell;}.item-left{padding-right:1.2rem;}.search-container{position:relative;}.search-container>div{display:inline-flex;width:calc(100% - 63px);}#crate-search{min-width:115px;margin-top:5px;padding:6px;padding-right:19px;flex:none;border:0;border-right:0;border-radius:4px 0 0 4px;outline:none;cursor:pointer;border-right:1px solid;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;text-overflow:"";background-repeat:no-repeat;background-color:transparent;background-size:20px;background-position:calc(100% - 1px) 56%;}.search-container>.top-button{position:absolute;right:0;top:10px;}.search-input{-moz-box-sizing:border-box !important;box-sizing:border-box !important;outline:none;border:none;border-radius:1px;margin-top:5px;padding:10px 16px;font-size:17px;transition:border-color 300ms ease;transition:border-radius 300ms ease-in-out;transition:box-shadow 300ms ease-in-out;width:100%;}#crate-search+.search-input{border-radius:0 1px 1px 0;width:calc(100% - 32px);}.search-input:focus{border-radius:2px;border:0;outline:0;}.search-results{display:none;padding-bottom:2em;}.search-results.active{display:block;clear:both;}.search-results .desc>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block;}.search-results>a{display:block;width:100%;margin-left:2px;margin-right:2px;border-bottom:1px solid #aaa3;}.search-results>a>div{display:flex;flex-flow:row wrap;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:50%;}.search-results .result-name{padding-right:1em;}.search-results .result-name>span{display:inline-block;margin:0;font-weight:normal;}body.blur>:not(#help){filter:blur(8px);-webkit-filter:blur(8px);opacity:.7;}#help{width:100%;height:100vh;position:fixed;top:0;left:0;display:flex;justify-content:center;align-items:center;}#help>div{flex:0 0 auto;box-shadow:0 0 6px rgba(0,0,0,.2);width:550px;height:auto;border:1px solid;}#help dt{float:left;clear:left;display:block;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:18px;}#help span.top{text-align:center;display:block;margin:10px 0;border-bottom:1px solid;padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid;}#help dd{margin:5px 35px;}#help .infos{padding-left:0;}#help h1,#help h2{margin-top:0;}#help>div div{width:50%;float:left;padding:0 20px 20px 17px;;}.item-info .stab{display:table;}.stab{border-width:1px;border-style:solid;padding:3px;margin-bottom:5px;font-size:90%;font-weight:normal;}.stab p{display:inline;}.stab .emoji{font-size:1.5em;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.module-item .stab,.import-item .stab{border-radius:3px;display:inline-block;font-size:80%;line-height:1.2;margin-bottom:0;margin-left:.3em;padding:2px;vertical-align:text-bottom;}.module-item.unstable,.import-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;}.impl-items .since,.impl .since,.methods .since{padding-left:12px;padding-right:2px;position:initial;}.impl-items .srclink,.impl .srclink,.methods .srclink{font-size:17px;font-weight:normal;}.rightside{float:right;}.has-srclink{font-size:16px;margin-bottom:12px;justify-content:space-between;}.variants_table{width:100%;}.variants_table tbody tr td:first-child{width:1%;}td.summary-column{width:100%;}.summary{padding-right:0px;}pre.rust .question-mark{font-weight:bold;}a.test-arrow{display:inline-block;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:130%;top:5px;right:5px;z-index:1;}a.test-arrow:hover{text-decoration:none;}.section-header:hover a:before{position:absolute;left:-25px;padding-right:10px;content:'\2002\00a7\2002';}.section-header:hover a{text-decoration:none;}.section-header a{color:inherit;}.code-attribute{font-weight:300;}.since+.srclink{padding-left:10px;}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{position:initial;font-size:20px;margin-right:5px;}.sub-variant,.sub-variant>h3{margin-top:0px !important;padding-top:1px;}#main .sub-variant>h3{font-size:15px;margin-left:25px;margin-bottom:5px;}.sub-variant>div{margin-left:20px;margin-bottom:10px;}.sub-variant>div>span{display:block;position:relative;}.toggle-label{display:inline-block;margin-left:4px;margin-top:3px;}.docblock>.section-header:first-child{margin-left:15px;margin-top:0;}.docblock>.section-header:first-child:hover>a:before{left:-10px;}:target>code,:target>.code-header{opacity:1;}:target{padding-right:3px;}.information{position:absolute;left:-25px;margin-top:7px;z-index:1;}.tooltip{position:relative;display:inline-block;cursor:pointer;}.tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:16px;}.tooltip.ignore::after{content:"This example is not tested";}.tooltip.compile_fail::after{content:"This example deliberately fails to compile";}.tooltip.should_panic::after{content:"This example panics";}.tooltip.edition::after{content:"This code runs with edition " attr(data-edition);}.tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;border-width:5px;border-style:solid;display:none;}.tooltip:hover::before,.tooltip:hover::after{display:inline;}.tooltip.compile_fail,.tooltip.should_panic,.tooltip.ignore{font-weight:bold;font-size:20px;}.notable-traits-tooltip{display:inline-block;cursor:pointer;}.notable-traits:hover .notable-traits-tooltiptext,.notable-traits .notable-traits-tooltiptext.force-tooltip{display:inline-block;}.notable-traits .notable-traits-tooltiptext{display:none;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;z-index:10;font-size:16px;cursor:default;position:absolute;border:1px solid;}.notable-traits-tooltip::after{content:"\00a0\00a0\00a0";}.notable-traits .notable,.notable-traits .docblock{margin:0;}.notable-traits .notable{margin:0;margin-bottom:13px;font-size:19px;font-weight:600;}.notable-traits .docblock code.content{margin:0;padding:0;font-size:20px;}pre.rust.rust-example-rendered{position:relative;}pre.rust{tab-size:4;-moz-tab-size:4;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{height:35px;}#titles>button{float:left;width:33.3%;text-align:center;font-size:18px;cursor:pointer;border:0;border-top:2px solid;}#titles>button:not(:last-child){margin-right:1px;width:calc(33.3% - 1px);}#titles>button>div.count{display:inline-block;font-size:16px;}.notable-traits{cursor:pointer;z-index:2;margin-left:5px;}#all-types{text-align:center;border:1px solid;margin:0 10px;margin-bottom:10px;display:block;border-radius:7px;}#all-types>p{margin:5px 0;}#sidebar-toggle{position:fixed;top:30px;left:300px;z-index:10;padding:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer;font-weight:bold;transition:left .5s;font-size:1.2em;border:1px solid;border-left:0;}#source-sidebar{position:fixed;top:0;bottom:0;left:0;width:300px;z-index:1;overflow:auto;transition:left .5s;border-right:1px solid;}#source-sidebar>.title{font-size:1.5em;text-align:center;border-bottom:1px solid;margin-bottom:6px;}.theme-picker{position:absolute;left:211px;top:19px;}.theme-picker button{outline:none;}#settings-menu,#help-button{position:absolute;top:10px;}#settings-menu{right:0;outline:none;}#theme-picker,#settings-menu,#help-button,#copy-path{padding:4px;width:27px;height:29px;border:1px solid;border-radius:3px;cursor:pointer;}#help-button{right:30px;font-family:"Fira Sans",Arial,sans-serif;text-align:center;font-size:17px;padding-top:2px;}#copy-path{background:initial;margin-left:10px;padding:0;padding-left:2px;border:0;}#theme-choices{display:none;position:absolute;left:0;top:28px;border:1px solid;border-radius:3px;z-index:1;cursor:pointer;}#theme-choices>button{border:none;width:100%;padding:4px 8px;text-align:center;background:rgba(0,0,0,0);}#theme-choices>button:not(:first-child){border-top:1px solid;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px;border-radius:3px;box-shadow:inset 0 -1px 0;cursor:default;}.hidden-by-impl-hider,.hidden-by-usual-hider{display:none !important;}#implementations-list>h3>span.in-band{width:100%;}.table-display{width:100%;border:0;border-collapse:collapse;border-spacing:0;font-size:16px;}.table-display tr td:first-child{padding-right:0;}.table-display tr td:last-child{float:right;}.table-display .out-of-band{position:relative;font-size:19px;display:block;}#implementors-list>.impl-items .table-display .out-of-band{font-size:17px;}.table-display td:hover .anchor{display:block;top:2px;left:-5px;}#main>ul{padding-left:10px;}#main>ul>li{list-style:none;}.non-exhaustive{margin-bottom:1em;}div.children{padding-left:27px;display:none;}div.name{cursor:pointer;position:relative;margin-left:16px;}div.files>a{display:block;padding:0 3px;}div.files>a:hover,div.name:hover{background-color:#a14b4b;}div.name.expand+.children{display:block;}div.name::before{content:"\25B6";padding-left:4px;font-size:0.7em;position:absolute;left:-16px;top:4px;}div.name.expand::before{transform:rotate(90deg);left:-15px;top:2px;}details.rustdoc-toggle>summary.hideme{cursor:pointer;}details.rustdoc-toggle>summary,details.undocumented>summary{list-style:none;}details.rustdoc-toggle>summary::-webkit-details-marker,details.rustdoc-toggle>summary::marker,details.undocumented>summary::-webkit-details-marker,details.undocumented>summary::marker{display:none;}details.rustdoc-toggle>summary.hideme>span{margin-left:9px;}details.rustdoc-toggle>summary::before{content:"";cursor:pointer;width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;vertical-align:middle;opacity:.5;}details.rustdoc-toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.rustdoc-toggle>summary.hideme::after{content:"";}details.rustdoc-toggle>summary:focus::before,details.rustdoc-toggle>summary:hover::before{opacity:1;}details.rustdoc-toggle.top-doc>summary,details.rustdoc-toggle.top-doc>summary::before,details.rustdoc-toggle.non-exhaustive>summary,details.rustdoc-toggle.non-exhaustive>summary::before{font-family:'Fira Sans';font-size:16px;}details.non-exhaustive{margin-bottom:8px;}details.rustdoc-toggle>summary.hideme::before{position:relative;}details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-23px;top:3px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before,.undocumented>details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-2px;}details.rustdoc-toggle[open] >summary.hideme{position:absolute;}details.rustdoc-toggle,details.undocumented{position:relative;}details.rustdoc-toggle[open] >summary.hideme>span{display:none;}details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{width:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;display:inline-block;content:"";}details.rustdoc-toggle[open] >summary::after,details.rustdoc-toggle[open] >summary.hideme::after{content:"Collapse";}details.undocumented>summary::before{padding-left:17px;height:max(17px,1.1em);background-repeat:no-repeat;background-position:top left;content:"Show hidden undocumented items";cursor:pointer;font-size:16px;font-weight:300;opacity:.5;}details.undocumented>summary:focus::before,details.undocumented>summary:hover::before{opacity:1;}details.undocumented[open] >summary::before{padding-left:17px;height:max(17px,1.1em);background-repeat:no-repeat background-position:top left;content:"Hide undocumented items";}@media (min-width:701px){.docblock>.information:first-child>.tooltip{margin-top:16px;}}@media (max-width:700px){body{padding-top:0px;}.rustdoc>.sidebar{height:45px;min-height:40px;margin:0;margin-left:-15px;padding:0 15px;position:static;z-index:11;}.sidebar>.location{float:right;margin:0px;margin-top:2px;padding:3px 10px 1px 10px;min-height:39px;background:inherit;text-align:left;font-size:24px;}.sidebar .location:empty{padding:0;}.sidebar .logo-container{width:35px;height:35px;margin-top:5px;margin-bottom:5px;float:left;margin-left:50px;}.sidebar .logo-container>img{max-width:35px;max-height:35px;}.sidebar-menu{position:fixed;z-index:10;font-size:2rem;cursor:pointer;width:45px;left:0;text-align:center;display:block;border-bottom:1px solid;border-right:1px solid;height:45px;}.rustdoc.source>.sidebar>.sidebar-menu{display:none;}.sidebar-elems{position:fixed;z-index:1;top:45px;bottom:0;width:246px;left:-246px;overflow-y:auto;border-right:1px solid;}.sidebar>.block.version{overflow:hidden;border-bottom:none;margin-bottom:0;height:100%;padding-left:12px;}.sidebar>.block.version>div.narrow-helper{float:left;width:1px;height:100%;}.sidebar>.block.version>p{margin:0;min-width:55px;display:flex;align-items:center;height:100%;}nav.sub{width:calc(100% - 32px);float:right;}.content{margin-left:0px;}#main,#search{margin-top:45px;padding:0;}#search{margin-left:0;}.anchor{display:none !important;}.theme-picker{left:10px;top:54px;z-index:1;}.notable-traits{position:absolute;left:-22px;top:24px;}#titles>button>div.count{float:left;width:100%;}#titles{height:50px;}.sidebar.mobile{position:fixed;width:100%;margin-left:0;background-color:rgba(0,0,0,0);height:100%;}.sidebar.mobile>div.version{overflow:hidden;max-height:33px;}.sidebar{width:calc(100% + 30px);}.show-it,.sidebar-elems:focus-within{z-index:2;left:0;}.show-it>.block.items{margin:8px 0;}.show-it>.block.items>ul{margin:0;}.show-it>.block.items>ul>li{text-align:center;margin:2px 0;}.show-it>.block.items>ul>li>a{font-size:21px;}#sidebar-filler{position:fixed;left:45px;width:calc(100% - 45px);top:0;height:45px;z-index:-1;border-bottom:1px solid;}#main>details.rustdoc-toggle>summary::before,#main>div>details.rustdoc-toggle>summary::before{left:-11px;}#all-types{margin:10px;}#sidebar-toggle{top:100px;width:30px;font-size:1.5rem;text-align:center;padding:0;}#source-sidebar{z-index:11;}#main>.line-numbers{margin-top:0;}.notable-traits .notable-traits-tooltiptext{left:0;top:100%;}#help-button{display:none;}.item-table{display:block;}.item-row{display:flex;flex-flow:column wrap;}.item-left,.item-right{width:100%;}.search-container>div{width:calc(100% - 32px);}.search-results>a{border-bottom:1px solid #aaa9;padding:5px 0px;}.search-results .result-name,.search-results div.desc,.search-results .result-description{width:100%;}.search-results div.desc,.search-results .result-description,.item-right{padding-left:2em;}}@media print{nav.sub,.content .out-of-band{display:none;}}@media (max-width:464px){#titles,#titles>button{height:73px;}#main,#search{margin-top:100px;}#main>table:not(.table-display) td{word-break:break-word;width:50%;}.search-container>div{display:block;width:calc(100% - 37px);}#crate-search{width:100%;border-radius:4px;border:0;}#crate-search+.search-input{width:calc(100% + 71px);margin-left:-36px;}#theme-picker,#settings-menu{padding:5px;width:31px;height:31px;}#theme-picker{margin-top:-2px;}#settings-menu{top:7px;}.docblock{margin-left:12px;}}details.undocumented[open] >summary::before,details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle[open] >summary.hideme::before{background-image:url(toggle-minus.svg);}details.undocumented>summary::before,details.rustdoc-toggle>summary::before{background-image:url(toggle-plus.svg);}
\ No newline at end of file
diff --git a/search-index.js b/search-index.js
index 4b89098af..d931d31e9 100644
--- a/search-index.js
+++ b/search-index.js
@@ -1,9 +1,9 @@
var searchIndex = JSON.parse('{\
"actix_cors":{"doc":"Cross-Origin Resource Sharing (CORS) controls for Actix …","t":[13,13,3,4,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["BadRequestHeaders","BadRequestMethod","Cors","CorsError","HeadersNotAllowed","MethodNotAllowed","MissingOrigin","MissingRequestMethod","OriginNotAllowed","WildcardOrigin","allow_any_header","allow_any_method","allow_any_origin","allowed_header","allowed_headers","allowed_methods","allowed_origin","allowed_origin_fn","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","default","disable_preflight","disable_vary_header","error_response","expose_any_header","expose_headers","fmt","fmt","fmt","from","from","into","into","max_age","new_transform","permissive","send_wildcard","status_code","supports_credentials","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip"],"q":["actix_cors","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Request header Access-Control-Request-Headers
has an …","Request header Access-Control-Request-Method
has an …","Builder for CORS middleware.","Errors that can occur when processing CORS guarded …","One or more request headers are not allowed.","Request method is not allowed.","Request header Origin
is required but was not provided.","Request header Access-Control-Request-Method
is required …","Origin is not allowed to make this request.","Allowed origin argument must not be wildcard (*
).","Resets allowed request header list to a state where any …","Resets allowed methods list to all methods.","Resets allowed origin list to a state where any origin is …","Add an allowed request header.","Set a list of request header field names which can be used …","Set a list of methods which allowed origins can perform.","Add an origin that is allowed to make requests.","Determinate allowed origins by processing requests which …","","","","","","","A restrictive (security paranoid) set of defaults.","Disable support for preflight requests.","Disable Vary
header support.","","Resets exposed response header list to a state where any …","Set a list of headers which are safe to expose to the API …","","","","","","","","Set a maximum time (in seconds) for which this CORS …","","A very permissive set of default for quick development. …","Set to use wildcard origins.","","Allows users to make authenticated requests","","","","","","","","","",""],"i":[1,1,0,0,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,1,2,1,1,1,2,2,2,1,2,2,2,1,1,2,1,2,1,2,2,2,2,1,2,1,1,2,1,2,1,2,1,2,1],"f":[null,null,null,null,null,null,null,null,null,null,[[],["cors",3]],[[],["cors",3]],[[],["cors",3]],[[],["cors",3]],[[],["cors",3]],[[],["cors",3]],[[["str",15]],["cors",3]],[[],["cors",3]],[[]],[[]],[[]],[[]],[[],["corserror",4]],[[]],[[],["cors",3]],[[],["cors",3]],[[],["cors",3]],[[],["httpresponse",3]],[[],["cors",3]],[[],["cors",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[],["cors",3]],[[]],[[]],[[],["cors",3]],[[],["statuscode",3]],[[],["cors",3]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]]],"p":[[4,"CorsError"],[3,"Cors"]]},\
-"actix_identity":{"doc":"Opinionated request identity service for Actix Web apps.","t":[3,16,3,8,3,8,16,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["CookieIdentityPolicy","Future","Identity","IdentityPolicy","IdentityService","RequestIdentity","ResponseFuture","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","domain","forget","from","from","from","from_request","from_request","from_request","get_identity","http_only","identity","into","into","into","login_deadline","max_age","max_age_secs","name","new","new","new_transform","path","remember","same_site","secure","to_owned","to_response","to_response","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","visit_deadline","vzip","vzip","vzip"],"q":["actix_identity","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Use cookies for request identity storage.","The return type of the middleware","The extractor type to obtain your identity from a request.","Identity policy.","Request identity middleware","Helper trait that allows to get Identity.","The return type of the middleware","","","","","","","","","Sets the Domain
attribute of issued cookies.","This method is used to ‘forget’ the current identity …","","","","Parse the session from request and load data from a …","","","","Sets the HttpOnly
attribute of issued cookies.","Return the claimed identity of the user associated request …","","","","Accepts only users who authenticated within the given …","Sets the Max-Age
attribute of issued cookies.","Sets the Max-Age
attribute of issued cookies with given …","Sets the name of issued cookies.","Create new CookieIdentityPolicy
instance.","Create new identity service with specified backend.","","Sets the Path
attribute of issued cookies.","Remember identity.","Sets the SameSite
attribute of issued cookies.","Sets the Secure
attribute of issued cookies.","","Write changes to response","","","","","","","","","","","Accepts only users who have visited within given deadline.","","",""],"i":[0,1,0,0,0,0,1,2,3,4,2,3,4,4,4,2,4,2,3,4,1,2,4,5,2,4,2,3,4,2,2,2,2,2,3,3,2,4,2,2,4,1,2,2,3,4,2,3,4,2,3,4,2,2,3,4],"f":[null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["identity",3]],[[]],[[],["cookieidentitypolicy",3]],[[]],[[]],[[]],[[]],[[["servicerequest",3]]],[[["servicerequest",3]]],[[["httprequest",3],["payload",4]]],[[],[["string",3],["option",4,["string"]]]],[[["bool",15]]],[[],[["string",3],["option",4,["string"]]]],[[]],[[]],[[]],[[["duration",3]],["cookieidentitypolicy",3]],[[["duration",3]],["cookieidentitypolicy",3]],[[["i64",15]],["cookieidentitypolicy",3]],[[],["cookieidentitypolicy",3]],[[],["cookieidentitypolicy",3]],[[]],[[]],[[],["cookieidentitypolicy",3]],[[["string",3]]],[[["samesite",4]]],[[["bool",15]],["cookieidentitypolicy",3]],[[]],[[["bool",15],["string",3],["option",4,["string"]],["serviceresponse",3]]],[[["bool",15],["string",3],["option",4,["string"]],["serviceresponse",3]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["duration",3]],["cookieidentitypolicy",3]],[[]],[[]],[[]]],"p":[[8,"IdentityPolicy"],[3,"CookieIdentityPolicy"],[3,"IdentityService"],[3,"Identity"],[8,"RequestIdentity"]]},\
-"actix_protobuf":{"doc":"","t":[12,13,13,13,13,3,3,3,4,8,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12],"n":["0","ContentType","Deserialize","Overflow","Payload","ProtoBuf","ProtoBufConfig","ProtoBufMessage","ProtoBufPayloadError","ProtoBufResponseBuilder","Serialize","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","default","deref","deref_mut","error_response","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from_request","into","into","into","into","into_future","limit","limit","new","poll","protobuf","respond_to","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_poll","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","0","0","0"],"q":["actix_protobuf","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_protobuf::ProtoBufPayloadError","",""],"d":["","Content type error","Deserialize error","Payload size is bigger than 256k","Payload error","","","","","","Serialize error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Change max size of payload. By default max size is 256Kb","Change max size of payload. By default max size is 256Kb","Create ProtoBufMessage
for request.","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[1,2,2,2,2,0,0,0,0,0,2,1,3,4,2,1,3,4,2,3,1,1,2,1,1,2,2,1,3,4,2,2,2,1,1,3,4,2,4,3,4,4,4,5,1,1,2,1,3,4,2,1,3,4,2,4,1,3,4,2,1,3,4,2,6,7,8],"f":[null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["httpresponse",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["payloaderror",4]],["protobufpayloaderror",4]],[[["protobufdecodeerror",3]],["protobufpayloaderror",4]],[[["payload",4],["httprequest",3]]],[[]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["payload",4],["httprequest",3]]],[[["pin",3],["context",3]],["poll",4]],[[["message",8]],[["httpresponse",3],["result",4,["httpresponse","error"]],["error",3]]],[[["httprequest",3]],["httpresponse",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["context",3],["pin",3]],["poll",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,null,null],"p":[[3,"ProtoBuf"],[4,"ProtoBufPayloadError"],[3,"ProtoBufConfig"],[3,"ProtoBufMessage"],[8,"ProtoBufResponseBuilder"],[13,"Serialize"],[13,"Deserialize"],[13,"Payload"]]},\
-"actix_redis":{"doc":"Redis integration for Actix and session store for Actix …","t":[12,13,13,3,13,13,4,13,13,13,13,13,13,13,13,13,13,3,3,13,4,4,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12],"n":["0","Array","BulkString","Command","Connection","Disconnected","Error","Error","IO","Integer","Internal","Lax","Nil","None","NotConnected","RESP","Redis","RedisActor","RedisSession","Remote","RespError","RespValue","SameSite","SimpleString","Strict","Unexpected","append","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cache_keygen","clone","clone","clone_into","clone_into","cookie_domain","cookie_http_only","cookie_max_age","cookie_name","cookie_path","cookie_same_site","cookie_secure","eq","eq","equivalent","equivalent","error","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_resp_int","get_hash","handle","handle","hash","into","into","into","into","into","into","into","is_lax","is_none","is_strict","ne","new","new_transform","push","restarting","source","source","start","started","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","ttl","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0"],"q":["actix_redis","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_redis::Error"],"d":["","Zero, one or more other RespValue
s.","A bulk string. In Redis terminology a string is a …","Command for send data to Redis","Error creating a connection, or an error with a connection …","Cancel all waters when connection get dropped","General purpose actix redis error","An error from the Redis server","An IO error occurred","Redis documentation defines an integer as being a signed …","A non-specific internal error that prevented an operation …","The “Lax” SameSite
attribute.","","The “None” SameSite
attribute.","Receiving message during reconnecting","A RESP parsing/serialising error occurred","","Redis communication actor","Use redis as session storage.","A remote error","","A single RESP value, this owns the data that is read/to-be …","The SameSite
cookie attribute.","","The “Strict” SameSite
attribute.","An unexpected error. In this context “unexpected” …","Convenience function for building dynamic Redis commands …","","","","","","","","","","","","","","","Set a custom cache key generation strategy, expecting …","","","","","Set custom cookie domain.","Set custom cookie HttpOnly
policy.","Set custom cookie max-age.","Set custom cookie name for session ID.","Set custom cookie path.","Set custom cookie SameSite
attribute.","Set custom cookie secure.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns true
if self
is SameSite::Lax
and false
otherwise.","Returns true
if self
is SameSite::None
and false
otherwise.","Returns true
if self
is SameSite::Strict
and false
…","","Create new redis session backend","","Push item to Resp array","","","","Start new Supervisor
with RedisActor
.","","","","","","","","","","","","","","","","","","","","","Set time to live in seconds for session value.","","","","","","","","","","","","","","",""],"i":[1,2,2,0,3,4,0,2,3,2,3,5,2,5,4,3,4,0,0,3,0,0,0,2,5,3,2,6,7,1,4,2,3,5,6,7,1,4,2,3,5,7,2,5,2,5,7,7,7,7,7,7,7,2,5,2,5,6,1,4,4,2,3,3,5,5,6,7,1,4,4,2,2,2,2,2,2,2,2,3,3,3,5,2,5,6,6,5,6,7,1,4,2,3,5,5,5,5,2,7,7,2,6,4,3,6,6,2,5,4,3,5,6,7,1,4,2,3,5,6,7,1,4,2,3,5,7,6,7,1,4,2,3,5,6,7,1,4,2,3,5,8],"f":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["respvalue",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["box",3,["fn"]],["fn",8]]],[[],["respvalue",4]],[[],["samesite",4]],[[]],[[]],[[["str",15]]],[[["bool",15]]],[[]],[[["str",15]]],[[["str",15]]],[[["samesite",4]]],[[["bool",15]]],[[["respvalue",4]],["bool",15]],[[["samesite",4]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[["error",3]],["running",4]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],[["result",4,["error"]],["error",3]]],[[["formatter",3]],[["result",4,["error"]],["error",3]]],[[["formatter",3]],[["result",4,["error"]],["error",3]]],[[["formatter",3]],[["result",4,["error"]],["error",3]]],[[["formatter",3]],[["result",4,["error"]],["error",3]]],[[]],[[]],[[]],[[["error",4]],["error",4]],[[]],[[["vec",3,["u8","global"]],["u8",15],["global",3]],["respvalue",4]],[[],["respvalue",4]],[[["str",15]],["respvalue",4]],[[["usize",15]],["respvalue",4]],[[]],[[["string",3]],["respvalue",4]],[[["arc",3,["str"]],["str",15]],["respvalue",4]],[[["string",3]],["respvalue",4]],[[["error",3]],["error",4]],[[]],[[["trysenderror",3]],["error",4]],[[]],[[["respvalue",4]],[["result",4,["respvalue","error"]],["respvalue",4],["error",4]]],[[],["u64",15]],[[["result",4,["respvalue","resperror"]],["respvalue",4],["resperror",4]]],[[["command",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[["respvalue",4]],["bool",15]],[[["into",8,["string"]],["string",3]],["redissession",3]],[[]],[[]],[[]],[[],[["option",4,["error"]],["error",8]]],[[],[["option",4,["error"]],["error",8]]],[[["into",8,["string"]],["string",3]],[["addr",3,["redisactor"]],["redisactor",3]]],[[["context",3]]],[[]],[[]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["u32",15]]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null],"p":[[3,"Command"],[4,"RespValue"],[4,"RespError"],[4,"Error"],[4,"SameSite"],[3,"RedisActor"],[3,"RedisSession"],[13,"Redis"]]},\
-"actix_session":{"doc":"Sessions for Actix Web.","t":[13,3,13,13,3,4,13,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["Changed","CookieSession","Purged","Renewed","Session","SessionStatus","Unchanged","UserSession","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clear","clone","clone_into","default","domain","entries","eq","expires_in","expires_in_time","fmt","from","from","from","from_request","get","get_changes","get_session","http_only","insert","into","into","into","lazy","max_age","max_age_time","name","new_transform","path","private","purge","remove","remove_as","renew","same_site","secure","set_session","signed","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip"],"q":["actix_session","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Session has been updated and requires a new persist …","Use cookies for session storage.","Session is flagged for deletion and should be removed from …","Session is flagged for refresh.","The high-level interface you use to modify session data.","Status of a Session
.","Session is unchanged from when last seen (if exists).","Extraction of a Session
object.","","","","","","","Clear the session.","","","","Sets the domain
field in the session cookie being built.","Get all raw key-value data from the session.","","Sets the expires
field in the session cookie being built.","Sets the expires
field in the session cookie being built.","","","","","","Get a value
from the session.","Returns session status and iterator of key-value pairs of …","Extract the Session
object","Sets the http_only
field in the session cookie being built.","Inserts a key-value pair into the session.","","","","When true, prevents adding session cookies to responses …","Sets the max-age
field in the session cookie being built.","Sets the max-age
field in the session cookie being built.","Sets the name
field in the session cookie being built.","","Sets the path
field in the session cookie being built.","Construct new private CookieSession
instance.","Removes session both client and server side.","Remove value from the session.","Remove value from the session and deserialize.","Renews the session key, assigning existing session state …","Sets the same_site
field in the session cookie being built.","Sets the secure
field in the session cookie being built.","Adds the given key-value pairs to the session on the …","Construct new signed CookieSession
instance.","","","","","","","","","","","","",""],"i":[1,0,1,1,0,0,1,0,2,3,1,2,3,1,3,1,1,1,2,3,1,2,2,1,2,3,1,3,3,3,4,2,3,2,3,1,2,2,2,2,2,2,2,3,3,3,3,2,2,3,2,1,2,3,1,2,3,1,2,3,1,2,3,1],"f":[null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["sessionstatus",4]],[[]],[[],["sessionstatus",4]],[[["into",8,["string"]],["string",3]],["cookiesession",3]],[[],[["hashmap",3,["string","string"]],["ref",3,["hashmap"]]]],[[["sessionstatus",4]],["bool",15]],[[["i64",15]],["cookiesession",3]],[[["duration",3]],["cookiesession",3]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[["httprequest",3],["payload",4]]],[[["str",15]],[["result",4,["option","error"]],["option",4],["error",3]]],[[["serviceresponse",3]]],[[],["session",3]],[[["bool",15]],["cookiesession",3]],[[],[["result",4,["error"]],["error",3]]],[[]],[[]],[[]],[[["bool",15]],["cookiesession",3]],[[["i64",15]],["cookiesession",3]],[[["duration",3]],["cookiesession",3]],[[["into",8,["string"]],["string",3]],["cookiesession",3]],[[]],[[["into",8,["string"]],["string",3]],["cookiesession",3]],[[],["cookiesession",3]],[[]],[[["str",15]],[["option",4,["string"]],["string",3]]],[[["str",15]],[["option",4,["result"]],["result",4,["string"]]]],[[]],[[["samesite",4]],["cookiesession",3]],[[["bool",15]],["cookiesession",3]],[[["servicerequest",3]]],[[],["cookiesession",3]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]]],"p":[[4,"SessionStatus"],[3,"CookieSession"],[3,"Session"],[8,"UserSession"]]},\
-"actix_web_httpauth":{"doc":"HTTP authentication schemes for actix-web.","t":[0,0,0,8,8,3,16,16,16,0,0,11,11,11,11,11,11,11,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,3,13,3,3,13,13,13,4,8,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,8,3,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["extractors","headers","middleware","AuthExtractor","AuthExtractorConfig","AuthenticationError","Error","Future","Inner","basic","bearer","borrow","borrow_mut","challenge_mut","error_response","fmt","fmt","from","from","from_service_request","into","into_inner","new","status_code","status_code_mut","to_string","try_from","try_into","type_id","vzip","with_error","with_error_description","with_error_uri","BasicAuth","Config","as_ref","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","default","fmt","fmt","from","from","from_request","from_service_request","into","into","into_inner","password","realm","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","user_id","vzip","vzip","BearerAuth","Config","Error","InsufficientScope","InvalidRequest","InvalidToken","as_ref","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","default","eq","equivalent","fmt","fmt","fmt","fmt","from","from","from","from_request","from_service_request","get_hash","hash","into","into","into","into_inner","partial_cmp","realm","scope","status_code","to_owned","to_owned","to_owned","to_string","token","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","authorization","www_authenticate","Authorization","Base64DecodeError","Basic","Bearer","Invalid","MissingField","MissingScheme","ParseError","Scheme","ToStrError","Utf8Error","as_mut","as_ref","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","cmp","default","eq","eq","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_hash","hash","into","into","into","into","into_scheme","name","ne","ne","ne","new","new","parse","parse","parse","parse","partial_cmp","partial_cmp","partial_cmp","password","source","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","token","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into_header_pair","try_into_value","try_into_value","try_into_value","type_id","type_id","type_id","type_id","user_id","vzip","vzip","vzip","vzip","0","0","0","0","0","Challenge","WwwAuthenticate","basic","bearer","borrow","borrow_mut","clone","clone_into","cmp","default","eq","equivalent","fmt","from","get_hash","hash","into","name","ne","parse","partial_cmp","to_bytes","to_owned","try_from","try_into","try_into_header_pair","try_into_value","type_id","vzip","Basic","borrow","borrow_mut","clone","clone_into","cmp","default","eq","equivalent","fmt","fmt","from","get_hash","hash","into","ne","new","partial_cmp","to_owned","to_string","try_from","try_into","try_into_value","type_id","vzip","with_realm","Bearer","BearerBuilder","Error","InsufficientScope","InvalidRequest","InvalidToken","borrow","borrow","borrow_mut","borrow_mut","build","clone","clone_into","cmp","default","default","eq","equivalent","error","error_description","error_uri","finish","fmt","fmt","fmt","from","from","get_hash","hash","into","into","ne","partial_cmp","realm","scope","to_owned","to_string","try_from","try_from","try_into","try_into","try_into_value","type_id","type_id","vzip","vzip","HttpAuthentication","basic","bearer","borrow","borrow_mut","clone","clone_into","fmt","from","into","new_transform","to_owned","try_from","try_into","type_id","vzip","with_fn"],"q":["actix_web_httpauth","","","actix_web_httpauth::extractors","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::extractors::basic","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::extractors::bearer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::headers","","actix_web_httpauth::headers::authorization","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::headers::authorization::ParseError","","","","actix_web_httpauth::headers::www_authenticate","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::headers::www_authenticate::basic","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::headers::www_authenticate::bearer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::middleware","","","","","","","","","","","","","","","",""],"d":["Type-safe authentication information extractors","Typed HTTP headers","HTTP Authentication middleware.","Trait implemented by types that can extract HTTP …","Trait implemented for types that provides configuration …","Authentication error returned by authentication extractors.","The associated error which can be returned.","Future that resolves into extracted credentials type.","Associated challenge type.","Extractor for the “Basic” HTTP Authentication Scheme","Extractor for the “Bearer” HTTP Authentication Scheme","","","Returns mutable reference to the inner challenge instance.","","","","","","Parse the authentication credentials from the actix’ …","","Convert the config instance into a HTTP challenge.","Creates new authentication error from the provided …","","Returns mutable reference to the inner status code.","","","","","","Attach Error
to the current Authentication error.","Attach error description to the current Authentication …","Attach error URI to the current Authentication error.","Extractor for HTTP Basic auth.","BasicAuth
extractor configuration, used for …","","","","","","","","","","","","","","","","","","","","Returns client’s password.","Set challenge realm
attribute.","","","","","","","","","Returns client’s user-ID.","","","Extractor for HTTP Bearer auth","BearerAuth extractor configuration.","Bearer authorization error types, described in RFC 6750","The request requires higher privileges than provided by …","The request is missing a required parameter, includes an …","The access token provided is expired, revoked, malformed, …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Set challenge realm
attribute.","Set challenge scope
attribute.","Returns HTTP status code suitable for current error type.","","","","","Returns bearer token provided by client.","","","","","","","","","","","","","Authorization
header and various auth schemes","WWW-Authenticate
header and various auth challenges","Authorization
header, defined in RFC 7235","Malformed base64 string","Credentials for Basic
authentication scheme, defined in …","Credentials for Bearer
authentication scheme, defined in …","Header value is malformed","Required authentication field is missing","Authentication scheme is missing","Possible errors while parsing Authorization
header.","Authentication scheme for Authorization
header.","Unable to convert header into the str","Malformed UTF-8 string","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Consumes Authorization
header and returns inner Scheme
…","","","","","Creates Basic
credentials with provided user_id
and …","Creates new Bearer
credentials with the token provided.","Try to parse the authentication scheme from the …","","","","","","","Returns client’s password if provided.","","","","","","","","","Gets reference to the credentials token.","","","","","","","","","","","","","","","","","Returns client’s user-ID.","","","","","","","","","","Authentication challenge for WWW-Authenticate
header.","WWW-Authenticate
header, described in RFC 7235","Challenge for the “Basic” HTTP Authentication Scheme","Challenge for the “Bearer” HTTP Authentication Scheme","","","","","","","","","","","","","","","","","","Converts the challenge into a bytes suitable for HTTP …","","","","","","","","Challenge for WWW-Authenticate
header with HTTP Basic auth …","","","","","","","","","","","","","","","","Creates new Basic
challenge with an empty realm
field.","","","","","","","","","Creates new Basic
challenge from the provided realm
field …","Challenge for WWW-Authenticate
header with HTTP Bearer …","Builder for the Bearer
challenge.","Bearer authorization error types, described in RFC 6750","The request requires higher privileges than provided by …","The request is missing a required parameter, includes an …","The access token provided is expired, revoked, malformed, …","","","","","Creates the builder for Bearer
challenge.","","","","","","","","Provides the error
attribute, as defined in RFC6750, …","Provides the error_description
attribute, as defined in …","Provides the error_uri
attribute, as defined in RFC6750, …","Consumes the builder and returns built Bearer
instance.","","","","","","","","","","","","Provides the realm
attribute, as defined in RFC2617","Provides the scope
attribute, as defined in RFC6749, …","","","","","","","","","","","","Middleware for checking HTTP authentication.","Construct HttpAuthentication
middleware for the HTTP “…","Construct HttpAuthentication
middleware for the HTTP “…","","","","","","","","","","","","","","Construct HttpAuthentication
middleware with the provided …"],"i":[0,0,0,0,0,0,1,1,2,0,0,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,3,3,3,0,0,4,4,5,4,5,4,5,4,5,4,4,5,4,5,5,5,4,5,4,5,4,4,5,4,5,4,5,4,5,5,4,5,0,0,0,6,6,6,7,7,8,6,7,8,6,7,8,6,7,8,6,6,7,6,6,7,8,6,6,7,8,6,8,8,6,6,7,8,6,7,6,7,7,6,7,8,6,6,8,7,8,6,7,8,6,7,8,6,7,8,6,0,0,0,9,0,0,9,9,9,0,0,9,9,10,10,9,10,11,12,9,10,11,12,10,11,12,10,11,12,10,11,12,10,10,11,12,10,11,12,9,9,10,10,11,11,12,12,9,9,9,9,10,10,10,11,12,10,10,9,10,11,12,10,10,10,11,12,11,12,13,10,11,12,10,11,12,11,9,10,11,12,9,10,11,12,12,9,10,11,12,9,10,11,12,10,10,11,12,9,10,11,12,11,9,10,11,12,14,15,16,17,18,0,0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,18,18,18,18,18,18,18,0,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,0,0,0,6,6,6,21,22,21,22,22,22,22,22,21,22,22,22,21,21,21,21,21,22,22,21,22,22,22,21,22,22,22,21,21,22,22,21,22,21,22,22,21,22,21,22,0,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23],"f":[null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[],["httpresponse",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["servicerequest",3]]],[[]],[[]],[[],["authenticationerror",3]],[[],["statuscode",3]],[[],["statuscode",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[["error",4]]],[[]],[[]],null,null,[[],["challenge",3]],[[]],[[]],[[]],[[]],[[],["config",3]],[[],["basicauth",3]],[[]],[[]],[[],["config",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["httprequest",3],["payload",4]]],[[["servicerequest",3]]],[[]],[[]],[[]],[[],[["option",4,["cow"]],["cow",4]]],[[],["config",3]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["cow",4]],[[]],[[]],null,null,null,null,null,null,[[],["bearer",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["config",3]],[[],["bearerauth",3]],[[],["error",4]],[[]],[[]],[[]],[[["error",4]],["ordering",4]],[[],["config",3]],[[["error",4]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[["httprequest",3],["payload",4]]],[[["servicerequest",3]]],[[],["u64",15]],[[]],[[]],[[]],[[]],[[]],[[["error",4]],[["option",4,["ordering"]],["ordering",4]]],[[["cow",4,["str"]],["into",8,["cow"]]],["config",3]],[[["cow",4,["str"]],["into",8,["cow"]]],["config",3]],[[],["statuscode",3]],[[]],[[]],[[]],[[],["string",3]],[[],["str",15]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["authorization",3]],[[],["basic",3]],[[],["bearer",3]],[[]],[[]],[[]],[[["authorization",3]],["ordering",4]],[[["basic",3]],["ordering",4]],[[["bearer",3]],["ordering",4]],[[],["authorization",3]],[[["authorization",3]],["bool",15]],[[["basic",3]],["bool",15]],[[["bearer",3]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["decodeerror",4]]],[[]],[[["tostrerror",3]]],[[["utf8error",3]]],[[]],[[]],[[],["authorization",3]],[[]],[[]],[[],["u64",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["headername",3]],[[["authorization",3]],["bool",15]],[[["basic",3]],["bool",15]],[[["bearer",3]],["bool",15]],[[["option",4]],["basic",3]],[[],["bearer",3]],[[["headervalue",3]],[["result",4,["parseerror"]],["parseerror",4]]],[[],[["parseerror",4],["result",4,["parseerror"]]]],[[["headervalue",3]],[["result",4,["parseerror"]],["parseerror",4]]],[[["headervalue",3]],[["result",4,["parseerror"]],["parseerror",4]]],[[["authorization",3]],[["option",4,["ordering"]],["ordering",4]]],[[["basic",3]],[["option",4,["ordering"]],["ordering",4]]],[[["bearer",3]],[["option",4,["ordering"]],["ordering",4]]],[[],[["option",4,["cow"]],["cow",4]]],[[],[["option",4,["error"]],["error",8]]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["cow",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],[["headervalue",3],["result",4,["headervalue"]]]],[[],[["headervalue",3],["result",4,["headervalue"]]]],[[],[["result",4,["headervalue"]],["headervalue",3]]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["cow",4]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,[[]],[[]],[[],["wwwauthenticate",3]],[[]],[[["wwwauthenticate",3]],["ordering",4]],[[],["wwwauthenticate",3]],[[["wwwauthenticate",3]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[]],[[],["u64",15]],[[]],[[]],[[],["headername",3]],[[["wwwauthenticate",3]],["bool",15]],[[],[["parseerror",4],["result",4,["parseerror"]]]],[[["wwwauthenticate",3]],[["option",4,["ordering"]],["ordering",4]]],[[],["bytes",3]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],[["result",4,["headervalue"]],["headervalue",3]]],[[],["typeid",3]],[[]],null,[[]],[[]],[[],["basic",3]],[[]],[[["basic",3]],["ordering",4]],[[],["basic",3]],[[["basic",3]],["bool",15]],[[],["bool",15]],[[["formatter",3]],[["error",3],["result",4,["error"]]]],[[["formatter",3]],["result",6]],[[]],[[],["u64",15]],[[]],[[]],[[["basic",3]],["bool",15]],[[],["basic",3]],[[["basic",3]],[["option",4,["ordering"]],["ordering",4]]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],[["headervalue",3],["result",4,["headervalue"]]]],[[],["typeid",3]],[[]],[[],["basic",3]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[],["bearerbuilder",3]],[[],["bearer",3]],[[]],[[["bearer",3]],["ordering",4]],[[],["bearerbuilder",3]],[[],["bearer",3]],[[["bearer",3]],["bool",15]],[[],["bool",15]],[[["error",4]]],[[]],[[]],[[],["bearer",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],[["error",3],["result",4,["error"]]]],[[]],[[]],[[],["u64",15]],[[]],[[]],[[]],[[["bearer",3]],["bool",15]],[[["bearer",3]],[["option",4,["ordering"]],["ordering",4]]],[[]],[[]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],[["result",4,["headervalue"]],["headervalue",3]]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[],["httpauthentication",3]],[[]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[],["httpauthentication",3]]],"p":[[8,"AuthExtractor"],[8,"AuthExtractorConfig"],[3,"AuthenticationError"],[3,"Config"],[3,"BasicAuth"],[4,"Error"],[3,"Config"],[3,"BearerAuth"],[4,"ParseError"],[3,"Authorization"],[3,"Basic"],[3,"Bearer"],[8,"Scheme"],[13,"MissingField"],[13,"ToStrError"],[13,"Base64DecodeError"],[13,"Utf8Error"],[3,"WwwAuthenticate"],[8,"Challenge"],[3,"Basic"],[3,"BearerBuilder"],[3,"Bearer"],[3,"HttpAuthentication"]]}\
+"actix_identity":{"doc":"Opinionated request identity service for Actix Web apps.","t":[3,16,3,8,3,8,16,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["CookieIdentityPolicy","Future","Identity","IdentityPolicy","IdentityService","RequestIdentity","ResponseFuture","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","domain","forget","from","from","from","from_request","from_request","from_request","get_identity","http_only","identity","into","into","into","login_deadline","max_age","max_age_secs","name","new","new","new_transform","path","remember","same_site","secure","to_owned","to_response","to_response","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","visit_deadline","vzip","vzip","vzip"],"q":["actix_identity","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Use cookies for request identity storage.","The return type of the middleware","The extractor type to obtain your identity from a request.","Identity policy.","Request identity middleware","Helper trait that allows to get Identity.","The return type of the middleware","","","","","","","","","Sets the Domain
attribute of issued cookies.","This method is used to ‘forget’ the current identity …","","","","Parse the session from request and load data from a …","","","","Sets the HttpOnly
attribute of issued cookies.","Return the claimed identity of the user associated request …","","","","Accepts only users who authenticated within the given …","Sets the Max-Age
attribute of issued cookies.","Sets the Max-Age
attribute of issued cookies with given …","Sets the name of issued cookies.","Create new CookieIdentityPolicy
instance.","Create new identity service with specified backend.","","Sets the Path
attribute of issued cookies.","Remember identity.","Sets the SameSite
attribute of issued cookies.","Sets the Secure
attribute of issued cookies.","","Write changes to response","","","","","","","","","","","Accepts only users who have visited within given deadline.","","",""],"i":[0,1,0,0,0,0,1,2,3,4,2,3,4,4,4,2,4,2,3,4,1,2,4,5,2,4,2,3,4,2,2,2,2,2,3,3,2,4,2,2,4,1,2,2,3,4,2,3,4,2,3,4,2,2,3,4],"f":[null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[],["identity",3]],[[]],[[],["cookieidentitypolicy",3]],[[]],[[]],[[]],[[]],[[["servicerequest",3]]],[[["servicerequest",3]]],[[["payload",4],["httprequest",3]]],[[],[["string",3],["option",4,["string"]]]],[[["bool",15]]],[[],[["string",3],["option",4,["string"]]]],[[]],[[]],[[]],[[["duration",3]],["cookieidentitypolicy",3]],[[["duration",3]],["cookieidentitypolicy",3]],[[["i64",15]],["cookieidentitypolicy",3]],[[],["cookieidentitypolicy",3]],[[],["cookieidentitypolicy",3]],[[]],[[]],[[],["cookieidentitypolicy",3]],[[["string",3]]],[[["samesite",4]]],[[["bool",15]],["cookieidentitypolicy",3]],[[]],[[["serviceresponse",3],["bool",15],["string",3],["option",4,["string"]]]],[[["serviceresponse",3],["bool",15],["string",3],["option",4,["string"]]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["duration",3]],["cookieidentitypolicy",3]],[[]],[[]],[[]]],"p":[[8,"IdentityPolicy"],[3,"CookieIdentityPolicy"],[3,"IdentityService"],[3,"Identity"],[8,"RequestIdentity"]]},\
+"actix_protobuf":{"doc":"","t":[12,13,13,13,13,3,3,3,4,8,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12],"n":["0","ContentType","Deserialize","Overflow","Payload","ProtoBuf","ProtoBufConfig","ProtoBufMessage","ProtoBufPayloadError","ProtoBufResponseBuilder","Serialize","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","default","deref","deref_mut","error_response","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from_request","into","into","into","into","into_future","limit","limit","new","poll","protobuf","respond_to","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_poll","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","0","0","0"],"q":["actix_protobuf","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_protobuf::ProtoBufPayloadError","",""],"d":["","Content type error","Deserialize error","Payload size is bigger than 256k","Payload error","","","","","","Serialize error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Change max size of payload. By default max size is 256Kb","Change max size of payload. By default max size is 256Kb","Create ProtoBufMessage
for request.","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[1,2,2,2,2,0,0,0,0,0,2,1,3,4,2,1,3,4,2,3,1,1,2,1,1,2,2,1,3,4,2,2,2,1,1,3,4,2,4,3,4,4,4,5,1,1,2,1,3,4,2,1,3,4,2,4,1,3,4,2,1,3,4,2,6,7,8],"f":[null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["httpresponse",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[["payloaderror",4]],["protobufpayloaderror",4]],[[["protobufdecodeerror",3]],["protobufpayloaderror",4]],[[["httprequest",3],["payload",4]]],[[]],[[]],[[]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["httprequest",3],["payload",4]]],[[["pin",3],["context",3]],["poll",4]],[[["message",8]],[["result",4,["httpresponse","error"]],["httpresponse",3],["error",3]]],[[["httprequest",3]],["httpresponse",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["context",3],["pin",3]],["poll",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],null,null,null],"p":[[3,"ProtoBuf"],[4,"ProtoBufPayloadError"],[3,"ProtoBufConfig"],[3,"ProtoBufMessage"],[8,"ProtoBufResponseBuilder"],[13,"Serialize"],[13,"Deserialize"],[13,"Payload"]]},\
+"actix_redis":{"doc":"Redis integration for Actix and session store for Actix …","t":[12,13,13,3,13,13,4,13,13,13,13,13,13,13,13,13,13,3,3,13,4,4,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12],"n":["0","Array","BulkString","Command","Connection","Disconnected","Error","Error","IO","Integer","Internal","Lax","Nil","None","NotConnected","RESP","Redis","RedisActor","RedisSession","Remote","RespError","RespValue","SameSite","SimpleString","Strict","Unexpected","append","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cache_keygen","clone","clone","clone_into","clone_into","cookie_domain","cookie_http_only","cookie_max_age","cookie_name","cookie_path","cookie_same_site","cookie_secure","eq","eq","equivalent","equivalent","error","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_resp_int","get_hash","handle","handle","hash","into","into","into","into","into","into","into","is_lax","is_none","is_strict","ne","new","new_transform","push","restarting","source","source","start","started","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","ttl","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","0","0","0","0","0","0","1","0","0","0","0","0"],"q":["actix_redis","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_redis::Error","actix_redis::RespError","","","","","","","actix_redis::RespValue","","","",""],"d":["","Zero, one or more other RespValue
s.","A bulk string. In Redis terminology a string is a …","Command for send data to Redis","Error creating a connection, or an error with a connection …","Cancel all waters when connection get dropped","General purpose actix redis error","An error from the Redis server","An IO error occurred","Redis documentation defines an integer as being a signed …","A non-specific internal error that prevented an operation …","The “Lax” SameSite
attribute.","","The “None” SameSite
attribute.","Receiving message during reconnecting","A RESP parsing/serialising error occurred","","Redis communication actor","Use redis as session storage.","A remote error","","A single RESP value, this owns the data that is read/to-be …","The SameSite
cookie attribute.","","The “Strict” SameSite
attribute.","An unexpected error. In this context “unexpected” …","Convenience function for building dynamic Redis commands …","","","","","","","","","","","","","","","Set a custom cache key generation strategy, expecting …","","","","","Set custom cookie domain.","Set custom cookie HttpOnly
policy.","Set custom cookie max-age.","Set custom cookie name for session ID.","Set custom cookie path.","Set custom cookie SameSite
attribute.","Set custom cookie secure.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns true
if self
is SameSite::Lax
and false
otherwise.","Returns true
if self
is SameSite::None
and false
otherwise.","Returns true
if self
is SameSite::Strict
and false
…","","Create new redis session backend","","Push item to Resp array","","","","Start new Supervisor
with RedisActor
.","","","","","","","","","","","","","","","","","","","","","Set time to live in seconds for session value.","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[1,2,2,0,3,4,0,2,3,2,3,5,2,5,4,3,4,0,0,3,0,0,0,2,5,3,2,6,7,1,4,2,3,5,6,7,1,4,2,3,5,7,2,5,2,5,7,7,7,7,7,7,7,2,5,2,5,6,1,4,4,2,3,3,5,5,6,7,1,4,4,2,2,2,2,2,2,2,2,3,3,3,5,2,5,6,6,5,6,7,1,4,2,3,5,5,5,5,2,7,7,2,6,4,3,6,6,2,5,4,3,5,6,7,1,4,2,3,5,6,7,1,4,2,3,5,7,6,7,1,4,2,3,5,6,7,1,4,2,3,5,8,9,10,11,12,13,14,11,15,16,17,18,19],"f":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],["respvalue",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["box",3,["fn"]],["fn",8]]],[[],["respvalue",4]],[[],["samesite",4]],[[]],[[]],[[["str",15]]],[[["bool",15]]],[[]],[[["str",15]]],[[["str",15]]],[[["samesite",4]]],[[["bool",15]]],[[["respvalue",4]],["bool",15]],[[["samesite",4]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[["error",3]],["running",4]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],[["error",3],["result",4,["error"]]]],[[["formatter",3]],[["error",3],["result",4,["error"]]]],[[["formatter",3]],[["error",3],["result",4,["error"]]]],[[["formatter",3]],[["error",3],["result",4,["error"]]]],[[["formatter",3]],[["error",3],["result",4,["error"]]]],[[]],[[]],[[]],[[["error",4]],["error",4]],[[]],[[["usize",15]],["respvalue",4]],[[]],[[["string",3]],["respvalue",4]],[[["string",3]],["respvalue",4]],[[["str",15]],["respvalue",4]],[[["arc",3,["str"]],["str",15]],["respvalue",4]],[[["u8",15],["vec",3,["u8","global"]],["global",3]],["respvalue",4]],[[],["respvalue",4]],[[["trysenderror",3]],["error",4]],[[]],[[["error",3]],["error",4]],[[]],[[["respvalue",4]],[["result",4,["respvalue","error"]],["respvalue",4],["error",4]]],[[],["u64",15]],[[["respvalue",4],["result",4,["respvalue","resperror"]],["resperror",4]]],[[["command",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[["respvalue",4]],["bool",15]],[[["into",8,["string"]],["string",3]],["redissession",3]],[[]],[[]],[[]],[[],[["error",8],["option",4,["error"]]]],[[],[["option",4,["error"]],["error",8]]],[[["into",8,["string"]],["string",3]],[["addr",3,["redisactor"]],["redisactor",3]]],[[["context",3]]],[[]],[[]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[["u32",15]]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null],"p":[[3,"Command"],[4,"RespValue"],[4,"RespError"],[4,"Error"],[4,"SameSite"],[3,"RedisActor"],[3,"RedisSession"],[13,"Redis"],[13,"Internal"],[13,"IO"],[13,"RESP"],[13,"Remote"],[13,"Connection"],[13,"Unexpected"],[13,"Array"],[13,"BulkString"],[13,"Error"],[13,"Integer"],[13,"SimpleString"]]},\
+"actix_session":{"doc":"Sessions for Actix Web.","t":[13,3,13,13,3,4,13,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["Changed","CookieSession","Purged","Renewed","Session","SessionStatus","Unchanged","UserSession","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clear","clone","clone_into","default","domain","entries","eq","expires_in","expires_in_time","fmt","from","from","from","from_request","get","get_changes","get_session","http_only","insert","into","into","into","lazy","max_age","max_age_time","name","new_transform","path","private","purge","remove","remove_as","renew","same_site","secure","set_session","signed","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip"],"q":["actix_session","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Session has been updated and requires a new persist …","Use cookies for session storage.","Session is flagged for deletion and should be removed from …","Session is flagged for refresh.","The high-level interface you use to modify session data.","Status of a Session
.","Session is unchanged from when last seen (if exists).","Extraction of a Session
object.","","","","","","","Clear the session.","","","","Sets the domain
field in the session cookie being built.","Get all raw key-value data from the session.","","Sets the expires
field in the session cookie being built.","Sets the expires
field in the session cookie being built.","","","","","","Get a value
from the session.","Returns session status and iterator of key-value pairs of …","Extract the Session
object","Sets the http_only
field in the session cookie being built.","Inserts a key-value pair into the session.","","","","When true, prevents adding session cookies to responses …","Sets the max-age
field in the session cookie being built.","Sets the max-age
field in the session cookie being built.","Sets the name
field in the session cookie being built.","","Sets the path
field in the session cookie being built.","Construct new private CookieSession
instance.","Removes session both client and server side.","Remove value from the session.","Remove value from the session and deserialize.","Renews the session key, assigning existing session state …","Sets the same_site
field in the session cookie being built.","Sets the secure
field in the session cookie being built.","Adds the given key-value pairs to the session on the …","Construct new signed CookieSession
instance.","","","","","","","","","","","","",""],"i":[1,0,1,1,0,0,1,0,2,3,1,2,3,1,3,1,1,1,2,3,1,2,2,1,2,3,1,3,3,3,4,2,3,2,3,1,2,2,2,2,2,2,2,3,3,3,3,2,2,3,2,1,2,3,1,2,3,1,2,3,1,2,3,1],"f":[null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["sessionstatus",4]],[[]],[[],["sessionstatus",4]],[[["into",8,["string"]],["string",3]],["cookiesession",3]],[[],[["hashmap",3,["string","string"]],["ref",3,["hashmap"]]]],[[["sessionstatus",4]],["bool",15]],[[["i64",15]],["cookiesession",3]],[[["duration",3]],["cookiesession",3]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[["payload",4],["httprequest",3]]],[[["str",15]],[["option",4],["error",3],["result",4,["option","error"]]]],[[["serviceresponse",3]]],[[],["session",3]],[[["bool",15]],["cookiesession",3]],[[],[["result",4,["error"]],["error",3]]],[[]],[[]],[[]],[[["bool",15]],["cookiesession",3]],[[["i64",15]],["cookiesession",3]],[[["duration",3]],["cookiesession",3]],[[["into",8,["string"]],["string",3]],["cookiesession",3]],[[]],[[["into",8,["string"]],["string",3]],["cookiesession",3]],[[],["cookiesession",3]],[[]],[[["str",15]],[["string",3],["option",4,["string"]]]],[[["str",15]],[["option",4,["result"]],["result",4,["string"]]]],[[]],[[["samesite",4]],["cookiesession",3]],[[["bool",15]],["cookiesession",3]],[[["servicerequest",3]]],[[],["cookiesession",3]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]]],"p":[[4,"SessionStatus"],[3,"CookieSession"],[3,"Session"],[8,"UserSession"]]},\
+"actix_web_httpauth":{"doc":"HTTP authentication schemes for actix-web.","t":[0,0,0,8,8,3,16,16,16,0,0,11,11,11,11,11,11,11,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,3,13,3,3,13,13,13,4,8,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,8,3,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,4,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["extractors","headers","middleware","AuthExtractor","AuthExtractorConfig","AuthenticationError","Error","Future","Inner","basic","bearer","borrow","borrow_mut","challenge_mut","error_response","fmt","fmt","from","from","from_service_request","into","into_inner","new","status_code","status_code_mut","to_string","try_from","try_into","type_id","vzip","with_error","with_error_description","with_error_uri","BasicAuth","Config","as_ref","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","default","fmt","fmt","from","from","from_request","from_service_request","into","into","into_inner","password","realm","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","user_id","vzip","vzip","BearerAuth","Config","Error","InsufficientScope","InvalidRequest","InvalidToken","as_ref","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","default","eq","equivalent","fmt","fmt","fmt","fmt","from","from","from","from_request","from_service_request","get_hash","hash","into","into","into","into_inner","partial_cmp","realm","scope","status_code","to_owned","to_owned","to_owned","to_string","token","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","authorization","www_authenticate","Authorization","Base64DecodeError","Basic","Bearer","Invalid","MissingField","MissingScheme","ParseError","Scheme","ToStrError","Utf8Error","as_mut","as_ref","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","cmp","default","eq","eq","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_hash","hash","into","into","into","into","into_scheme","name","ne","ne","ne","new","new","parse","parse","parse","parse","partial_cmp","partial_cmp","partial_cmp","password","source","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","token","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into_header_pair","try_into_value","try_into_value","try_into_value","type_id","type_id","type_id","type_id","user_id","vzip","vzip","vzip","vzip","0","0","0","0","0","Challenge","WwwAuthenticate","basic","bearer","borrow","borrow_mut","clone","clone_into","cmp","default","eq","equivalent","fmt","from","get_hash","hash","into","name","ne","parse","partial_cmp","to_bytes","to_owned","try_from","try_into","try_into_header_pair","try_into_value","type_id","vzip","Basic","borrow","borrow_mut","clone","clone_into","cmp","default","eq","equivalent","fmt","fmt","from","get_hash","hash","into","ne","new","partial_cmp","to_owned","to_string","try_from","try_into","try_into_value","type_id","vzip","with_realm","Bearer","BearerBuilder","Error","InsufficientScope","InvalidRequest","InvalidToken","borrow","borrow","borrow_mut","borrow_mut","build","clone","clone_into","cmp","default","default","eq","equivalent","error","error_description","error_uri","finish","fmt","fmt","fmt","from","from","get_hash","hash","into","into","ne","partial_cmp","realm","scope","to_owned","to_string","try_from","try_from","try_into","try_into","try_into_value","type_id","type_id","vzip","vzip","HttpAuthentication","basic","bearer","borrow","borrow_mut","clone","clone_into","fmt","from","into","new_transform","to_owned","try_from","try_into","type_id","vzip","with_fn"],"q":["actix_web_httpauth","","","actix_web_httpauth::extractors","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::extractors::basic","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::extractors::bearer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::headers","","actix_web_httpauth::headers::authorization","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::headers::authorization::ParseError","","","","actix_web_httpauth::headers::www_authenticate","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::headers::www_authenticate::basic","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::headers::www_authenticate::bearer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_web_httpauth::middleware","","","","","","","","","","","","","","","",""],"d":["Type-safe authentication information extractors","Typed HTTP headers","HTTP Authentication middleware.","Trait implemented by types that can extract HTTP …","Trait implemented for types that provides configuration …","Authentication error returned by authentication extractors.","The associated error which can be returned.","Future that resolves into extracted credentials type.","Associated challenge type.","Extractor for the “Basic” HTTP Authentication Scheme","Extractor for the “Bearer” HTTP Authentication Scheme","","","Returns mutable reference to the inner challenge instance.","","","","","","Parse the authentication credentials from the actix’ …","","Convert the config instance into a HTTP challenge.","Creates new authentication error from the provided …","","Returns mutable reference to the inner status code.","","","","","","Attach Error
to the current Authentication error.","Attach error description to the current Authentication …","Attach error URI to the current Authentication error.","Extractor for HTTP Basic auth.","BasicAuth
extractor configuration, used for …","","","","","","","","","","","","","","","","","","","","Returns client’s password.","Set challenge realm
attribute.","","","","","","","","","Returns client’s user-ID.","","","Extractor for HTTP Bearer auth","BearerAuth extractor configuration.","Bearer authorization error types, described in RFC 6750","The request requires higher privileges than provided by …","The request is missing a required parameter, includes an …","The access token provided is expired, revoked, malformed, …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Set challenge realm
attribute.","Set challenge scope
attribute.","Returns HTTP status code suitable for current error type.","","","","","Returns bearer token provided by client.","","","","","","","","","","","","","Authorization
header and various auth schemes","WWW-Authenticate
header and various auth challenges","Authorization
header, defined in RFC 7235","Malformed base64 string","Credentials for Basic
authentication scheme, defined in …","Credentials for Bearer
authentication scheme, defined in …","Header value is malformed","Required authentication field is missing","Authentication scheme is missing","Possible errors while parsing Authorization
header.","Authentication scheme for Authorization
header.","Unable to convert header into the str","Malformed UTF-8 string","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Consumes Authorization
header and returns inner Scheme
…","","","","","Creates Basic
credentials with provided user_id
and …","Creates new Bearer
credentials with the token provided.","Try to parse the authentication scheme from the …","","","","","","","Returns client’s password if provided.","","","","","","","","","Gets reference to the credentials token.","","","","","","","","","","","","","","","","","Returns client’s user-ID.","","","","","","","","","","Authentication challenge for WWW-Authenticate
header.","WWW-Authenticate
header, described in RFC 7235","Challenge for the “Basic” HTTP Authentication Scheme","Challenge for the “Bearer” HTTP Authentication Scheme","","","","","","","","","","","","","","","","","","Converts the challenge into a bytes suitable for HTTP …","","","","","","","","Challenge for WWW-Authenticate
header with HTTP Basic auth …","","","","","","","","","","","","","","","","Creates new Basic
challenge with an empty realm
field.","","","","","","","","","Creates new Basic
challenge from the provided realm
field …","Challenge for WWW-Authenticate
header with HTTP Bearer …","Builder for the Bearer
challenge.","Bearer authorization error types, described in RFC 6750","The request requires higher privileges than provided by …","The request is missing a required parameter, includes an …","The access token provided is expired, revoked, malformed, …","","","","","Creates the builder for Bearer
challenge.","","","","","","","","Provides the error
attribute, as defined in RFC6750, …","Provides the error_description
attribute, as defined in …","Provides the error_uri
attribute, as defined in RFC6750, …","Consumes the builder and returns built Bearer
instance.","","","","","","","","","","","","Provides the realm
attribute, as defined in RFC2617","Provides the scope
attribute, as defined in RFC6749, …","","","","","","","","","","","","Middleware for checking HTTP authentication.","Construct HttpAuthentication
middleware for the HTTP “…","Construct HttpAuthentication
middleware for the HTTP “…","","","","","","","","","","","","","","Construct HttpAuthentication
middleware with the provided …"],"i":[0,0,0,0,0,0,1,1,2,0,0,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,3,3,3,0,0,4,4,5,4,5,4,5,4,5,4,4,5,4,5,5,5,4,5,4,5,4,4,5,4,5,4,5,4,5,5,4,5,0,0,0,6,6,6,7,7,8,6,7,8,6,7,8,6,7,8,6,6,7,6,6,7,8,6,6,7,8,6,8,8,6,6,7,8,6,7,6,7,7,6,7,8,6,6,8,7,8,6,7,8,6,7,8,6,7,8,6,0,0,0,9,0,0,9,9,9,0,0,9,9,10,10,9,10,11,12,9,10,11,12,10,11,12,10,11,12,10,11,12,10,10,11,12,10,11,12,9,9,10,10,11,11,12,12,9,9,9,9,10,10,10,11,12,10,10,9,10,11,12,10,10,10,11,12,11,12,13,10,11,12,10,11,12,11,9,10,11,12,9,10,11,12,12,9,10,11,12,9,10,11,12,10,10,11,12,9,10,11,12,11,9,10,11,12,14,15,16,17,18,0,0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,18,18,18,18,18,18,18,0,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,0,0,0,6,6,6,21,22,21,22,22,22,22,22,21,22,22,22,21,21,21,21,21,22,22,21,22,22,22,21,22,22,22,21,21,22,22,21,22,21,22,22,21,22,21,22,0,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23],"f":[null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[],["httpresponse",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["servicerequest",3]]],[[]],[[]],[[],["authenticationerror",3]],[[],["statuscode",3]],[[],["statuscode",3]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[["error",4]]],[[]],[[]],null,null,[[],["challenge",3]],[[]],[[]],[[]],[[]],[[],["config",3]],[[],["basicauth",3]],[[]],[[]],[[],["config",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[["httprequest",3],["payload",4]]],[[["servicerequest",3]]],[[]],[[]],[[]],[[],[["cow",4],["option",4,["cow"]]]],[[],["config",3]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["cow",4]],[[]],[[]],null,null,null,null,null,null,[[],["bearer",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["config",3]],[[],["bearerauth",3]],[[],["error",4]],[[]],[[]],[[]],[[["error",4]],["ordering",4]],[[],["config",3]],[[["error",4]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[["httprequest",3],["payload",4]]],[[["servicerequest",3]]],[[],["u64",15]],[[]],[[]],[[]],[[]],[[]],[[["error",4]],[["ordering",4],["option",4,["ordering"]]]],[[["into",8,["cow"]],["cow",4,["str"]]],["config",3]],[[["into",8,["cow"]],["cow",4,["str"]]],["config",3]],[[],["statuscode",3]],[[]],[[]],[[]],[[],["string",3]],[[],["str",15]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["authorization",3]],[[],["basic",3]],[[],["bearer",3]],[[]],[[]],[[]],[[["authorization",3]],["ordering",4]],[[["basic",3]],["ordering",4]],[[["bearer",3]],["ordering",4]],[[],["authorization",3]],[[["authorization",3]],["bool",15]],[[["basic",3]],["bool",15]],[[["bearer",3]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["decodeerror",4]]],[[]],[[["tostrerror",3]]],[[["utf8error",3]]],[[["never",15]]],[[]],[[],["authorization",3]],[[]],[[]],[[],["u64",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["headername",3]],[[["authorization",3]],["bool",15]],[[["basic",3]],["bool",15]],[[["bearer",3]],["bool",15]],[[["option",4]],["basic",3]],[[],["bearer",3]],[[["headervalue",3]],[["result",4,["parseerror"]],["parseerror",4]]],[[],[["parseerror",4],["result",4,["parseerror"]]]],[[["headervalue",3]],[["result",4,["parseerror"]],["parseerror",4]]],[[["headervalue",3]],[["result",4,["parseerror"]],["parseerror",4]]],[[["authorization",3]],[["ordering",4],["option",4,["ordering"]]]],[[["basic",3]],[["ordering",4],["option",4,["ordering"]]]],[[["bearer",3]],[["ordering",4],["option",4,["ordering"]]]],[[],[["cow",4],["option",4,["cow"]]]],[[],[["option",4,["error"]],["error",8]]],[[]],[[]],[[]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["string",3]],[[],["cow",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],[["headervalue",3],["result",4,["headervalue"]]]],[[],[["headervalue",3],["result",4,["headervalue"]]]],[[],[["result",4,["headervalue"]],["headervalue",3]]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["cow",4]],[[]],[[]],[[]],[[]],null,null,null,null,null,null,null,null,null,[[]],[[]],[[],["wwwauthenticate",3]],[[]],[[["wwwauthenticate",3]],["ordering",4]],[[],["wwwauthenticate",3]],[[["wwwauthenticate",3]],["bool",15]],[[],["bool",15]],[[["formatter",3]],["result",6]],[[]],[[],["u64",15]],[[]],[[]],[[],["headername",3]],[[["wwwauthenticate",3]],["bool",15]],[[],[["parseerror",4],["result",4,["parseerror"]]]],[[["wwwauthenticate",3]],[["ordering",4],["option",4,["ordering"]]]],[[],["bytes",3]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],[["headervalue",3],["result",4,["headervalue"]]]],[[],["typeid",3]],[[]],null,[[]],[[]],[[],["basic",3]],[[]],[[["basic",3]],["ordering",4]],[[],["basic",3]],[[["basic",3]],["bool",15]],[[],["bool",15]],[[["formatter",3]],[["error",3],["result",4,["error"]]]],[[["formatter",3]],["result",6]],[[]],[[],["u64",15]],[[]],[[]],[[["basic",3]],["bool",15]],[[],["basic",3]],[[["basic",3]],[["ordering",4],["option",4,["ordering"]]]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],[["result",4,["headervalue"]],["headervalue",3]]],[[],["typeid",3]],[[]],[[],["basic",3]],null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[],["bearerbuilder",3]],[[],["bearer",3]],[[]],[[["bearer",3]],["ordering",4]],[[],["bearerbuilder",3]],[[],["bearer",3]],[[["bearer",3]],["bool",15]],[[],["bool",15]],[[["error",4]]],[[]],[[]],[[],["bearer",3]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],[["error",3],["result",4,["error"]]]],[[]],[[]],[[],["u64",15]],[[]],[[]],[[]],[[["bearer",3]],["bool",15]],[[["bearer",3]],[["ordering",4],["option",4,["ordering"]]]],[[]],[[]],[[]],[[],["string",3]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],[["result",4,["headervalue"]],["headervalue",3]]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],null,[[]],[[]],[[]],[[]],[[],["httpauthentication",3]],[[]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[]],[[],["httpauthentication",3]]],"p":[[8,"AuthExtractor"],[8,"AuthExtractorConfig"],[3,"AuthenticationError"],[3,"Config"],[3,"BasicAuth"],[4,"Error"],[3,"Config"],[3,"BearerAuth"],[4,"ParseError"],[3,"Authorization"],[3,"Basic"],[3,"Bearer"],[8,"Scheme"],[13,"MissingField"],[13,"ToStrError"],[13,"Base64DecodeError"],[13,"Utf8Error"],[3,"WwwAuthenticate"],[8,"Challenge"],[3,"Basic"],[3,"BearerBuilder"],[3,"Bearer"],[3,"HttpAuthentication"]]}\
}');
if (window.initSearch) {window.initSearch(searchIndex)};
\ No newline at end of file
diff --git a/src/actix_cors/all_or_some.rs.html b/src/actix_cors/all_or_some.rs.html
index 4f29fd001..1cfbcd459 100644
--- a/src/actix_cors/all_or_some.rs.html
+++ b/src/actix_cors/all_or_some.rs.html
@@ -65,36 +65,36 @@
impl<T> Default for AllOrSome<T> {
- fn default() -> Self {
+ fn default() -> Self {
AllOrSome::All
}
}
impl<T> AllOrSome<T> {
- pub fn is_all(&self) -> bool {
+ pub fn is_all(&self) -> bool {
matches!(self, AllOrSome::All)
}
#[allow(dead_code)]
- pub fn is_some(&self) -> bool {
+ pub fn is_some(&self) -> bool {
!self.is_all()
}
- pub fn as_ref(&self) -> Option<&T> {
+ pub fn as_ref(&self) -> Option<&T> {
match *self {
- AllOrSome::All => None,
- AllOrSome::Some(ref t) => Some(t),
+ AllOrSome::All => None,
+ AllOrSome::Some(ref t) => Some(t),
}
}
- pub fn as_mut(&mut self) -> Option<&mut T> {
+ pub fn as_mut(&mut self) -> Option<&mut T> {
match *self {
- AllOrSome::All => None,
- AllOrSome::Some(ref mut t) => Some(t),
+ AllOrSome::All => None,
+ AllOrSome::Some(ref mut t) => Some(t),
}
}
}
diff --git a/src/actix_cors/builder.rs.html b/src/actix_cors/builder.rs.html
index beed8b217..049007e79 100644
--- a/src/actix_cors/builder.rs.html
+++ b/src/actix_cors/builder.rs.html
@@ -617,9 +617,45 @@
617
618
619
-use std::{collections::HashSet, convert::TryInto, iter::FromIterator, rc::Rc};
+620
+621
+622
+623
+624
+625
+626
+627
+628
+629
+630
+631
+632
+633
+634
+635
+636
+637
+638
+639
+640
+641
+642
+643
+644
+645
+646
+647
+648
+649
+650
+651
+652
+
use std::{
+ collections::HashSet, convert::TryInto, error::Error as StdError, iter::FromIterator, rc::Rc,
+};
use actix_web::{
+ body::MessageBody,
dev::{RequestHead, Service, ServiceRequest, ServiceResponse, Transform},
error::{Error, Result},
http::{self, header::HeaderName, Error as HttpError, HeaderValue, Method, Uri},
@@ -637,7 +673,7 @@
fn cors<'a>(
inner: &'a mut Rc<Inner>,
err: &Option<Either<http::Error, CorsError>>,
-) -> Option<&'a mut Inner> {
+) -> Option<&'a mut Inner> {
if err.is_some() {
return None;
}
@@ -698,7 +734,7 @@
- pub fn permissive() -> Self {
+ pub fn permissive() -> Self {
let inner = Inner {
allowed_origins: AllOrSome::All,
allowed_origins_fns: smallvec![],
@@ -727,7 +763,7 @@
- pub fn allow_any_origin(mut self) -> Cors {
+ pub fn allow_any_origin(mut self) -> Cors {
if let Some(cors) = cors(&mut self.inner, &self.error) {
cors.allowed_origins = AllOrSome::All;
}
@@ -759,15 +795,15 @@
- pub fn allowed_origin(mut self, origin: &str) -> Cors {
+ pub fn allowed_origin(mut self, origin: &str) -> Cors {
if let Some(cors) = cors(&mut self.inner, &self.error) {
match TryInto::<Uri>::try_into(origin) {
- Ok(_) if origin == "*" => {
+ Ok(_) if origin == "*" => {
error!("Wildcard in `allowed_origin` is not allowed. Use `send_wildcard`.");
self.error = Some(Either::Right(CorsError::WildcardOrigin));
}
- Ok(_) => {
+ Ok(_) => {
if cors.allowed_origins.is_all() {
cors.allowed_origins = AllOrSome::Some(HashSet::with_capacity(8));
}
@@ -779,7 +815,7 @@
}
}
- Err(err) => {
+ Err(err) => {
self.error = Some(Either::Left(err.into()));
}
}
@@ -796,9 +832,9 @@
- pub fn allowed_origin_fn<F>(mut self, f: F) -> Cors
+ pub fn allowed_origin_fn<F>(mut self, f: F) -> Cors
where
- F: (Fn(&HeaderValue, &RequestHead) -> bool) + 'static,
+ F: (Fn(&HeaderValue, &RequestHead) -> bool) + 'static,
{
if let Some(cors) = cors(&mut self.inner, &self.error) {
cors.allowed_origins_fns.push(OriginFn {
@@ -812,7 +848,7 @@
- pub fn allow_any_method(mut self) -> Cors {
+ pub fn allow_any_method(mut self) -> Cors {
if let Some(cors) = cors(&mut self.inner, &self.error) {
cors.allowed_methods = ALL_METHODS_SET.clone();
}
@@ -828,7 +864,7 @@
- pub fn allowed_methods<U, M>(mut self, methods: U) -> Cors
+ pub fn allowed_methods<U, M>(mut self, methods: U) -> Cors
where
U: IntoIterator<Item = M>,
M: TryInto<Method>,
@@ -837,11 +873,11 @@
if let Some(cors) = cors(&mut self.inner, &self.error) {
for m in methods {
match m.try_into() {
- Ok(method) => {
+ Ok(method) => {
cors.allowed_methods.insert(method);
}
- Err(err) => {
+ Err(err) => {
self.error = Some(Either::Left(err.into()));
break;
}
@@ -855,7 +891,7 @@
- pub fn allow_any_header(mut self) -> Cors {
+ pub fn allow_any_header(mut self) -> Cors {
if let Some(cors) = cors(&mut self.inner, &self.error) {
cors.allowed_headers = AllOrSome::All;
}
@@ -866,14 +902,14 @@
- pub fn allowed_header<H>(mut self, header: H) -> Cors
+ pub fn allowed_header<H>(mut self, header: H) -> Cors
where
H: TryInto<HeaderName>,
<H as TryInto<HeaderName>>::Error: Into<HttpError>,
{
if let Some(cors) = cors(&mut self.inner, &self.error) {
match header.try_into() {
- Ok(method) => {
+ Ok(method) => {
if cors.allowed_headers.is_all() {
cors.allowed_headers = AllOrSome::Some(HashSet::with_capacity(8));
}
@@ -883,7 +919,7 @@
}
}
- Err(err) => self.error = Some(Either::Left(err.into())),
+ Err(err) => self.error = Some(Either::Left(err.into())),
}
}
@@ -900,7 +936,7 @@
- pub fn allowed_headers<U, H>(mut self, headers: U) -> Cors
+ pub fn allowed_headers<U, H>(mut self, headers: U) -> Cors
where
U: IntoIterator<Item = H>,
H: TryInto<HeaderName>,
@@ -909,7 +945,7 @@
if let Some(cors) = cors(&mut self.inner, &self.error) {
for h in headers {
match h.try_into() {
- Ok(method) => {
+ Ok(method) => {
if cors.allowed_headers.is_all() {
cors.allowed_headers = AllOrSome::Some(HashSet::with_capacity(8));
}
@@ -918,7 +954,7 @@
headers.insert(method);
}
}
- Err(err) => {
+ Err(err) => {
self.error = Some(Either::Left(err.into()));
break;
}
@@ -932,7 +968,7 @@
- pub fn expose_any_header(mut self) -> Cors {
+ pub fn expose_any_header(mut self) -> Cors {
if let Some(cors) = cors(&mut self.inner, &self.error) {
cors.expose_headers = AllOrSome::All;
}
@@ -947,7 +983,7 @@
- pub fn expose_headers<U, H>(mut self, headers: U) -> Cors
+ pub fn expose_headers<U, H>(mut self, headers: U) -> Cors
where
U: IntoIterator<Item = H>,
H: TryInto<HeaderName>,
@@ -955,7 +991,7 @@
{
for h in headers {
match h.try_into() {
- Ok(header) => {
+ Ok(header) => {
if let Some(cors) = cors(&mut self.inner, &self.error) {
if cors.expose_headers.is_all() {
cors.expose_headers = AllOrSome::Some(HashSet::with_capacity(8));
@@ -965,7 +1001,7 @@
}
}
}
- Err(err) => {
+ Err(err) => {
self.error = Some(Either::Left(err.into()));
break;
}
@@ -982,7 +1018,7 @@
- pub fn max_age(mut self, max_age: impl Into<Option<usize>>) -> Cors {
+ pub fn max_age(mut self, max_age: impl Into<Option<usize>>) -> Cors {
if let Some(cors) = cors(&mut self.inner, &self.error) {
cors.max_age = max_age.into()
}
@@ -1001,7 +1037,7 @@
- pub fn send_wildcard(mut self) -> Cors {
+ pub fn send_wildcard(mut self) -> Cors {
if let Some(cors) = cors(&mut self.inner, &self.error) {
cors.send_wildcard = true
}
@@ -1024,7 +1060,7 @@
- pub fn supports_credentials(mut self) -> Cors {
+ pub fn supports_credentials(mut self) -> Cors {
if let Some(cors) = cors(&mut self.inner, &self.error) {
cors.supports_credentials = true
}
@@ -1042,7 +1078,7 @@
- pub fn disable_vary_header(mut self) -> Cors {
+ pub fn disable_vary_header(mut self) -> Cors {
if let Some(cors) = cors(&mut self.inner, &self.error) {
cors.vary_header = false
}
@@ -1056,7 +1092,7 @@
- pub fn disable_preflight(mut self) -> Cors {
+ pub fn disable_preflight(mut self) -> Cors {
if let Some(cors) = cors(&mut self.inner, &self.error) {
cors.preflight = false
}
@@ -1070,7 +1106,7 @@
- fn default() -> Cors {
+ fn default() -> Cors {
let inner = Inner {
allowed_origins: AllOrSome::Some(HashSet::with_capacity(8)),
allowed_origins_fns: smallvec![],
@@ -1098,10 +1134,12 @@
}
}
-impl<S> Transform<S, ServiceRequest> for Cors
+impl<S, B> Transform<S, ServiceRequest> for Cors
where
- S: Service<ServiceRequest, Response = ServiceResponse, Error = Error>,
+ S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error>,
S::Future: 'static,
+ B: MessageBody + 'static,
+ B::Error: StdError,
{
type Response = ServiceResponse;
type Error = Error;
@@ -1109,11 +1147,11 @@
type Transform = CorsMiddleware<S>;
type Future = Ready<Result<Self::Transform, Self::InitError>>;
- fn new_transform(&self, service: S) -> Self::Future {
+ fn new_transform(&self, service: S) -> Self::Future {
if let Some(ref err) = self.error {
match err {
- Either::Left(err) => error!("{}", err),
- Either::Right(err) => error!("{}", err),
+ Either::Left(err) => error!("{}", err),
+ Either::Right(err) => error!("{}", err),
}
return future::err(());
@@ -1131,11 +1169,11 @@
match inner.allowed_headers.as_ref() {
- Some(header_set) if !header_set.is_empty() => {
+ Some(header_set) if !header_set.is_empty() => {
let allowed_headers_str = intersperse_header_values(header_set);
Rc::make_mut(&mut inner).allowed_headers_baked = Some(allowed_headers_str);
}
- _ => {}
+ _ => {}
}
@@ -1146,11 +1184,11 @@
match inner.expose_headers.as_ref() {
- Some(header_set) if !header_set.is_empty() => {
+ Some(header_set) if !header_set.is_empty() => {
let expose_headers_str = intersperse_header_values(header_set);
Rc::make_mut(&mut inner).expose_headers_baked = Some(expose_headers_str);
}
- _ => {}
+ _ => {}
}
future::ok(CorsMiddleware { service, inner })
@@ -1158,7 +1196,7 @@
}
-fn intersperse_header_values<T>(val_set: &HashSet<T>) -> HeaderValue
+fn intersperse_header_values<T>(val_set: &HashSet<T>) -> HeaderValue
where
T: AsRef<str>,
{
@@ -1179,11 +1217,15 @@
#[cfg(test)]
mod test {
use std::convert::{Infallible, TryInto};
+ use std::pin::Pin;
+ use std::task::{Context, Poll};
use actix_web::{
- dev::Transform,
+ body::{BodySize, MessageBody},
+ dev::{fn_service, Transform},
http::{HeaderName, StatusCode},
test::{self, TestRequest},
+ web::{Bytes, HttpResponse},
};
use super::*;
@@ -1228,13 +1270,37 @@
impl TryInto<HeaderName> for ContentType {
type Error = Infallible;
- fn try_into(self) -> Result<HeaderName, Self::Error> {
+ fn try_into(self) -> Result<HeaderName, Self::Error> {
Ok(HeaderName::from_static("content-type"))
}
}
let _cors = Cors::default().allowed_header(ContentType);
}
+
+ #[actix_rt::test]
+ async fn middleware_generic_over_body_type() {
+ struct Foo;
+
+ impl MessageBody for Foo {
+ type Error = std::io::Error;
+ fn size(&self) -> BodySize {
+ BodySize::None
+ }
+ fn poll_next(
+ self: Pin<&mut Self>,
+ _: &mut Context<'_>,
+ ) -> Poll<Option<Result<Bytes, Self::Error>>> {
+ Poll::Ready(None)
+ }
+ }
+
+ let srv = fn_service(|req: ServiceRequest| async move {
+ Ok(req.into_response(HttpResponse::Ok().message_body(Foo)?))
+ });
+
+ Cors::default().new_transform(srv).await.unwrap();
+ }
}
diff --git a/src/actix_cors/error.rs.html b/src/actix_cors/error.rs.html
index 21806ced2..04977bca0 100644
--- a/src/actix_cors/error.rs.html
+++ b/src/actix_cors/error.rs.html
@@ -90,11 +90,11 @@
}
impl ResponseError for CorsError {
- fn status_code(&self) -> StatusCode {
+ fn status_code(&self) -> StatusCode {
StatusCode::BAD_REQUEST
}
- fn error_response(&self) -> HttpResponse {
+ fn error_response(&self) -> HttpResponse {
HttpResponse::with_body(StatusCode::BAD_REQUEST, self.to_string().into())
}
}
diff --git a/src/actix_cors/inner.rs.html b/src/actix_cors/inner.rs.html
index b6769278e..e6d2ca476 100644
--- a/src/actix_cors/inner.rs.html
+++ b/src/actix_cors/inner.rs.html
@@ -342,25 +342,25 @@
#[derive(Clone)]
pub(crate) struct OriginFn {
- pub(crate) boxed_fn: Rc<dyn Fn(&HeaderValue, &RequestHead) -> bool>,
+ pub(crate) boxed_fn: Rc<dyn Fn(&HeaderValue, &RequestHead) -> bool>,
}
impl Default for OriginFn {
- fn default() -> Self {
- let boxed_fn: Rc<dyn Fn(&_, &_) -> _> = Rc::new(|_origin, _req_head| false);
+ fn default() -> Self {
+ let boxed_fn: Rc<dyn Fn(&_, &_) -> _> = Rc::new(|_origin, _req_head| false);
Self { boxed_fn }
}
}
impl fmt::Debug for OriginFn {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str("origin_fn")
}
}
-fn header_value_try_into_method(hdr: &HeaderValue) -> Option<Method> {
+fn header_value_try_into_method(hdr: &HeaderValue) -> Option<Method> {
hdr.to_str()
.ok()
.and_then(|meth| Method::try_from(meth).ok())
@@ -391,20 +391,20 @@
static EMPTY_ORIGIN_SET: Lazy<HashSet<HeaderValue>> = Lazy::new(HashSet::new);
impl Inner {
- pub(crate) fn validate_origin(&self, req: &RequestHead) -> Result<(), CorsError> {
+ pub(crate) fn validate_origin(&self, req: &RequestHead) -> Result<(), CorsError> {
#[allow(clippy::mutable_key_type)]
let allowed_origins = match &self.allowed_origins {
- AllOrSome::All if self.allowed_origins_fns.is_empty() => return Ok(()),
- AllOrSome::Some(allowed_origins) => allowed_origins,
+ AllOrSome::All if self.allowed_origins_fns.is_empty() => return Ok(()),
+ AllOrSome::Some(allowed_origins) => allowed_origins,
- _ => &EMPTY_ORIGIN_SET,
+ _ => &EMPTY_ORIGIN_SET,
};
match req.headers().get(header::ORIGIN) {
- Some(origin) => {
+ Some(origin) => {
if allowed_origins.contains(origin) || self.validate_origin_fns(origin, req) {
Ok(())
} else {
@@ -415,23 +415,23 @@
- None => Err(CorsError::MissingOrigin),
+ None => Err(CorsError::MissingOrigin),
}
}
- fn validate_origin_fns(&self, origin: &HeaderValue, req: &RequestHead) -> bool {
+ fn validate_origin_fns(&self, origin: &HeaderValue, req: &RequestHead) -> bool {
self.allowed_origins_fns
.iter()
.any(|origin_fn| (origin_fn.boxed_fn)(origin, req))
}
- pub(crate) fn access_control_allow_origin(&self, req: &RequestHead) -> Option<HeaderValue> {
+ pub(crate) fn access_control_allow_origin(&self, req: &RequestHead) -> Option<HeaderValue> {
let origin = req.headers().get(header::ORIGIN);
match self.allowed_origins {
- AllOrSome::All => {
+ AllOrSome::All => {
if self.send_wildcard {
Some(HeaderValue::from_static("*"))
} else {
@@ -440,7 +440,7 @@
}
}
- AllOrSome::Some(_) => {
+ AllOrSome::Some(_) => {
@@ -451,7 +451,7 @@
- pub(crate) fn validate_allowed_method(&self, req: &RequestHead) -> Result<(), CorsError> {
+ pub(crate) fn validate_allowed_method(&self, req: &RequestHead) -> Result<(), CorsError> {
let request_method = req
.headers()
@@ -460,25 +460,25 @@
match request_method {
- Some(Some(method)) if self.allowed_methods.contains(&method) => Ok(()),
+ Some(Some(method)) if self.allowed_methods.contains(&method) => Ok(()),
- Some(Some(_)) => Err(CorsError::MethodNotAllowed),
+ Some(Some(_)) => Err(CorsError::MethodNotAllowed),
- Some(_) => Err(CorsError::BadRequestMethod),
+ Some(_) => Err(CorsError::BadRequestMethod),
- None => Err(CorsError::MissingRequestMethod),
+ None => Err(CorsError::MissingRequestMethod),
}
}
- pub(crate) fn validate_allowed_headers(&self, req: &RequestHead) -> Result<(), CorsError> {
+ pub(crate) fn validate_allowed_headers(&self, req: &RequestHead) -> Result<(), CorsError> {
#[allow(clippy::mutable_key_type)]
let allowed_headers = match &self.allowed_headers {
- AllOrSome::All => return Ok(()),
- AllOrSome::Some(allowed_headers) => allowed_headers,
+ AllOrSome::All => return Ok(()),
+ AllOrSome::Some(allowed_headers) => allowed_headers,
};
@@ -490,7 +490,7 @@
match request_headers {
- Some(Ok(headers)) => {
+ Some(Ok(headers)) => {
#[allow(clippy::mutable_key_type)]
@@ -499,8 +499,8 @@
for hdr in headers.split(',') {
match hdr.trim().try_into() {
- Ok(hdr) => request_headers.insert(hdr),
- Err(_) => return Err(CorsError::BadRequestHeaders),
+ Ok(hdr) => request_headers.insert(hdr),
+ Err(_) => return Err(CorsError::BadRequestHeaders),
};
}
@@ -518,10 +518,10 @@
}
- Some(Err(_)) => Err(CorsError::BadRequestHeaders),
+ Some(Err(_)) => Err(CorsError::BadRequestHeaders),
- None => Ok(()),
+ None => Ok(()),
}
}
}
@@ -538,7 +538,7 @@
use crate::Cors;
- fn val_as_str(val: &HeaderValue) -> &str {
+ fn val_as_str(val: &HeaderValue) -> &str {
val.to_str().unwrap()
}
diff --git a/src/actix_cors/middleware.rs.html b/src/actix_cors/middleware.rs.html
index 6330e1594..2613a0811 100644
--- a/src/actix_cors/middleware.rs.html
+++ b/src/actix_cors/middleware.rs.html
@@ -241,7 +241,7 @@
}
impl<S> CorsMiddleware<S> {
- fn handle_preflight(inner: &Inner, req: ServiceRequest) -> ServiceResponse {
+ fn handle_preflight(inner: &Inner, req: ServiceRequest) -> ServiceResponse {
if let Err(err) = inner
.validate_origin(req.head())
.and_then(|_| inner.validate_allowed_method(req.head()))
@@ -285,7 +285,7 @@
req.into_response(res)
}
- fn augment_response<B>(inner: &Inner, mut res: ServiceResponse<B>) -> ServiceResponse<B> {
+ fn augment_response<B>(inner: &Inner, mut res: ServiceResponse<B>) -> ServiceResponse<B> {
if let Some(origin) = inner.access_control_allow_origin(res.request().head()) {
res.headers_mut()
.insert(header::ACCESS_CONTROL_ALLOW_ORIGIN, origin);
@@ -305,13 +305,13 @@
if inner.vary_header {
let value = match res.headers_mut().get(header::VARY) {
- Some(hdr) => {
+ Some(hdr) => {
let mut val: Vec<u8> = Vec::with_capacity(hdr.len() + 8);
val.extend(hdr.as_bytes());
val.extend(b", Origin");
val.try_into().unwrap()
}
- None => HeaderValue::from_static("Origin"),
+ None => HeaderValue::from_static("Origin"),
};
res.headers_mut().insert(header::VARY, value);
@@ -339,8 +339,8 @@
actix_service::forward_ready!(service);
- fn call(&self, req: ServiceRequest) -> Self::Future {
- if self.inner.preflight && req.method() == Method::OPTIONS {
+ fn call(&self, req: ServiceRequest) -> Self::Future {
+ if self.inner.preflight && req.method() == Method::OPTIONS {
let inner = Rc::clone(&self.inner);
let res = Self::handle_preflight(&inner, req);
Either::Left(ok(res))
diff --git a/src/actix_identity/cookie.rs.html b/src/actix_identity/cookie.rs.html
index 010fba3ad..cf9996441 100644
--- a/src/actix_identity/cookie.rs.html
+++ b/src/actix_identity/cookie.rs.html
@@ -867,7 +867,7 @@
}
impl CookieIdentityInner {
- fn new(key: &[u8]) -> CookieIdentityInner {
+ fn new(key: &[u8]) -> CookieIdentityInner {
let key_v2: Vec<u8> = [key, &[1, 0, 0, 0]].concat();
CookieIdentityInner {
@@ -889,7 +889,7 @@
&self,
resp: &mut ServiceResponse<B>,
value: Option<CookieValue>,
- ) -> Result<()> {
+ ) -> Result<()> {
let add_cookie = value.is_some();
let val = value
.map(|val| {
@@ -945,7 +945,7 @@
Ok(())
}
- fn load(&self, req: &ServiceRequest) -> Option<CookieValue> {
+ fn load(&self, req: &ServiceRequest) -> Option<CookieValue> {
let cookie = req.cookie(&self.name)?;
let mut jar = CookieJar::new();
jar.add_original(cookie.clone());
@@ -969,7 +969,7 @@
})
}
- fn parse(&self, cookie: Cookie<'_>) -> Option<CookieValue> {
+ fn parse(&self, cookie: Cookie<'_>) -> Option<CookieValue> {
let value: CookieValue = serde_json::from_str(cookie.value()).ok()?;
let now = SystemTime::now();
@@ -992,15 +992,15 @@
Some(value)
}
- fn legacy_supported(&self) -> bool {
+ fn legacy_supported(&self) -> bool {
self.visit_deadline.is_none() && self.login_deadline.is_none()
}
- fn always_update_cookie(&self) -> bool {
+ fn always_update_cookie(&self) -> bool {
self.visit_deadline.is_some()
}
- fn requires_oob_data(&self) -> bool {
+ fn requires_oob_data(&self) -> bool {
self.login_deadline.is_some()
}
}
@@ -1037,49 +1037,49 @@
- pub fn new(key: &[u8]) -> CookieIdentityPolicy {
+ pub fn new(key: &[u8]) -> CookieIdentityPolicy {
CookieIdentityPolicy(Rc::new(CookieIdentityInner::new(key)))
}
- pub fn name(mut self, value: impl Into<String>) -> CookieIdentityPolicy {
+ pub fn name(mut self, value: impl Into<String>) -> CookieIdentityPolicy {
self.inner_mut().name = value.into();
self
}
- pub fn path(mut self, value: impl Into<String>) -> CookieIdentityPolicy {
+ pub fn path(mut self, value: impl Into<String>) -> CookieIdentityPolicy {
self.inner_mut().path = value.into();
self
}
- pub fn domain(mut self, value: impl Into<String>) -> CookieIdentityPolicy {
+ pub fn domain(mut self, value: impl Into<String>) -> CookieIdentityPolicy {
self.inner_mut().domain = Some(value.into());
self
}
- pub fn secure(mut self, value: bool) -> CookieIdentityPolicy {
+ pub fn secure(mut self, value: bool) -> CookieIdentityPolicy {
self.inner_mut().secure = value;
self
}
- pub fn max_age(mut self, value: Duration) -> CookieIdentityPolicy {
+ pub fn max_age(mut self, value: Duration) -> CookieIdentityPolicy {
self.inner_mut().max_age = Some(value);
self
}
- pub fn max_age_secs(self, seconds: i64) -> CookieIdentityPolicy {
+ pub fn max_age_secs(self, seconds: i64) -> CookieIdentityPolicy {
self.max_age(Duration::seconds(seconds))
}
- pub fn http_only(mut self, http_only: bool) -> Self {
+ pub fn http_only(mut self, http_only: bool) -> Self {
self.inner_mut().http_only = Some(http_only);
self
}
@@ -1087,7 +1087,7 @@
- pub fn same_site(mut self, same_site: SameSite) -> Self {
+ pub fn same_site(mut self, same_site: SameSite) -> Self {
self.inner_mut().same_site = Some(same_site);
self
}
@@ -1099,7 +1099,7 @@
- pub fn visit_deadline(mut self, deadline: Duration) -> CookieIdentityPolicy {
+ pub fn visit_deadline(mut self, deadline: Duration) -> CookieIdentityPolicy {
self.inner_mut().visit_deadline = Some(deadline);
self
}
@@ -1112,12 +1112,12 @@
- pub fn login_deadline(mut self, deadline: Duration) -> CookieIdentityPolicy {
+ pub fn login_deadline(mut self, deadline: Duration) -> CookieIdentityPolicy {
self.inner_mut().login_deadline = Some(deadline);
self
}
- fn inner_mut(&mut self) -> &mut CookieIdentityInner {
+ fn inner_mut(&mut self) -> &mut CookieIdentityInner {
Rc::get_mut(&mut self.0).unwrap()
}
}
@@ -1126,7 +1126,7 @@
type Future = Ready<Result<Option<String>, Error>>;
type ResponseFuture = Ready<Result<(), Error>>;
- fn from_request(&self, req: &mut ServiceRequest) -> Self::Future {
+ fn from_request(&self, req: &mut ServiceRequest) -> Self::Future {
ready(Ok(self.0.load(req).map(|value| {
let CookieValue {
identity,
@@ -1148,7 +1148,7 @@
id: Option<String>,
changed: bool,
res: &mut ServiceResponse<B>,
- ) -> Self::ResponseFuture {
+ ) -> Self::ResponseFuture {
let _ = if changed {
let login_timestamp = SystemTime::now();
@@ -1208,7 +1208,7 @@
identity: &'static str,
login_timestamp: Option<SystemTime>,
visit_timestamp: Option<SystemTime>,
- ) -> Cookie<'static> {
+ ) -> Cookie<'static> {
let mut jar = CookieJar::new();
let key: Vec<u8> = COOKIE_KEY_MASTER
.iter()
@@ -1259,18 +1259,18 @@
let t30sec_ago = now - Duration::seconds(30);
match login_timestamp {
- LoginTimestampCheck::NoTimestamp => assert_eq!(cv.login_timestamp, None),
- LoginTimestampCheck::NewTimestamp => assert!(
+ LoginTimestampCheck::NoTimestamp => assert_eq!(cv.login_timestamp, None),
+ LoginTimestampCheck::NewTimestamp => assert!(
t30sec_ago <= cv.login_timestamp.unwrap() && cv.login_timestamp.unwrap() <= now
),
- LoginTimestampCheck::OldTimestamp(old_timestamp) => {
+ LoginTimestampCheck::OldTimestamp(old_timestamp) => {
assert_eq!(cv.login_timestamp, Some(old_timestamp))
}
}
match visit_timestamp {
- VisitTimeStampCheck::NoTimestamp => assert_eq!(cv.visit_timestamp, None),
- VisitTimeStampCheck::NewTimestamp => assert!(
+ VisitTimeStampCheck::NoTimestamp => assert_eq!(cv.visit_timestamp, None),
+ VisitTimeStampCheck::NewTimestamp => assert!(
t30sec_ago <= cv.visit_timestamp.unwrap() && cv.visit_timestamp.unwrap() <= now
),
}
@@ -1392,7 +1392,7 @@
assert_eq!(SameSite::None, c.same_site().unwrap());
}
- fn legacy_login_cookie(identity: &'static str) -> Cookie<'static> {
+ fn legacy_login_cookie(identity: &'static str) -> Cookie<'static> {
let mut jar = CookieJar::new();
jar.private_mut(&Key::derive_from(&COOKIE_KEY_MASTER))
.add(Cookie::new(COOKIE_NAME, identity));
diff --git a/src/actix_identity/identity.rs.html b/src/actix_identity/identity.rs.html
index 28926a9ad..98bae8601 100644
--- a/src/actix_identity/identity.rs.html
+++ b/src/actix_identity/identity.rs.html
@@ -148,7 +148,7 @@
impl Identity {
- pub fn identity(&self) -> Option<String> {
+ pub fn identity(&self) -> Option<String> {
Identity::get_identity(&self.0.extensions())
}
@@ -168,7 +168,7 @@
}
}
- pub(crate) fn get_identity(extensions: &Extensions) -> Option<String> {
+ pub(crate) fn get_identity(extensions: &Extensions) -> Option<String> {
let id = extensions.get::<IdentityItem>()?;
id.id.clone()
}
@@ -196,7 +196,7 @@
type Future = Ready<Result<Identity, Error>>;
#[inline]
- fn from_request(req: &HttpRequest, _: &mut Payload) -> Self::Future {
+ fn from_request(req: &HttpRequest, _: &mut Payload) -> Self::Future {
ready(Ok(Identity(req.clone())))
}
}
diff --git a/src/actix_identity/lib.rs.html b/src/actix_identity/lib.rs.html
index 9116ad1e2..a8428275a 100644
--- a/src/actix_identity/lib.rs.html
+++ b/src/actix_identity/lib.rs.html
@@ -222,7 +222,7 @@
type ResponseFuture: Future<Output = Result<(), Error>>;
- fn from_request(&self, req: &mut ServiceRequest) -> Self::Future;
+ fn from_request(&self, req: &mut ServiceRequest) -> Self::Future;
fn to_response<B>(
@@ -230,7 +230,7 @@
identity: Option<String>,
changed: bool,
response: &mut ServiceResponse<B>,
- ) -> Self::ResponseFuture;
+ ) -> Self::ResponseFuture;
}
@@ -238,14 +238,14 @@
pub trait RequestIdentity {
- fn get_identity(&self) -> Option<String>;
+ fn get_identity(&self) -> Option<String>;
}
impl<T> RequestIdentity for T
where
T: HttpMessage,
{
- fn get_identity(&self) -> Option<String> {
+ fn get_identity(&self) -> Option<String> {
Identity::get_identity(&self.extensions())
}
}
@@ -276,10 +276,10 @@
}
pub(crate) async fn create_identity_server<
- F: Fn(CookieIdentityPolicy) -> CookieIdentityPolicy + Sync + Send + Clone + 'static,
+ F: Fn(CookieIdentityPolicy) -> CookieIdentityPolicy + Sync + Send + Clone + 'static,
>(
f: F,
- ) -> impl actix_service::Service<
+ ) -> impl actix_service::Service<
actix_http::Request,
Response = ServiceResponse<actix_web::body::Body>,
Error = Error,
diff --git a/src/actix_identity/middleware.rs.html b/src/actix_identity/middleware.rs.html
index 336901853..054323ffd 100644
--- a/src/actix_identity/middleware.rs.html
+++ b/src/actix_identity/middleware.rs.html
@@ -202,7 +202,7 @@
impl<T> IdentityService<T> {
- pub fn new(backend: T) -> Self {
+ pub fn new(backend: T) -> Self {
IdentityService {
backend: Rc::new(backend),
}
@@ -223,7 +223,7 @@
type Transform = IdentityServiceMiddleware<S, T>;
type Future = Ready<Result<Self::Transform, Self::InitError>>;
- fn new_transform(&self, service: S) -> Self::Future {
+ fn new_transform(&self, service: S) -> Self::Future {
ready(Ok(IdentityServiceMiddleware {
backend: self.backend.clone(),
service: Rc::new(service),
@@ -237,7 +237,7 @@
}
impl<S, T> Clone for IdentityServiceMiddleware<S, T> {
- fn clone(&self) -> Self {
+ fn clone(&self) -> Self {
Self {
backend: Rc::clone(&self.backend),
service: Rc::clone(&self.service),
@@ -259,14 +259,14 @@
actix_service::forward_ready!(service);
- fn call(&self, mut req: ServiceRequest) -> Self::Future {
+ fn call(&self, mut req: ServiceRequest) -> Self::Future {
let srv = Rc::clone(&self.service);
let backend = Rc::clone(&self.backend);
let fut = self.backend.from_request(&mut req);
async move {
match fut.await {
- Ok(id) => {
+ Ok(id) => {
req.extensions_mut()
.insert(IdentityItem { id, changed: false });
@@ -275,14 +275,14 @@
if let Some(id) = id {
match backend.to_response(id.id, id.changed, &mut res).await {
- Ok(_) => Ok(res.map_body(|_, body| AnyBody::from_message(body))),
- Err(e) => Ok(res.error_response(e)),
+ Ok(_) => Ok(res.map_body(|_, body| AnyBody::from_message(body))),
+ Err(e) => Ok(res.error_response(e)),
}
} else {
Ok(res.map_body(|_, body| AnyBody::from_message(body)))
}
}
- Err(err) => Ok(req.error_response(err)),
+ Err(err) => Ok(req.error_response(err)),
}
}
.map_ok(|res| res.map_body(|_, body| AnyBody::from_message(body)))
@@ -308,7 +308,7 @@
type Future = Ready<Result<Option<String>, Error>>;
type ResponseFuture = Ready<Result<(), Error>>;
- fn from_request(&self, _: &mut dev::ServiceRequest) -> Self::Future {
+ fn from_request(&self, _: &mut dev::ServiceRequest) -> Self::Future {
ok(Some("test".to_string()))
}
@@ -317,7 +317,7 @@
_: Option<String>,
_: bool,
_: &mut dev::ServiceResponse<B>,
- ) -> Self::ResponseFuture {
+ ) -> Self::ResponseFuture {
ok(())
}
}
diff --git a/src/actix_protobuf/lib.rs.html b/src/actix_protobuf/lib.rs.html
index 7c949469c..f2581aa1b 100644
--- a/src/actix_protobuf/lib.rs.html
+++ b/src/actix_protobuf/lib.rs.html
@@ -375,22 +375,22 @@
}
impl ResponseError for ProtoBufPayloadError {
- fn error_response(&self) -> HttpResponse {
+ fn error_response(&self) -> HttpResponse {
match *self {
- ProtoBufPayloadError::Overflow => HttpResponse::PayloadTooLarge().into(),
- _ => HttpResponse::BadRequest().into(),
+ ProtoBufPayloadError::Overflow => HttpResponse::PayloadTooLarge().into(),
+ _ => HttpResponse::BadRequest().into(),
}
}
}
impl From<PayloadError> for ProtoBufPayloadError {
- fn from(err: PayloadError) -> ProtoBufPayloadError {
+ fn from(err: PayloadError) -> ProtoBufPayloadError {
ProtoBufPayloadError::Payload(err)
}
}
impl From<ProtoBufDecodeError> for ProtoBufPayloadError {
- fn from(err: ProtoBufDecodeError) -> ProtoBufPayloadError {
+ fn from(err: ProtoBufDecodeError) -> ProtoBufPayloadError {
ProtoBufPayloadError::Deserialize(err)
}
}
@@ -400,13 +400,13 @@
impl<T: Message> Deref for ProtoBuf<T> {
type Target = T;
- fn deref(&self) -> &T {
+ fn deref(&self) -> &T {
&self.0
}
}
impl<T: Message> DerefMut for ProtoBuf<T> {
- fn deref_mut(&mut self) -> &mut T {
+ fn deref_mut(&mut self) -> &mut T {
&mut self.0
}
}
@@ -415,7 +415,7 @@
where
T: fmt::Debug,
{
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "ProtoBuf: {:?}", self.0)
}
}
@@ -424,7 +424,7 @@
where
T: fmt::Display,
{
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt::Display::fmt(&self.0, f)
}
}
@@ -435,14 +435,14 @@
impl ProtoBufConfig {
- pub fn limit(&mut self, limit: usize) -> &mut Self {
+ pub fn limit(&mut self, limit: usize) -> &mut Self {
self.limit = limit;
self
}
}
impl Default for ProtoBufConfig {
- fn default() -> Self {
+ fn default() -> Self {
ProtoBufConfig { limit: 262_144 }
}
}
@@ -456,7 +456,7 @@
type Future = LocalBoxFuture<'static, Result<Self, Error>>;
#[inline]
- fn from_request(req: &HttpRequest, payload: &mut Payload) -> Self::Future {
+ fn from_request(req: &HttpRequest, payload: &mut Payload) -> Self::Future {
let limit = req
.app_data::<ProtoBufConfig>()
.map(|c| c.limit)
@@ -464,21 +464,21 @@
ProtoBufMessage::new(req, payload)
.limit(limit)
.map(move |res| match res {
- Err(e) => Err(e.into()),
- Ok(item) => Ok(ProtoBuf(item)),
+ Err(e) => Err(e.into()),
+ Ok(item) => Ok(ProtoBuf(item)),
})
.boxed_local()
}
}
impl<T: Message + Default> Responder for ProtoBuf<T> {
- fn respond_to(self, _: &HttpRequest) -> HttpResponse {
+ fn respond_to(self, _: &HttpRequest) -> HttpResponse {
let mut buf = Vec::new();
match self.0.encode(&mut buf) {
- Ok(()) => HttpResponse::Ok()
+ Ok(()) => HttpResponse::Ok()
.content_type("application/protobuf")
.body(buf),
- Err(err) => HttpResponse::from_error(Error::from(ProtoBufPayloadError::Serialize(err))),
+ Err(err) => HttpResponse::from_error(Error::from(ProtoBufPayloadError::Serialize(err))),
}
}
}
@@ -493,7 +493,7 @@
impl<T: Message + Default> ProtoBufMessage<T> {
- pub fn new(req: &HttpRequest, payload: &mut Payload) -> Self {
+ pub fn new(req: &HttpRequest, payload: &mut Payload) -> Self {
if req.content_type() != "application/protobuf" {
return ProtoBufMessage {
limit: 262_144,
@@ -523,7 +523,7 @@
}
- pub fn limit(mut self, limit: usize) -> Self {
+ pub fn limit(mut self, limit: usize) -> Self {
self.limit = limit;
self
}
@@ -532,7 +532,7 @@
impl<T: Message + Default + 'static> Future for ProtoBufMessage<T> {
type Output = Result<T, ProtoBufPayloadError>;
- fn poll(mut self: Pin<&mut Self>, task: &mut task::Context<'_>) -> Poll<Self::Output> {
+ fn poll(mut self: Pin<&mut Self>, task: &mut task::Context<'_>) -> Poll<Self::Output> {
if let Some(ref mut fut) = self.fut {
return Pin::new(fut).poll(task);
}
@@ -575,11 +575,11 @@
}
pub trait ProtoBufResponseBuilder {
- fn protobuf<T: Message>(&mut self, value: T) -> Result<HttpResponse, Error>;
+ fn protobuf<T: Message>(&mut self, value: T) -> Result<HttpResponse, Error>;
}
impl ProtoBufResponseBuilder for HttpResponseBuilder {
- fn protobuf<T: Message>(&mut self, value: T) -> Result<HttpResponse, Error> {
+ fn protobuf<T: Message>(&mut self, value: T) -> Result<HttpResponse, Error> {
self.insert_header((CONTENT_TYPE, "application/protobuf"));
let mut body = Vec::new();
@@ -597,15 +597,15 @@
use actix_web::test::TestRequest;
impl PartialEq for ProtoBufPayloadError {
- fn eq(&self, other: &ProtoBufPayloadError) -> bool {
+ fn eq(&self, other: &ProtoBufPayloadError) -> bool {
match *self {
- ProtoBufPayloadError::Overflow => {
+ ProtoBufPayloadError::Overflow => {
matches!(*other, ProtoBufPayloadError::Overflow)
}
- ProtoBufPayloadError::ContentType => {
+ ProtoBufPayloadError::ContentType => {
matches!(*other, ProtoBufPayloadError::ContentType)
}
- _ => false,
+ _ => false,
}
}
}
diff --git a/src/actix_redis/redis.rs.html b/src/actix_redis/redis.rs.html
index 977273ed0..d5548d755 100644
--- a/src/actix_redis/redis.rs.html
+++ b/src/actix_redis/redis.rs.html
@@ -176,7 +176,7 @@
impl RedisActor {
- pub fn start<S: Into<String>>(addr: S) -> Addr<RedisActor> {
+ pub fn start<S: Into<String>>(addr: S) -> Addr<RedisActor> {
let addr = addr.into();
let backoff = ExponentialBackoff {
@@ -203,7 +203,7 @@
.call(req)
.into_actor(self)
.map(|res, act, ctx| match res {
- Ok(conn) => {
+ Ok(conn) => {
let stream = conn.into_parts().0;
info!("Connected to redis server: {}", act.addr);
@@ -218,7 +218,7 @@
act.backoff.reset();
}
- Err(err) => {
+ Err(err) => {
error!("Can not connect to redis server: {}", err);
@@ -241,7 +241,7 @@
}
impl actix::io::WriteHandler<io::Error> for RedisActor {
- fn error(&mut self, err: io::Error, _: &mut Self::Context) -> Running {
+ fn error(&mut self, err: io::Error, _: &mut Self::Context) -> Running {
warn!("Redis connection dropped: {} error: {}", self.addr, err);
Running::Stop
}
@@ -250,13 +250,13 @@
impl StreamHandler<Result<RespValue, RespError>> for RedisActor {
fn handle(&mut self, msg: Result<RespValue, RespError>, ctx: &mut Self::Context) {
match msg {
- Err(e) => {
+ Err(e) => {
if let Some(tx) = self.queue.pop_front() {
let _ = tx.send(Err(e.into()));
}
ctx.stop();
}
- Ok(val) => {
+ Ok(val) => {
if let Some(tx) = self.queue.pop_front() {
let _ = tx.send(Ok(val));
}
@@ -268,7 +268,7 @@
impl Handler<Command> for RedisActor {
type Result = ResponseFuture<Result<RespValue, Error>>;
- fn handle(&mut self, msg: Command, _: &mut Self::Context) -> Self::Result {
+ fn handle(&mut self, msg: Command, _: &mut Self::Context) -> Self::Result {
let (tx, rx) = oneshot::channel();
if let Some(ref mut cell) = self.cell {
self.queue.push_back(tx);
diff --git a/src/actix_redis/session.rs.html b/src/actix_redis/session.rs.html
index aeca83dfd..3ac9899c0 100644
--- a/src/actix_redis/session.rs.html
+++ b/src/actix_redis/session.rs.html
@@ -736,7 +736,7 @@
- pub fn new<S: Into<String>>(addr: S, key: &[u8]) -> RedisSession {
+ pub fn new<S: Into<String>>(addr: S, key: &[u8]) -> RedisSession {
RedisSession(Rc::new(Inner {
key: Key::derive_from(key),
cache_keygen: Box::new(|key: &str| format!("session:{}", &key)),
@@ -753,25 +753,25 @@
}
- pub fn ttl(mut self, ttl: u32) -> Self {
+ pub fn ttl(mut self, ttl: u32) -> Self {
Rc::get_mut(&mut self.0).unwrap().ttl = format!("{}", ttl);
self
}
- pub fn cookie_name(mut self, name: &str) -> Self {
+ pub fn cookie_name(mut self, name: &str) -> Self {
Rc::get_mut(&mut self.0).unwrap().name = name.to_owned();
self
}
- pub fn cookie_path(mut self, path: &str) -> Self {
+ pub fn cookie_path(mut self, path: &str) -> Self {
Rc::get_mut(&mut self.0).unwrap().path = path.to_owned();
self
}
- pub fn cookie_domain(mut self, domain: &str) -> Self {
+ pub fn cookie_domain(mut self, domain: &str) -> Self {
Rc::get_mut(&mut self.0).unwrap().domain = Some(domain.to_owned());
self
}
@@ -782,7 +782,7 @@
- pub fn cookie_secure(mut self, secure: bool) -> Self {
+ pub fn cookie_secure(mut self, secure: bool) -> Self {
Rc::get_mut(&mut self.0).unwrap().secure = secure;
self
}
@@ -790,7 +790,7 @@
- pub fn cookie_max_age(mut self, max_age: impl Into<Option<Duration>>) -> Self {
+ pub fn cookie_max_age(mut self, max_age: impl Into<Option<Duration>>) -> Self {
Rc::get_mut(&mut self.0).unwrap().max_age = max_age.into();
self
}
@@ -798,7 +798,7 @@
- pub fn cookie_same_site(mut self, same_site: SameSite) -> Self {
+ pub fn cookie_same_site(mut self, same_site: SameSite) -> Self {
Rc::get_mut(&mut self.0).unwrap().same_site = Some(same_site);
self
}
@@ -806,13 +806,13 @@
- pub fn cookie_http_only(mut self, http_only: bool) -> Self {
+ pub fn cookie_http_only(mut self, http_only: bool) -> Self {
Rc::get_mut(&mut self.0).unwrap().http_only = http_only;
self
}
- pub fn cache_keygen(mut self, keygen: Box<dyn Fn(&str) -> String>) -> Self {
+ pub fn cache_keygen(mut self, keygen: Box<dyn Fn(&str) -> String>) -> Self {
Rc::get_mut(&mut self.0).unwrap().cache_keygen = keygen;
self
}
@@ -830,7 +830,7 @@
type InitError = ();
type Future = LocalBoxFuture<'static, Result<Self::Transform, Self::InitError>>;
- fn new_transform(&self, service: S) -> Self::Future {
+ fn new_transform(&self, service: S) -> Self::Future {
let inner = self.0.clone();
Box::pin(async {
Ok(RedisSessionMiddleware {
@@ -859,7 +859,7 @@
actix_service::forward_ready!(service);
- fn call(&self, mut req: ServiceRequest) -> Self::Future {
+ fn call(&self, mut req: ServiceRequest) -> Self::Future {
let srv = Rc::clone(&self.service);
let inner = Rc::clone(&self.inner);
@@ -876,7 +876,7 @@
let mut res = srv.call(req).await?;
match Session::get_changes(&mut res) {
- (SessionStatus::Unchanged, state) => {
+ (SessionStatus::Unchanged, state) => {
if value.is_none() {
inner.update(res, state, value).await
@@ -885,21 +885,21 @@
}
}
- (SessionStatus::Changed, state) => inner.update(res, state, value).await,
+ (SessionStatus::Changed, state) => inner.update(res, state, value).await,
- (SessionStatus::Purged, _) => {
+ (SessionStatus::Purged, _) => {
if let Some(val) = value {
inner.clear_cache(val).await?;
match inner.remove_cookie(&mut res) {
- Ok(_) => Ok(res),
- Err(_err) => Err(error::ErrorInternalServerError(_err)),
+ Ok(_) => Ok(res),
+ Err(_err) => Err(error::ErrorInternalServerError(_err)),
}
} else {
Err(error::ErrorInternalServerError("unexpected"))
}
}
- (SessionStatus::Renewed, state) => {
+ (SessionStatus::Renewed, state) => {
if let Some(val) = value {
inner.clear_cache(val).await?;
inner.update(res, state, None).await
@@ -914,7 +914,7 @@
struct Inner {
key: Key,
- cache_keygen: Box<dyn Fn(&str) -> String>,
+ cache_keygen: Box<dyn Fn(&str) -> String>,
ttl: String,
addr: Addr<RedisActor>,
name: String,
@@ -930,7 +930,7 @@
async fn load(
&self,
req: &ServiceRequest,
- ) -> Result<Option<(HashMap<String, String>, String)>, Error> {
+ ) -> Result<Option<(HashMap<String, String>, String)>, Error> {
let (value, cache_key) = {
let cookies = if let Ok(cookies) = req.cookies() {
@@ -939,7 +939,7 @@
return Ok(None);
};
- if let Some(cookie) = cookies.iter().find(|&cookie| cookie.name() == self.name) {
+ if let Some(cookie) = cookies.iter().find(|&cookie| cookie.name() == self.name) {
let mut jar = CookieJar::new();
jar.add_original(cookie.clone());
@@ -963,20 +963,20 @@
.map_err(error::ErrorInternalServerError)?;
match val {
- RespValue::Error(err) => {
+ RespValue::Error(err) => {
return Err(error::ErrorInternalServerError(err));
}
- RespValue::SimpleString(s) => {
+ RespValue::SimpleString(s) => {
if let Ok(val) = serde_json::from_str(&s) {
return Ok(Some((val, value)));
}
}
- RespValue::BulkString(s) => {
+ RespValue::BulkString(s) => {
if let Ok(val) = serde_json::from_slice(&s) {
return Ok(Some((val, value)));
}
}
- _ => {}
+ _ => {}
}
Ok(None)
@@ -987,7 +987,7 @@
mut res: ServiceResponse<B>,
state: impl Iterator<Item = (String, String)>,
value: Option<String>,
- ) -> Result<ServiceResponse<B>, Error> {
+ ) -> Result<ServiceResponse<B>, Error> {
let (value, jar) = if let Some(value) = value {
(value, None)
} else {
@@ -1027,8 +1027,8 @@
let state: HashMap<_, _> = state.collect();
let body = match serde_json::to_string(&state) {
- Err(err) => return Err(err.into()),
- Ok(body) => body,
+ Err(err) => return Err(err.into()),
+ Ok(body) => body,
};
let cmd = Command(resp_array!["SET", cache_key, body, "EX", &self.ttl]);
@@ -1050,7 +1050,7 @@
}
- async fn clear_cache(&self, key: String) -> Result<(), Error> {
+ async fn clear_cache(&self, key: String) -> Result<(), Error> {
let cache_key = (self.cache_keygen)(&key);
let res = self
@@ -1061,15 +1061,15 @@
match res {
- Ok(RespValue::Integer(x)) if x > 0 => Ok(()),
- _ => Err(error::ErrorInternalServerError(
+ Ok(RespValue::Integer(x)) if x > 0 => Ok(()),
+ _ => Err(error::ErrorInternalServerError(
"failed to remove session from cache",
)),
}
}
- fn remove_cookie<B>(&self, res: &mut ServiceResponse<B>) -> Result<(), Error> {
+ fn remove_cookie<B>(&self, res: &mut ServiceResponse<B>) -> Result<(), Error> {
let mut cookie = Cookie::named(self.name.clone());
cookie.set_value("");
cookie.set_max_age(Duration::zero());
@@ -1101,7 +1101,7 @@
counter: i32,
}
- async fn index(session: Session) -> Result<HttpResponse> {
+ async fn index(session: Session) -> Result<HttpResponse> {
let user_id: Option<String> = session.get::<String>("user_id").unwrap();
let counter: i32 = session
.get::<i32>("counter")
@@ -1111,7 +1111,7 @@
Ok(HttpResponse::Ok().json(&IndexResponse { user_id, counter }))
}
- async fn do_something(session: Session) -> Result<HttpResponse> {
+ async fn do_something(session: Session) -> Result<HttpResponse> {
let user_id: Option<String> = session.get::<String>("user_id").unwrap();
let counter: i32 = session
.get::<i32>("counter")
@@ -1127,7 +1127,7 @@
user_id: String,
}
- async fn login(user_id: web::Json<Identity>, session: Session) -> Result<HttpResponse> {
+ async fn login(user_id: web::Json<Identity>, session: Session) -> Result<HttpResponse> {
let id = user_id.into_inner().user_id;
session.insert("user_id", &id)?;
session.renew();
@@ -1143,7 +1143,7 @@
}))
}
- async fn logout(session: Session) -> Result<HttpResponse> {
+ async fn logout(session: Session) -> Result<HttpResponse> {
let id: Option<String> = session.get("user_id")?;
let body = if let Some(x) = id {
@@ -1209,7 +1209,7 @@
.unwrap()
.clone()
.into_iter()
- .find(|c| c.name() == "test-session")
+ .find(|c| c.name() == "test-session")
.unwrap();
let result_1 = resp_1.json::<IndexResponse>().await.unwrap();
assert_eq!(
@@ -1231,7 +1231,7 @@
.unwrap()
.clone()
.into_iter()
- .find(|c| c.name() == "test-session");
+ .find(|c| c.name() == "test-session");
assert_eq!(cookie_2, None);
@@ -1275,7 +1275,7 @@
.unwrap()
.clone()
.into_iter()
- .find(|c| c.name() == "test-session")
+ .find(|c| c.name() == "test-session")
.unwrap();
assert_ne!(cookie_1.value(), cookie_2.value());
@@ -1325,7 +1325,7 @@
.unwrap()
.clone()
.into_iter()
- .find(|c| c.name() == "test-session")
+ .find(|c| c.name() == "test-session")
.unwrap();
let result_8 = resp_8.json::<IndexResponse>().await.unwrap();
assert_eq!(
@@ -1347,7 +1347,7 @@
.unwrap()
.clone()
.into_iter()
- .find(|c| c.name() == "test-session")
+ .find(|c| c.name() == "test-session")
.unwrap();
assert_ne!(
OffsetDateTime::now_utc().year(),
@@ -1376,7 +1376,7 @@
.unwrap()
.clone()
.into_iter()
- .find(|c| c.name() == "test-session")
+ .find(|c| c.name() == "test-session")
.unwrap();
assert_ne!(cookie_5.value(), cookie_2.value());
}
@@ -1404,7 +1404,7 @@
.unwrap()
.clone()
.into_iter()
- .find(|c| c.name() == "test-session")
+ .find(|c| c.name() == "test-session")
.unwrap();
assert_eq!(cookie.max_age(), None);
diff --git a/src/actix_session/cookie.rs.html b/src/actix_session/cookie.rs.html
index 932aea8cc..5b91201db 100644
--- a/src/actix_session/cookie.rs.html
+++ b/src/actix_session/cookie.rs.html
@@ -610,7 +610,7 @@
}
impl CookieSessionInner {
- fn new(key: &[u8], security: CookieSecurity) -> CookieSessionInner {
+ fn new(key: &[u8], security: CookieSecurity) -> CookieSessionInner {
CookieSessionInner {
security,
key: Key::derive_from(key),
@@ -630,7 +630,7 @@
&self,
res: &mut ServiceResponse<B>,
state: impl Iterator<Item = (String, String)>,
- ) -> Result<(), Error> {
+ ) -> Result<(), Error> {
let state: HashMap<String, String> = state.collect();
if self.lazy && state.is_empty() {
@@ -667,8 +667,8 @@
let mut jar = CookieJar::new();
match self.security {
- CookieSecurity::Signed => jar.signed_mut(&self.key).add(cookie),
- CookieSecurity::Private => jar.private_mut(&self.key).add(cookie),
+ CookieSecurity::Signed => jar.signed_mut(&self.key).add(cookie),
+ CookieSecurity::Private => jar.private_mut(&self.key).add(cookie),
}
for cookie in jar.delta() {
@@ -680,7 +680,7 @@
}
- fn remove_cookie<B>(&self, res: &mut ServiceResponse<B>) -> Result<(), Error> {
+ fn remove_cookie<B>(&self, res: &mut ServiceResponse<B>) -> Result<(), Error> {
let mut cookie = Cookie::named(self.name.clone());
cookie.set_path(self.path.clone());
cookie.set_value("");
@@ -693,16 +693,16 @@
Ok(())
}
- fn load(&self, req: &ServiceRequest) -> (bool, HashMap<String, String>) {
+ fn load(&self, req: &ServiceRequest) -> (bool, HashMap<String, String>) {
if let Ok(cookies) = req.cookies() {
for cookie in cookies.iter() {
- if cookie.name() == self.name {
+ if cookie.name() == self.name {
let mut jar = CookieJar::new();
jar.add_original(cookie.clone());
let cookie_opt = match self.security {
- CookieSecurity::Signed => jar.signed(&self.key).get(&self.name),
- CookieSecurity::Private => jar.private(&self.key).get(&self.name),
+ CookieSecurity::Signed => jar.signed(&self.key).get(&self.name),
+ CookieSecurity::Private => jar.private(&self.key).get(&self.name),
};
if let Some(cookie) = cookie_opt {
@@ -763,7 +763,7 @@
- pub fn signed(key: &[u8]) -> CookieSession {
+ pub fn signed(key: &[u8]) -> CookieSession {
CookieSession(Rc::new(CookieSessionInner::new(
key,
CookieSecurity::Signed,
@@ -773,7 +773,7 @@
- pub fn private(key: &[u8]) -> CookieSession {
+ pub fn private(key: &[u8]) -> CookieSession {
CookieSession(Rc::new(CookieSessionInner::new(
key,
CookieSecurity::Private,
@@ -781,19 +781,19 @@
}
- pub fn path<S: Into<String>>(mut self, value: S) -> CookieSession {
+ pub fn path<S: Into<String>>(mut self, value: S) -> CookieSession {
Rc::get_mut(&mut self.0).unwrap().path = value.into();
self
}
- pub fn name<S: Into<String>>(mut self, value: S) -> CookieSession {
+ pub fn name<S: Into<String>>(mut self, value: S) -> CookieSession {
Rc::get_mut(&mut self.0).unwrap().name = value.into();
self
}
- pub fn domain<S: Into<String>>(mut self, value: S) -> CookieSession {
+ pub fn domain<S: Into<String>>(mut self, value: S) -> CookieSession {
Rc::get_mut(&mut self.0).unwrap().domain = Some(value.into());
self
}
@@ -802,7 +802,7 @@
- pub fn lazy(mut self, value: bool) -> CookieSession {
+ pub fn lazy(mut self, value: bool) -> CookieSession {
Rc::get_mut(&mut self.0).unwrap().lazy = value;
self
}
@@ -811,41 +811,41 @@
- pub fn secure(mut self, value: bool) -> CookieSession {
+ pub fn secure(mut self, value: bool) -> CookieSession {
Rc::get_mut(&mut self.0).unwrap().secure = value;
self
}
- pub fn http_only(mut self, value: bool) -> CookieSession {
+ pub fn http_only(mut self, value: bool) -> CookieSession {
Rc::get_mut(&mut self.0).unwrap().http_only = value;
self
}
- pub fn same_site(mut self, value: SameSite) -> CookieSession {
+ pub fn same_site(mut self, value: SameSite) -> CookieSession {
Rc::get_mut(&mut self.0).unwrap().same_site = Some(value);
self
}
- pub fn max_age(self, seconds: i64) -> CookieSession {
+ pub fn max_age(self, seconds: i64) -> CookieSession {
self.max_age_time(Duration::seconds(seconds))
}
- pub fn max_age_time(mut self, value: time::Duration) -> CookieSession {
+ pub fn max_age_time(mut self, value: time::Duration) -> CookieSession {
Rc::get_mut(&mut self.0).unwrap().max_age = Some(value);
self
}
- pub fn expires_in(self, seconds: i64) -> CookieSession {
+ pub fn expires_in(self, seconds: i64) -> CookieSession {
self.expires_in_time(Duration::seconds(seconds))
}
- pub fn expires_in_time(mut self, value: Duration) -> CookieSession {
+ pub fn expires_in_time(mut self, value: Duration) -> CookieSession {
Rc::get_mut(&mut self.0).unwrap().expires_in = Some(value);
self
}
@@ -865,7 +865,7 @@
type Transform = CookieSessionMiddleware<S>;
type Future = Ready<Result<Self::Transform, Self::InitError>>;
- fn new_transform(&self, service: S) -> Self::Future {
+ fn new_transform(&self, service: S) -> Self::Future {
ok(CookieSessionMiddleware {
service,
inner: self.0.clone(),
@@ -898,7 +898,7 @@
- fn call(&self, mut req: ServiceRequest) -> Self::Future {
+ fn call(&self, mut req: ServiceRequest) -> Self::Future {
let inner = self.inner.clone();
let (is_new, state) = self.inner.load(&req);
let prolong_expiration = self.inner.expires_in.is_some();
@@ -910,16 +910,16 @@
let mut res = fut.await?;
let result = match Session::get_changes(&mut res) {
- (SessionStatus::Changed, state) | (SessionStatus::Renewed, state) => {
+ (SessionStatus::Changed, state) | (SessionStatus::Renewed, state) => {
inner.set_cookie(&mut res, state)
}
- (SessionStatus::Unchanged, state) if prolong_expiration => {
+ (SessionStatus::Unchanged, state) if prolong_expiration => {
inner.set_cookie(&mut res, state)
}
- (SessionStatus::Unchanged, _) => {
+ (SessionStatus::Unchanged, _) => {
if is_new {
let state: HashMap<String, String> = HashMap::new();
inner.set_cookie(&mut res, state.into_iter())
@@ -928,15 +928,15 @@
}
}
- (SessionStatus::Purged, _) => {
+ (SessionStatus::Purged, _) => {
let _ = inner.remove_cookie(&mut res);
Ok(())
}
};
match result {
- Ok(()) => Ok(res.map_body(|_, body| AnyBody::from_message(body))),
- Err(error) => Ok(res.error_response(error)),
+ Ok(()) => Ok(res.map_body(|_, body| AnyBody::from_message(body))),
+ Err(error) => Ok(res.error_response(error)),
}
}
.boxed_local()
@@ -966,7 +966,7 @@
assert!(response
.response()
.cookies()
- .any(|c| c.name() == "actix-session"));
+ .any(|c| c.name() == "actix-session"));
}
#[actix_rt::test]
@@ -986,7 +986,7 @@
assert!(response
.response()
.cookies()
- .any(|c| c.name() == "actix-session"));
+ .any(|c| c.name() == "actix-session"));
}
#[actix_rt::test]
@@ -1004,7 +1004,7 @@
let request = test::TestRequest::get().to_request();
let response = app.call(request).await.unwrap();
- assert!(response.response().cookies().count() == 0);
+ assert!(response.response().cookies().count() == 0);
let request = test::TestRequest::with_uri("/count").to_request();
let response = app.call(request).await.unwrap();
@@ -1012,7 +1012,7 @@
assert!(response
.response()
.cookies()
- .any(|c| c.name() == "actix-session"));
+ .any(|c| c.name() == "actix-session"));
}
#[actix_rt::test]
@@ -1032,7 +1032,7 @@
assert!(response
.response()
.cookies()
- .any(|c| c.name() == "actix-session"));
+ .any(|c| c.name() == "actix-session"));
}
#[actix_rt::test]
@@ -1064,7 +1064,7 @@
let cookie = response
.response()
.cookies()
- .find(|c| c.name() == "actix-test")
+ .find(|c| c.name() == "actix-test")
.unwrap()
.clone();
assert_eq!(cookie.path().unwrap(), "/test/");
@@ -1094,7 +1094,7 @@
let expires_1 = response
.response()
.cookies()
- .find(|c| c.name() == "actix-session")
+ .find(|c| c.name() == "actix-session")
.expect("Cookie is set")
.expires()
.expect("Expiration is set")
@@ -1108,7 +1108,7 @@
let expires_2 = response
.response()
.cookies()
- .find(|c| c.name() == "actix-session")
+ .find(|c| c.name() == "actix-session")
.expect("Cookie is set")
.expires()
.expect("Expiration is set")
diff --git a/src/actix_session/lib.rs.html b/src/actix_session/lib.rs.html
index 0971c0528..c1dbee4fe 100644
--- a/src/actix_session/lib.rs.html
+++ b/src/actix_session/lib.rs.html
@@ -487,23 +487,23 @@
pub trait UserSession {
- fn get_session(&self) -> Session;
+ fn get_session(&self) -> Session;
}
impl UserSession for HttpRequest {
- fn get_session(&self) -> Session {
+ fn get_session(&self) -> Session {
Session::get_session(&mut *self.extensions_mut())
}
}
impl UserSession for ServiceRequest {
- fn get_session(&self) -> Session {
+ fn get_session(&self) -> Session {
Session::get_session(&mut *self.extensions_mut())
}
}
impl UserSession for RequestHead {
- fn get_session(&self) -> Session {
+ fn get_session(&self) -> Session {
Session::get_session(&mut *self.extensions_mut())
}
}
@@ -534,7 +534,7 @@
}
impl Default for SessionStatus {
- fn default() -> SessionStatus {
+ fn default() -> SessionStatus {
SessionStatus::Unchanged
}
}
@@ -547,7 +547,7 @@
impl Session {
- pub fn get<T: DeserializeOwned>(&self, key: &str) -> Result<Option<T>, Error> {
+ pub fn get<T: DeserializeOwned>(&self, key: &str) -> Result<Option<T>, Error> {
if let Some(s) = self.0.borrow().state.get(key) {
Ok(Some(serde_json::from_str(s)?))
} else {
@@ -558,7 +558,7 @@
- pub fn entries(&self) -> Ref<'_, HashMap<String, String>> {
+ pub fn entries(&self) -> Ref<'_, HashMap<String, String>> {
Ref::map(self.0.borrow(), |inner| &inner.state)
}
@@ -566,7 +566,7 @@
- pub fn insert(&self, key: impl Into<String>, value: impl Serialize) -> Result<(), Error> {
+ pub fn insert(&self, key: impl Into<String>, value: impl Serialize) -> Result<(), Error> {
let mut inner = self.0.borrow_mut();
if inner.status != SessionStatus::Purged {
@@ -581,7 +581,7 @@
- pub fn remove(&self, key: &str) -> Option<String> {
+ pub fn remove(&self, key: &str) -> Option<String> {
let mut inner = self.0.borrow_mut();
if inner.status != SessionStatus::Purged {
@@ -596,11 +596,11 @@
- pub fn remove_as<T: DeserializeOwned>(&self, key: &str) -> Option<Result<T, String>> {
+ pub fn remove_as<T: DeserializeOwned>(&self, key: &str) -> Option<Result<T, String>> {
self.remove(key)
.map(|val_str| match serde_json::from_str(&val_str) {
- Ok(val) => Ok(val),
- Err(_err) => {
+ Ok(val) => Ok(val),
+ Err(_err) => {
log::debug!(
"removed value (key: {}) could not be deserialized as {}",
key,
@@ -662,7 +662,7 @@
pub fn get_changes<B>(
res: &mut ServiceResponse<B>,
- ) -> (SessionStatus, impl Iterator<Item = (String, String)>) {
+ ) -> (SessionStatus, impl Iterator<Item = (String, String)>) {
if let Some(s_impl) = res
.request()
.extensions()
@@ -675,7 +675,7 @@
}
}
- fn get_session(extensions: &mut Extensions) -> Session {
+ fn get_session(extensions: &mut Extensions) -> Session {
if let Some(s_impl) = extensions.get::<Rc<RefCell<SessionInner>>>() {
return Session(Rc::clone(s_impl));
}
@@ -711,7 +711,7 @@
type Config = ();
#[inline]
- fn from_request(req: &HttpRequest, _: &mut Payload) -> Self::Future {
+ fn from_request(req: &HttpRequest, _: &mut Payload) -> Self::Future {
ok(Session::get_session(&mut *req.extensions_mut()))
}
}
diff --git a/src/actix_web_httpauth/extractors/basic.rs.html b/src/actix_web_httpauth/extractors/basic.rs.html
index e92c4a69c..e3a43cc9d 100644
--- a/src/actix_web_httpauth/extractors/basic.rs.html
+++ b/src/actix_web_httpauth/extractors/basic.rs.html
@@ -176,7 +176,7 @@
- pub fn realm<T>(mut self, value: T) -> Config
+ pub fn realm<T>(mut self, value: T) -> Config
where
T: Into<Cow<'static, str>>,
{
@@ -186,7 +186,7 @@
}
impl AsRef<Challenge> for Config {
- fn as_ref(&self) -> &Challenge {
+ fn as_ref(&self) -> &Challenge {
&self.0
}
}
@@ -194,7 +194,7 @@
impl AuthExtractorConfig for Config {
type Inner = Challenge;
- fn into_inner(self) -> Self::Inner {
+ fn into_inner(self) -> Self::Inner {
self.0
}
}
@@ -242,12 +242,12 @@
impl BasicAuth {
- pub fn user_id(&self) -> &Cow<'static, str> {
+ pub fn user_id(&self) -> &Cow<'static, str> {
self.0.user_id()
}
- pub fn password(&self) -> Option<&Cow<'static, str>> {
+ pub fn password(&self) -> Option<&Cow<'static, str>> {
self.0.password()
}
}
@@ -257,7 +257,7 @@
type Config = Config;
type Error = AuthenticationError<Challenge>;
- fn from_request(req: &HttpRequest, _: &mut Payload) -> <Self as FromRequest>::Future {
+ fn from_request(req: &HttpRequest, _: &mut Payload) -> <Self as FromRequest>::Future {
ready(
Authorization::<Basic>::parse(req)
.map(|auth| BasicAuth(auth.into_scheme()))
@@ -279,7 +279,7 @@
type Error = AuthenticationError<Challenge>;
type Future = Ready<Result<Self, Self::Error>>;
- fn from_service_request(req: &ServiceRequest) -> Self::Future {
+ fn from_service_request(req: &ServiceRequest) -> Self::Future {
ready(
Authorization::<Basic>::parse(req)
.map(|auth| BasicAuth(auth.into_scheme()))
diff --git a/src/actix_web_httpauth/extractors/bearer.rs.html b/src/actix_web_httpauth/extractors/bearer.rs.html
index 9515f6a33..d89151e41 100644
--- a/src/actix_web_httpauth/extractors/bearer.rs.html
+++ b/src/actix_web_httpauth/extractors/bearer.rs.html
@@ -202,7 +202,7 @@
- pub fn scope<T: Into<Cow<'static, str>>>(mut self, value: T) -> Config {
+ pub fn scope<T: Into<Cow<'static, str>>>(mut self, value: T) -> Config {
self.0.scope = Some(value.into());
self
}
@@ -211,14 +211,14 @@
- pub fn realm<T: Into<Cow<'static, str>>>(mut self, value: T) -> Config {
+ pub fn realm<T: Into<Cow<'static, str>>>(mut self, value: T) -> Config {
self.0.realm = Some(value.into());
self
}
}
impl AsRef<bearer::Bearer> for Config {
- fn as_ref(&self) -> &bearer::Bearer {
+ fn as_ref(&self) -> &bearer::Bearer {
&self.0
}
}
@@ -226,7 +226,7 @@
impl AuthExtractorConfig for Config {
type Inner = bearer::Bearer;
- fn into_inner(self) -> Self::Inner {
+ fn into_inner(self) -> Self::Inner {
self.0
}
}
@@ -274,7 +274,7 @@
impl BearerAuth {
- pub fn token(&self) -> &str {
+ pub fn token(&self) -> &str {
self.0.token()
}
}
@@ -284,7 +284,7 @@
type Future = Ready<Result<Self, Self::Error>>;
type Error = AuthenticationError<bearer::Bearer>;
- fn from_request(req: &HttpRequest, _payload: &mut Payload) -> <Self as FromRequest>::Future {
+ fn from_request(req: &HttpRequest, _payload: &mut Payload) -> <Self as FromRequest>::Future {
ready(
authorization::Authorization::<authorization::Bearer>::parse(req)
.map(|auth| BearerAuth(auth.into_scheme()))
@@ -304,7 +304,7 @@
type Future = Ready<Result<Self, Self::Error>>;
type Error = AuthenticationError<bearer::Bearer>;
- fn from_service_request(req: &ServiceRequest) -> Self::Future {
+ fn from_service_request(req: &ServiceRequest) -> Self::Future {
ready(
authorization::Authorization::<authorization::Bearer>::parse(req)
.map(|auth| BearerAuth(auth.into_scheme()))
@@ -326,14 +326,14 @@
- pub fn with_error(mut self, kind: Error) -> Self {
+ pub fn with_error(mut self, kind: Error) -> Self {
*self.status_code_mut() = kind.status_code();
self.challenge_mut().error = Some(kind);
self
}
- pub fn with_error_description<T>(mut self, desc: T) -> Self
+ pub fn with_error_description<T>(mut self, desc: T) -> Self
where
T: Into<Cow<'static, str>>,
{
@@ -344,7 +344,7 @@
- pub fn with_error_uri<T>(mut self, uri: T) -> Self
+ pub fn with_error_uri<T>(mut self, uri: T) -> Self
where
T: Into<Cow<'static, str>>,
{
diff --git a/src/actix_web_httpauth/extractors/config.rs.html b/src/actix_web_httpauth/extractors/config.rs.html
index 8b492abaf..c04658f40 100644
--- a/src/actix_web_httpauth/extractors/config.rs.html
+++ b/src/actix_web_httpauth/extractors/config.rs.html
@@ -33,14 +33,14 @@
type Inner: Challenge;
- fn into_inner(self) -> Self::Inner;
+ fn into_inner(self) -> Self::Inner;
}
impl<T> From<T> for AuthenticationError<<T as AuthExtractorConfig>::Inner>
where
T: AuthExtractorConfig,
{
- fn from(config: T) -> Self {
+ fn from(config: T) -> Self {
AuthenticationError::new(config.into_inner())
}
}
diff --git a/src/actix_web_httpauth/extractors/errors.rs.html b/src/actix_web_httpauth/extractors/errors.rs.html
index 76e3bd008..f879a9872 100644
--- a/src/actix_web_httpauth/extractors/errors.rs.html
+++ b/src/actix_web_httpauth/extractors/errors.rs.html
@@ -103,7 +103,7 @@
- pub fn new(challenge: C) -> AuthenticationError<C> {
+ pub fn new(challenge: C) -> AuthenticationError<C> {
AuthenticationError {
challenge,
status_code: StatusCode::UNAUTHORIZED,
@@ -111,7 +111,7 @@
}
- pub fn challenge_mut(&mut self) -> &mut C {
+ pub fn challenge_mut(&mut self) -> &mut C {
&mut self.challenge
}
@@ -119,13 +119,13 @@
- pub fn status_code_mut(&mut self) -> &mut StatusCode {
+ pub fn status_code_mut(&mut self) -> &mut StatusCode {
&mut self.status_code
}
}
impl<C: Challenge> fmt::Display for AuthenticationError<C> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt::Display::fmt(&self.status_code, f)
}
}
@@ -133,14 +133,14 @@
impl<C: 'static + Challenge> Error for AuthenticationError<C> {}
impl<C: 'static + Challenge> ResponseError for AuthenticationError<C> {
- fn error_response(&self) -> HttpResponse {
+ fn error_response(&self) -> HttpResponse {
HttpResponse::build(self.status_code)
.insert_header(WwwAuthenticate(self.challenge.clone()))
.finish()
}
- fn status_code(&self) -> StatusCode {
+ fn status_code(&self) -> StatusCode {
self.status_code
}
}
diff --git a/src/actix_web_httpauth/extractors/mod.rs.html b/src/actix_web_httpauth/extractors/mod.rs.html
index 17462b936..f229313d9 100644
--- a/src/actix_web_httpauth/extractors/mod.rs.html
+++ b/src/actix_web_httpauth/extractors/mod.rs.html
@@ -62,7 +62,7 @@
type Future: Future<Output = Result<Self, Self::Error>>;
- fn from_service_request(req: &ServiceRequest) -> Self::Future;
+ fn from_service_request(req: &ServiceRequest) -> Self::Future;
}
diff --git a/src/actix_web_httpauth/headers/authorization/errors.rs.html b/src/actix_web_httpauth/headers/authorization/errors.rs.html
index 3e2db8a88..28bb3b3b4 100644
--- a/src/actix_web_httpauth/headers/authorization/errors.rs.html
+++ b/src/actix_web_httpauth/headers/authorization/errors.rs.html
@@ -95,44 +95,44 @@
}
impl fmt::Display for ParseError {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let display = match self {
- ParseError::Invalid => "Invalid header value".to_string(),
- ParseError::MissingScheme => "Missing authorization scheme".to_string(),
- ParseError::MissingField(_) => "Missing header field".to_string(),
- ParseError::ToStrError(e) => e.to_string(),
- ParseError::Base64DecodeError(e) => e.to_string(),
- ParseError::Utf8Error(e) => e.to_string(),
+ ParseError::Invalid => "Invalid header value".to_string(),
+ ParseError::MissingScheme => "Missing authorization scheme".to_string(),
+ ParseError::MissingField(_) => "Missing header field".to_string(),
+ ParseError::ToStrError(e) => e.to_string(),
+ ParseError::Base64DecodeError(e) => e.to_string(),
+ ParseError::Utf8Error(e) => e.to_string(),
};
f.write_str(&display)
}
}
impl Error for ParseError {
- fn source(&self) -> Option<&(dyn Error + 'static)> {
+ fn source(&self) -> Option<&(dyn Error + 'static)> {
match self {
- ParseError::Invalid => None,
- ParseError::MissingScheme => None,
- ParseError::MissingField(_) => None,
- ParseError::ToStrError(e) => Some(e),
- ParseError::Base64DecodeError(e) => Some(e),
- ParseError::Utf8Error(e) => Some(e),
+ ParseError::Invalid => None,
+ ParseError::MissingScheme => None,
+ ParseError::MissingField(_) => None,
+ ParseError::ToStrError(e) => Some(e),
+ ParseError::Base64DecodeError(e) => Some(e),
+ ParseError::Utf8Error(e) => Some(e),
}
}
}
impl From<header::ToStrError> for ParseError {
- fn from(e: header::ToStrError) -> Self {
+ fn from(e: header::ToStrError) -> Self {
ParseError::ToStrError(e)
}
}
impl From<base64::DecodeError> for ParseError {
- fn from(e: base64::DecodeError) -> Self {
+ fn from(e: base64::DecodeError) -> Self {
ParseError::Base64DecodeError(e)
}
}
impl From<str::Utf8Error> for ParseError {
- fn from(e: str::Utf8Error) -> Self {
+ fn from(e: str::Utf8Error) -> Self {
ParseError::Utf8Error(e)
}
}
diff --git a/src/actix_web_httpauth/headers/authorization/header.rs.html b/src/actix_web_httpauth/headers/authorization/header.rs.html
index 001588570..6af622342 100644
--- a/src/actix_web_httpauth/headers/authorization/header.rs.html
+++ b/src/actix_web_httpauth/headers/authorization/header.rs.html
@@ -141,7 +141,7 @@
- pub fn into_scheme(self) -> S {
+ pub fn into_scheme(self) -> S {
self.0
}
}
@@ -150,7 +150,7 @@
where
S: Scheme,
{
- fn from(scheme: S) -> Authorization<S> {
+ fn from(scheme: S) -> Authorization<S> {
Authorization(scheme)
}
}
@@ -159,7 +159,7 @@
where
S: Scheme,
{
- fn as_ref(&self) -> &S {
+ fn as_ref(&self) -> &S {
&self.0
}
}
@@ -168,18 +168,18 @@
where
S: Scheme,
{
- fn as_mut(&mut self) -> &mut S {
+ fn as_mut(&mut self) -> &mut S {
&mut self.0
}
}
impl<S: Scheme> Header for Authorization<S> {
#[inline]
- fn name() -> HeaderName {
+ fn name() -> HeaderName {
AUTHORIZATION
}
- fn parse<T: HttpMessage>(msg: &T) -> Result<Self, ParseError> {
+ fn parse<T: HttpMessage>(msg: &T) -> Result<Self, ParseError> {
let header = msg.headers().get(AUTHORIZATION).ok_or(ParseError::Header)?;
let scheme = S::parse(header).map_err(|_| ParseError::Header)?;
@@ -190,13 +190,13 @@
impl<S: Scheme> IntoHeaderValue for Authorization<S> {
type Error = <S as IntoHeaderValue>::Error;
- fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
+ fn try_into_value(self) -> Result<HeaderValue, Self::Error> {
self.0.try_into_value()
}
}
impl<S: Scheme> fmt::Display for Authorization<S> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt::Display::fmt(&self.0, f)
}
}
diff --git a/src/actix_web_httpauth/headers/authorization/scheme/basic.rs.html b/src/actix_web_httpauth/headers/authorization/scheme/basic.rs.html
index aa5300999..c3dd49472 100644
--- a/src/actix_web_httpauth/headers/authorization/scheme/basic.rs.html
+++ b/src/actix_web_httpauth/headers/authorization/scheme/basic.rs.html
@@ -222,7 +222,7 @@
- pub fn new<U, P>(user_id: U, password: Option<P>) -> Basic
+ pub fn new<U, P>(user_id: U, password: Option<P>) -> Basic
where
U: Into<Cow<'static, str>>,
P: Into<Cow<'static, str>>,
@@ -234,18 +234,18 @@
}
- pub fn user_id(&self) -> &Cow<'static, str> {
+ pub fn user_id(&self) -> &Cow<'static, str> {
&self.user_id
}
- pub fn password(&self) -> Option<&Cow<'static, str>> {
+ pub fn password(&self) -> Option<&Cow<'static, str>> {
self.password.as_ref()
}
}
impl Scheme for Basic {
- fn parse(header: &HeaderValue) -> Result<Self, ParseError> {
+ fn parse(header: &HeaderValue) -> Result<Self, ParseError> {
if header.len() < 7 {
return Err(ParseError::Invalid);
@@ -253,8 +253,8 @@
let mut parts = header.to_str()?.splitn(2, ' ');
match parts.next() {
- Some(scheme) if scheme == "Basic" => (),
- _ => return Err(ParseError::MissingScheme),
+ Some(scheme) if scheme == "Basic" => (),
+ _ => return Err(ParseError::MissingScheme),
}
let decoded = base64::decode(parts.next().ok_or(ParseError::Invalid)?)?;
@@ -280,13 +280,13 @@
}
impl fmt::Debug for Basic {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_fmt(format_args!("Basic {}:******", self.user_id))
}
}
impl fmt::Display for Basic {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_fmt(format_args!("Basic {}:******", self.user_id))
}
}
@@ -294,7 +294,7 @@
impl IntoHeaderValue for Basic {
type Error = InvalidHeaderValue;
- fn try_into_value(self) -> Result<HeaderValue, <Self as IntoHeaderValue>::Error> {
+ fn try_into_value(self) -> Result<HeaderValue, <Self as IntoHeaderValue>::Error> {
let mut credentials = BytesMut::with_capacity(
self.user_id.len()
+ 1
diff --git a/src/actix_web_httpauth/headers/authorization/scheme/bearer.rs.html b/src/actix_web_httpauth/headers/authorization/scheme/bearer.rs.html
index d4a06c2b9..e24f6b2fe 100644
--- a/src/actix_web_httpauth/headers/authorization/scheme/bearer.rs.html
+++ b/src/actix_web_httpauth/headers/authorization/scheme/bearer.rs.html
@@ -163,7 +163,7 @@
- pub fn new<T>(token: T) -> Bearer
+ pub fn new<T>(token: T) -> Bearer
where
T: Into<Cow<'static, str>>,
{
@@ -173,13 +173,13 @@
}
- pub fn token(&self) -> &Cow<'static, str> {
+ pub fn token(&self) -> &Cow<'static, str> {
&self.token
}
}
impl Scheme for Bearer {
- fn parse(header: &HeaderValue) -> Result<Self, ParseError> {
+ fn parse(header: &HeaderValue) -> Result<Self, ParseError> {
if header.len() < 8 {
return Err(ParseError::Invalid);
@@ -187,8 +187,8 @@
let mut parts = header.to_str()?.splitn(2, ' ');
match parts.next() {
- Some(scheme) if scheme == "Bearer" => (),
- _ => return Err(ParseError::MissingScheme),
+ Some(scheme) if scheme == "Bearer" => (),
+ _ => return Err(ParseError::MissingScheme),
}
let token = parts.next().ok_or(ParseError::Invalid)?;
@@ -200,13 +200,13 @@
}
impl fmt::Debug for Bearer {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_fmt(format_args!("Bearer ******"))
}
}
impl fmt::Display for Bearer {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_fmt(format_args!("Bearer {}", self.token))
}
}
@@ -214,7 +214,7 @@
impl IntoHeaderValue for Bearer {
type Error = InvalidHeaderValue;
- fn try_into_value(self) -> Result<HeaderValue, <Self as IntoHeaderValue>::Error> {
+ fn try_into_value(self) -> Result<HeaderValue, <Self as IntoHeaderValue>::Error> {
let mut buffer = BytesMut::with_capacity(7 + self.token.len());
buffer.put(&b"Bearer "[..]);
buffer.extend_from_slice(self.token.as_bytes());
diff --git a/src/actix_web_httpauth/headers/authorization/scheme/mod.rs.html b/src/actix_web_httpauth/headers/authorization/scheme/mod.rs.html
index 588465fff..ffb45c41a 100644
--- a/src/actix_web_httpauth/headers/authorization/scheme/mod.rs.html
+++ b/src/actix_web_httpauth/headers/authorization/scheme/mod.rs.html
@@ -26,7 +26,7 @@
pub trait Scheme: IntoHeaderValue + Debug + Display + Clone + Send + Sync {
- fn parse(header: &HeaderValue) -> Result<Self, ParseError>;
+ fn parse(header: &HeaderValue) -> Result<Self, ParseError>;
}
diff --git a/src/actix_web_httpauth/headers/www_authenticate/challenge/basic.rs.html b/src/actix_web_httpauth/headers/www_authenticate/challenge/basic.rs.html
index 822f2319a..74f39eac4 100644
--- a/src/actix_web_httpauth/headers/www_authenticate/challenge/basic.rs.html
+++ b/src/actix_web_httpauth/headers/www_authenticate/challenge/basic.rs.html
@@ -186,7 +186,7 @@
- pub fn new() -> Basic {
+ pub fn new() -> Basic {
Default::default()
}
@@ -204,7 +204,7 @@
- pub fn with_realm<T>(value: T) -> Basic
+ pub fn with_realm<T>(value: T) -> Basic
where
T: Into<Cow<'static, str>>,
{
@@ -216,7 +216,7 @@
#[doc(hidden)]
impl Challenge for Basic {
- fn to_bytes(&self) -> Bytes {
+ fn to_bytes(&self) -> Bytes {
let length = 5 + self.realm.as_ref().map_or(0, |realm| realm.len() + 9);
let mut buffer = BytesMut::with_capacity(length);
@@ -232,7 +232,7 @@
}
impl fmt::Display for Basic {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
let bytes = self.to_bytes();
let repr = str::from_utf8(&bytes)
@@ -246,7 +246,7 @@
impl IntoHeaderValue for Basic {
type Error = InvalidHeaderValue;
- fn try_into_value(self) -> Result<HeaderValue, <Self as IntoHeaderValue>::Error> {
+ fn try_into_value(self) -> Result<HeaderValue, <Self as IntoHeaderValue>::Error> {
HeaderValue::from_maybe_shared(self.to_bytes())
}
}
diff --git a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/builder.rs.html b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/builder.rs.html
index b5ead7122..f286b6245 100644
--- a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/builder.rs.html
+++ b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/builder.rs.html
@@ -76,7 +76,7 @@
impl BearerBuilder {
- pub fn scope<T>(mut self, value: T) -> Self
+ pub fn scope<T>(mut self, value: T) -> Self
where
T: Into<Cow<'static, str>>,
{
@@ -85,7 +85,7 @@
}
- pub fn realm<T>(mut self, value: T) -> Self
+ pub fn realm<T>(mut self, value: T) -> Self
where
T: Into<Cow<'static, str>>,
{
@@ -94,13 +94,13 @@
}
- pub fn error(mut self, value: Error) -> Self {
+ pub fn error(mut self, value: Error) -> Self {
self.0.error = Some(value);
self
}
- pub fn error_description<T>(mut self, value: T) -> Self
+ pub fn error_description<T>(mut self, value: T) -> Self
where
T: Into<Cow<'static, str>>,
{
@@ -111,7 +111,7 @@
- pub fn error_uri<T>(mut self, value: T) -> Self
+ pub fn error_uri<T>(mut self, value: T) -> Self
where
T: Into<Cow<'static, str>>,
{
@@ -120,7 +120,7 @@
}
- pub fn finish(self) -> Bearer {
+ pub fn finish(self) -> Bearer {
self.0
}
}
diff --git a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/challenge.rs.html b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/challenge.rs.html
index 8f98b237c..c63dcbbac 100644
--- a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/challenge.rs.html
+++ b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/challenge.rs.html
@@ -197,14 +197,14 @@
- pub fn build() -> BearerBuilder {
+ pub fn build() -> BearerBuilder {
BearerBuilder::default()
}
}
#[doc(hidden)]
impl Challenge for Bearer {
- fn to_bytes(&self) -> Bytes {
+ fn to_bytes(&self) -> Bytes {
let desc_uri_required = self
.error_description
.as_ref()
@@ -258,7 +258,7 @@
}
impl fmt::Display for Bearer {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
let bytes = self.to_bytes();
let repr = str::from_utf8(&bytes)
@@ -272,7 +272,7 @@
impl IntoHeaderValue for Bearer {
type Error = InvalidHeaderValue;
- fn try_into_value(self) -> Result<HeaderValue, <Self as IntoHeaderValue>::Error> {
+ fn try_into_value(self) -> Result<HeaderValue, <Self as IntoHeaderValue>::Error> {
HeaderValue::from_maybe_shared(self.to_bytes())
}
}
diff --git a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/errors.rs.html b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/errors.rs.html
index a23d0a471..7767929f7 100644
--- a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/errors.rs.html
+++ b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/errors.rs.html
@@ -76,27 +76,27 @@
#[allow(clippy::trivially_copy_pass_by_ref)]
- pub fn status_code(&self) -> StatusCode {
+ pub fn status_code(&self) -> StatusCode {
match self {
- Error::InvalidRequest => StatusCode::BAD_REQUEST,
- Error::InvalidToken => StatusCode::UNAUTHORIZED,
- Error::InsufficientScope => StatusCode::FORBIDDEN,
+ Error::InvalidRequest => StatusCode::BAD_REQUEST,
+ Error::InvalidToken => StatusCode::UNAUTHORIZED,
+ Error::InsufficientScope => StatusCode::FORBIDDEN,
}
}
#[doc(hidden)]
#[allow(clippy::trivially_copy_pass_by_ref)]
- pub fn as_str(&self) -> &str {
+ pub fn as_str(&self) -> &str {
match self {
- Error::InvalidRequest => "invalid_request",
- Error::InvalidToken => "invalid_token",
- Error::InsufficientScope => "insufficient_scope",
+ Error::InvalidRequest => "invalid_request",
+ Error::InvalidToken => "invalid_token",
+ Error::InsufficientScope => "insufficient_scope",
}
}
}
impl fmt::Display for Error {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}
diff --git a/src/actix_web_httpauth/headers/www_authenticate/challenge/mod.rs.html b/src/actix_web_httpauth/headers/www_authenticate/challenge/mod.rs.html
index a046d72de..aab4d07c6 100644
--- a/src/actix_web_httpauth/headers/www_authenticate/challenge/mod.rs.html
+++ b/src/actix_web_httpauth/headers/www_authenticate/challenge/mod.rs.html
@@ -22,7 +22,7 @@
pub trait Challenge: IntoHeaderValue + Debug + Display + Clone + Send + Sync {
- fn to_bytes(&self) -> Bytes;
+ fn to_bytes(&self) -> Bytes;
}
diff --git a/src/actix_web_httpauth/headers/www_authenticate/header.rs.html b/src/actix_web_httpauth/headers/www_authenticate/header.rs.html
index b33b5461f..80e4ebe71 100644
--- a/src/actix_web_httpauth/headers/www_authenticate/header.rs.html
+++ b/src/actix_web_httpauth/headers/www_authenticate/header.rs.html
@@ -44,11 +44,11 @@
pub struct WwwAuthenticate<C: Challenge>(pub C);
impl<C: Challenge> Header for WwwAuthenticate<C> {
- fn name() -> HeaderName {
+ fn name() -> HeaderName {
WWW_AUTHENTICATE
}
- fn parse<T: HttpMessage>(_msg: &T) -> Result<Self, ParseError> {
+ fn parse<T: HttpMessage>(_msg: &T) -> Result<Self, ParseError> {
unimplemented!()
}
}
@@ -56,7 +56,7 @@
impl<C: Challenge> IntoHeaderValue for WwwAuthenticate<C> {
type Error = <C as IntoHeaderValue>::Error;
- fn try_into_value(self) -> Result<HeaderValue, <Self as IntoHeaderValue>::Error> {
+ fn try_into_value(self) -> Result<HeaderValue, <Self as IntoHeaderValue>::Error> {
self.0.try_into_value()
}
}
diff --git a/src/actix_web_httpauth/middleware.rs.html b/src/actix_web_httpauth/middleware.rs.html
index e4d478d57..4310c85fc 100644
--- a/src/actix_web_httpauth/middleware.rs.html
+++ b/src/actix_web_httpauth/middleware.rs.html
@@ -348,12 +348,12 @@
impl<T, F, O> HttpAuthentication<T, F>
where
T: AuthExtractor,
- F: Fn(ServiceRequest, T) -> O,
+ F: Fn(ServiceRequest, T) -> O,
O: Future<Output = Result<ServiceRequest, Error>>,
{
- pub fn with_fn(process_fn: F) -> HttpAuthentication<T, F> {
+ pub fn with_fn(process_fn: F) -> HttpAuthentication<T, F> {
HttpAuthentication {
process_fn: Arc::new(process_fn),
_extractor: PhantomData,
@@ -363,7 +363,7 @@
impl<F, O> HttpAuthentication<basic::BasicAuth, F>
where
- F: Fn(ServiceRequest, basic::BasicAuth) -> O,
+ F: Fn(ServiceRequest, basic::BasicAuth) -> O,
O: Future<Output = Result<ServiceRequest, Error>>,
{
@@ -388,14 +388,14 @@
- pub fn basic(process_fn: F) -> Self {
+ pub fn basic(process_fn: F) -> Self {
Self::with_fn(process_fn)
}
}
impl<F, O> HttpAuthentication<bearer::BearerAuth, F>
where
- F: Fn(ServiceRequest, bearer::BearerAuth) -> O,
+ F: Fn(ServiceRequest, bearer::BearerAuth) -> O,
O: Future<Output = Result<ServiceRequest, Error>>,
{
@@ -423,7 +423,7 @@
- pub fn bearer(process_fn: F) -> Self {
+ pub fn bearer(process_fn: F) -> Self {
Self::with_fn(process_fn)
}
}
@@ -432,7 +432,7 @@
where
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error> + 'static,
S::Future: 'static,
- F: Fn(ServiceRequest, T) -> O + 'static,
+ F: Fn(ServiceRequest, T) -> O + 'static,
O: Future<Output = Result<ServiceRequest, Error>> + 'static,
T: AuthExtractor + 'static,
B: MessageBody + 'static,
@@ -444,7 +444,7 @@
type InitError = ();
type Future = future::Ready<Result<Self::Transform, Self::InitError>>;
- fn new_transform(&self, service: S) -> Self::Future {
+ fn new_transform(&self, service: S) -> Self::Future {
future::ok(AuthenticationMiddleware {
service: Rc::new(service),
process_fn: self.process_fn.clone(),
@@ -467,7 +467,7 @@
where
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error> + 'static,
S::Future: 'static,
- F: Fn(ServiceRequest, T) -> O + 'static,
+ F: Fn(ServiceRequest, T) -> O + 'static,
O: Future<Output = Result<ServiceRequest, Error>> + 'static,
T: AuthExtractor + 'static,
B: MessageBody + 'static,
@@ -479,15 +479,15 @@
actix_service::forward_ready!(service);
- fn call(&self, req: ServiceRequest) -> Self::Future {
+ fn call(&self, req: ServiceRequest) -> Self::Future {
let process_fn = Arc::clone(&self.process_fn);
let service = Rc::clone(&self.service);
async move {
let (req, credentials) = match Extract::<T>::new(req).await {
- Ok(req) => req,
- Err((err, req)) => {
+ Ok(req) => req,
+ Err((err, req)) => {
return Ok(req.error_response(err));
}
};
@@ -508,11 +508,11 @@
struct Extract<T> {
req: Option<ServiceRequest>,
f: Option<LocalBoxFuture<'static, Result<T, Error>>>,
- _extractor: PhantomData<fn() -> T>,
+ _extractor: PhantomData<fn() -> T>,
}
impl<T> Extract<T> {
- pub fn new(req: ServiceRequest) -> Self {
+ pub fn new(req: ServiceRequest) -> Self {
Extract {
req: Some(req),
f: None,
@@ -529,7 +529,7 @@
{
type Output = Result<(ServiceRequest, T), (Error, ServiceRequest)>;
- fn poll(mut self: Pin<&mut Self>, ctx: &mut Context<'_>) -> Poll<Self::Output> {
+ fn poll(mut self: Pin<&mut Self>, ctx: &mut Context<'_>) -> Poll<Self::Output> {
if self.f.is_none() {
let req = self.req.as_ref().expect("Extract future was polled twice!");
let f = T::from_service_request(req).map_err(Into::into);
diff --git a/src/actix_web_httpauth/utils.rs.html b/src/actix_web_httpauth/utils.rs.html
index c761ec401..6ab935a19 100644
--- a/src/actix_web_httpauth/utils.rs.html
+++ b/src/actix_web_httpauth/utils.rs.html
@@ -124,7 +124,7 @@
}
impl<'a> Quoted<'a> {
- pub fn new(s: &'a str) -> Quoted<'_> {
+ pub fn new(s: &'a str) -> Quoted<'_> {
Quoted {
inner: s.split('"').peekable(),
state: State::YieldStr,
@@ -135,21 +135,21 @@
impl<'a> Iterator for Quoted<'a> {
type Item = &'a str;
- fn next(&mut self) -> Option<Self::Item> {
+ fn next(&mut self) -> Option<Self::Item> {
match self.state {
- State::YieldStr => match self.inner.next() {
- Some(s) => {
+ State::YieldStr => match self.inner.next() {
+ Some(s) => {
self.state = State::YieldQuote;
Some(s)
}
- None => None,
+ None => None,
},
- State::YieldQuote => match self.inner.peek() {
- Some(_) => {
+ State::YieldQuote => match self.inner.peek() {
+ Some(_) => {
self.state = State::YieldStr;
Some("\\\"")
}
- None => None,
+ None => None,
},
}
}