diff --git a/actix_cors/all.html b/actix_cors/all.html index 78949e827..00a80b198 100644 --- a/actix_cors/all.html +++ b/actix_cors/all.html @@ -1,2 +1,2 @@ -
#[non_exhaustive]
+CorsError in actix_cors - Rust Enum actix_cors::CorsError
source · #[non_exhaustive]
pub enum CorsError {
WildcardOrigin,
MissingOrigin,
@@ -18,13 +18,13 @@ pub enum CorsError {
OriginNotAllowed
Origin is not allowed to make this request.
MethodNotAllowed
Request method is not allowed.
HeadersNotAllowed
One or more request headers are not allowed.
-Trait Implementations
sourceimpl Error for CorsError
1.30.0 · sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()sourceimpl ResponseError for CorsError
sourcefn status_code(&self) -> StatusCode
Returns appropriate status code for error. Read moresourcefn error_response(&self) -> HttpResponse
Creates full response for error. Read moreAuto Trait Implementations
impl RefUnwindSafe for CorsError
impl Send for CorsError
impl Sync for CorsError
impl Unpin for CorsError
impl UnwindSafe for CorsError
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> From<T> for T
const: unstable · sourcefn from(t: T) -> T
Returns the argument unchanged.
+Trait Implementations
sourceimpl Error for CorsError
1.30.0 · sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()sourceimpl ResponseError for CorsError
sourcefn status_code(&self) -> StatusCode
Returns appropriate status code for error. Read moresourcefn error_response(&self) -> HttpResponse
Creates full response for error. Read moreAuto Trait Implementations
impl RefUnwindSafe for CorsError
impl Send for CorsError
impl Sync for CorsError
impl Unpin for CorsError
impl UnwindSafe for CorsError
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
\ No newline at end of file
+WithDispatch
wrapper. Read more
Cross-Origin Resource Sharing (CORS) controls for Actix Web.
+Cross-Origin Resource Sharing (CORS) controls for Actix Web.
This middleware can be applied to both applications and resources. Once built, a Cors
builder can be used as an argument for Actix Web’s App::wrap()
, Scope::wrap()
, or
Resource::wrap()
methods.
use actix_cors::Cors;
use actix_web::{get, http, web, App, HttpRequest, HttpResponse, HttpServer};
-#[get("/index.html")]
+#[get("/index.html")]
async fn index(req: HttpRequest) -> &'static str {
"<p>Hello World!</p>"
}
-#[actix_web::main]
+#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| {
let cors = Cors::default()
@@ -42,4 +42,4 @@ the draft spec until it is finalized.
Ok(())
}
pub struct Cors { /* private fields */ }
Builder for CORS middleware.
+pub struct Cors { /* private fields */ }
Builder for CORS middleware.
To construct a CORS middleware, call Cors::default()
to create a blank, restrictive builder.
Then use any of the builder methods to customize CORS behavior.
The alternative Cors::permissive()
constructor is available for local development, allowing
@@ -126,4 +126,4 @@ not supported. No max age (will use browser’s default).
From<T> for U
chooses to do.
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_identity/all.html b/actix_identity/all.html
index 9a69fa085..cd865339b 100644
--- a/actix_identity/all.html
+++ b/actix_identity/all.html
@@ -1 +1 @@
-#[non_exhaustive]
+LogoutBehaviour in actix_identity::config - Rust Enum actix_identity::config::LogoutBehaviour
source · #[non_exhaustive]
pub enum LogoutBehaviour {
PurgeSession,
DeleteIdentityKeys,
@@ -19,4 +19,4 @@ is not tied to the user’s identity and should be retained after logout.
From<T> for U
chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_identity/config/index.html b/actix_identity/config/index.html
index cc40adc6a..16cda67b1 100644
--- a/actix_identity/config/index.html
+++ b/actix_identity/config/index.html
@@ -1,4 +1,4 @@
-Configuration options to tune the behaviour of IdentityMiddleware
.
Configuration options to tune the behaviour of IdentityMiddleware
.
IdentityMiddleware
instance with custom configuration
parameters.LogoutBehaviour
controls what actions are going to be performed when Identity::logout
is
-invoked.pub struct IdentityMiddlewareBuilder { /* private fields */ }
A fluent builder to construct an IdentityMiddleware
instance with custom configuration
+
pub struct IdentityMiddlewareBuilder { /* private fields */ }
A fluent builder to construct an IdentityMiddleware
instance with custom configuration
parameters.
Use IdentityMiddleware::builder
to get started!
Determines how Identity::logout
affects the current session.
From<T> for U
chooses to do.
WithDispatch
wrapper. Read moreIdentity management for Actix Web.
+Identity management for Actix Web.
actix-identity
can be used to track identity of a user across multiple requests. It is built
on top of HTTP sessions, via actix-session
.
actix
use actix_identity::IdentityMiddleware;
use actix_session::{storage::RedisSessionStore, SessionMiddleware};
-#[actix_web::main]
+#[actix_web::main]
async fn main() {
let secret_key = Key::generate();
let redis_store = RedisSessionStore::new("redis://127.0.0.1:6379")
@@ -38,7 +38,7 @@ request handlers:
use actix_identity::Identity;
use actix_session::storage::RedisSessionStore;
-#[get("/")]
+#[get("/")]
async fn index(user: Option<Identity>) -> impl Responder {
if let Some(user) = user {
format!("Welcome! {}", user.id().unwrap())
@@ -47,7 +47,7 @@ request handlers:
}
}
-#[post("/login")]
+#[post("/login")]
async fn login(request: HttpRequest) -> impl Responder {
// Some kind of authentication should happen here
// e.g. password-based, biometric, etc.
@@ -59,7 +59,7 @@ request handlers:
HttpResponse::Ok()
}
-#[post("/logout")]
+#[post("/logout")]
async fn logout(user: Identity) -> impl Responder {
user.logout();
HttpResponse::Ok()
@@ -72,4 +72,4 @@ by customising the configuration for have been inactive for a while (see IdentityMiddlewareBuilder::visit_deadline
;
logged in too long ago (see IdentityMiddlewareBuilder::login_deadline
).
-
IdentityMiddleware
.Identity
instance from various actix-web
’s types.IdentityMiddleware
.Identity
instance from various actix-web
’s types.pub struct Identity(_);
A verified user identity. It can be used as a request extractor.
+pub struct Identity(_);
A verified user identity. It can be used as a request extractor.
The lifecycle of a user identity is tied to the lifecycle of the underlying session. If the session is destroyed (e.g. the session expired), the user identity will be forgotten, de-facto forcing a user log out.
@@ -8,7 +8,7 @@ forcing a user log out. }; use actix_identity::Identity; -#[get("/")] +#[get("/")] async fn index(user: Option<Identity>) -> impl Responder { if let Some(user) = user { format!("Welcome! {}", user.id().unwrap()) @@ -17,13 +17,13 @@ forcing a user log out. } } -#[post("/login")] +#[post("/login")] async fn login(request: HttpRequest) -> impl Responder { Identity::login(&request.extensions(), "User1".into()); HttpResponse::Ok() } -#[post("/logout")] +#[post("/logout")] async fn logout(user: Identity) -> impl Responder { user.logout(); HttpResponse::Ok() @@ -38,7 +38,7 @@ control of the error path.use actix_web::{http::header::LOCATION, get, HttpResponse, Responder};
use actix_identity::Identity;
-#[get("/")]
+#[get("/")]
async fn index(user: Option<Identity>) -> impl Responder {
if let Some(user) = user {
HttpResponse::Ok().finish()
@@ -54,7 +54,7 @@ control of the error path.
use actix_web::{get, Responder};
use actix_identity::Identity;
-#[get("/")]
+#[get("/")]
async fn index(user: Option<Identity>) -> impl Responder {
if let Some(user) = user {
format!("Welcome! {}", user.id().unwrap())
@@ -70,7 +70,7 @@ control of the error path.
use actix_web::{post, Responder, HttpRequest, HttpMessage, HttpResponse};
use actix_identity::Identity;
-#[post("/login")]
+#[post("/login")]
async fn login(request: HttpRequest) -> impl Responder {
Identity::login(&request.extensions(), "User1".into());
HttpResponse::Ok()
@@ -83,7 +83,7 @@ require a valid Identity
use actix_web::{post, Responder, HttpResponse};
use actix_identity::Identity;
-#[post("/logout")]
+#[post("/logout")]
async fn logout(user: Identity) -> impl Responder {
user.logout();
HttpResponse::Ok()
@@ -93,7 +93,7 @@ require a valid Identity
use actix_web::{get, Responder};
use actix_identity::Identity;
-#[get("/")]
+#[get("/")]
async fn index(user: Option<Identity>) -> impl Responder {
if let Some(user) = user {
format!("Welcome! {}", user.id().unwrap())
@@ -109,4 +109,4 @@ require a valid Identity
From<T> for U
chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
\ No newline at end of file
+WithDispatch
wrapper. Read more
pub struct IdentityMiddleware { /* private fields */ }
Identity management middleware.
+pub struct IdentityMiddleware { /* private fields */ }
Identity management middleware.
use actix_web::{cookie::Key, App, HttpServer};
use actix_session::storage::RedisSessionStore;
use actix_identity::{Identity, IdentityMiddleware};
use actix_session::{Session, SessionMiddleware};
-#[actix_web::main]
+#[actix_web::main]
async fn main() {
let secret_key = Key::generate();
let redis_store = RedisSessionStore::new("redis://127.0.0.1:6379").await.unwrap();
@@ -28,4 +28,4 @@
From<T> for U
chooses to do.
WithDispatch
wrapper. Read morepub trait IdentityExt {
+IdentityExt in actix_identity - Rust Trait actix_identity::IdentityExt
source · pub trait IdentityExt {
fn get_identity(&self) -> Result<Identity, Error>;
}
Expand description
Helper trait to retrieve an Identity
instance from various actix-web
’s types.
Required Methods
sourcefn get_identity(&self) -> Result<Identity, Error>
Retrieve the identity attached to the current session, if available.
-Implementations on Foreign Types
sourceimpl IdentityExt for HttpRequest
sourcefn get_identity(&self) -> Result<Identity, Error>
sourceimpl IdentityExt for ServiceRequest
sourcefn get_identity(&self) -> Result<Identity, Error>
sourceimpl<'a> IdentityExt for GuardContext<'a>
sourcefn get_identity(&self) -> Result<Identity, Error>
Implementors
\ No newline at end of file
+
pub const DEFAULT_COOKIE_NAME: &'static str = "sid";
Default cookie name.
-pub const DEFAULT_COOKIE_NAME: &'static str = "sid";
Default cookie name.
+pub const DEFAULT_PERIOD_SECS: u64 = 3600;
Default period (in seconds).
-pub const DEFAULT_PERIOD_SECS: u64 = 3600;
Default period (in seconds).
+pub const DEFAULT_REQUEST_LIMIT: usize = 5000;
Default request limit.
-pub const DEFAULT_REQUEST_LIMIT: usize = 5000;
Default request limit.
+pub const DEFAULT_SESSION_KEY: &'static str = "rate-api-id";
Default session key.
-pub const DEFAULT_SESSION_KEY: &'static str = "rate-api-id";
Default session key.
+pub enum Error {
+Error in actix_limitation - Rust Enum actix_limitation::Error
source · pub enum Error {
Client(RedisError),
LimitExceeded(Status),
Time(ComponentRange),
@@ -9,13 +9,13 @@
LimitExceeded(Status)
Limit is exceeded for a key.
Time(ComponentRange)
Time conversion failed.
Other(String)
Generic error.
-Trait Implementations
sourceimpl Error for Error
sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations
impl !RefUnwindSafe for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl !UnwindSafe for Error
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> From<T> for T
const: unstable · sourcefn from(t: T) -> T
Returns the argument unchanged.
+Trait Implementations
sourceimpl Error for Error
sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations
impl !RefUnwindSafe for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl !UnwindSafe for Error
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
\ No newline at end of file
+WithDispatch
wrapper. Read more
Rate limiter using a fixed window counter for arbitrary keys, backed by Redis for Actix Web.
+Rate limiter using a fixed window counter for arbitrary keys, backed by Redis for Actix Web.
[dependencies]
actix-web = "4"
actix-limitation = "0.4"
pub struct Builder { /* private fields */ }
Rate limiter builder.
+pub struct Builder { /* private fields */ }
Rate limiter builder.
WithDispatch
wrapper. Read morepub struct Limiter { /* private fields */ }
Rate limiter.
+pub struct Limiter { /* private fields */ }
Rate limiter.
WithDispatch
wrapper. Read more#[non_exhaustive]pub struct RateLimiter;
Rate limit middleware.
+#[non_exhaustive]pub struct RateLimiter;
Rate limit middleware.
TransformService
value created by this factoryWithDispatch
wrapper. Read morepub struct Status { /* private fields */ }
A report for a given key containing the limit status.
+pub struct Status { /* private fields */ }
A report for a given key containing the limit status.
WithDispatch
wrapper. Read morepub enum ProtoBufPayloadError {
+ProtoBufPayloadError in actix_protobuf - Rust pub enum ProtoBufPayloadError {
Overflow,
ContentType,
- Serialize(ProtoBufEncodeError),
- Deserialize(ProtoBufDecodeError),
+ Serialize(ProtoBufEncodeError),
+ Deserialize(ProtoBufDecodeError),
Payload(PayloadError),
}
Variants
Overflow
Payload size is bigger than 256k
ContentType
Content type error
-Serialize(ProtoBufEncodeError)
Serialize error
-Deserialize(ProtoBufDecodeError)
Deserialize error
+Serialize(ProtoBufEncodeError)
Serialize error
+Deserialize(ProtoBufDecodeError)
Deserialize error
Payload(PayloadError)
Payload error
-Trait Implementations
sourceimpl Debug for ProtoBufPayloadError
sourceimpl Display for ProtoBufPayloadError
sourceimpl From<DecodeError> for ProtoBufPayloadError
sourcefn from(err: ProtoBufDecodeError) -> ProtoBufPayloadError
Converts to this type from the input type.sourceimpl From<PayloadError> for ProtoBufPayloadError
sourcefn from(err: PayloadError) -> ProtoBufPayloadError
Converts to this type from the input type.sourceimpl ResponseError for ProtoBufPayloadError
sourcefn error_response(&self) -> HttpResponse
Creates full response for error. Read morefn status_code(&self) -> StatusCode
Returns appropriate status code for error. Read moreAuto Trait Implementations
impl !RefUnwindSafe for ProtoBufPayloadError
impl Send for ProtoBufPayloadError
impl Sync for ProtoBufPayloadError
impl Unpin for ProtoBufPayloadError
impl !UnwindSafe for ProtoBufPayloadError
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> From<T> for T
const: unstable · sourcefn from(t: T) -> T
Returns the argument unchanged.
+Trait Implementations
sourceimpl Debug for ProtoBufPayloadError
sourceimpl Display for ProtoBufPayloadError
sourceimpl From<DecodeError> for ProtoBufPayloadError
sourcefn from(err: ProtoBufDecodeError) -> ProtoBufPayloadError
Converts to this type from the input type.sourceimpl From<PayloadError> for ProtoBufPayloadError
sourcefn from(err: PayloadError) -> ProtoBufPayloadError
Converts to this type from the input type.sourceimpl ResponseError for ProtoBufPayloadError
sourcefn error_response(&self) -> HttpResponse
Creates full response for error. Read morefn status_code(&self) -> StatusCode
Returns appropriate status code for error. Read moreAuto Trait Implementations
impl !RefUnwindSafe for ProtoBufPayloadError
impl Send for ProtoBufPayloadError
impl Sync for ProtoBufPayloadError
impl Unpin for ProtoBufPayloadError
impl !UnwindSafe for ProtoBufPayloadError
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
\ No newline at end of file
+WithDispatch
wrapper. Read more
Protobuf payload extractor for Actix Web.
+pub struct ProtoBuf<T: Message>(pub T);
0: T
Self
. Read moreSelf
from request parts asynchronously.Returns the argument unchanged.
+pub struct ProtoBuf<T: Message>(pub T);
0: T
Self
. Read moreSelf
from request parts asynchronously.resource_path
.WithDispatch
wrapper. Read morepub struct ProtoBufConfig { /* private fields */ }
Change max size of payload. By default max size is 256Kb
+pub struct ProtoBufConfig { /* private fields */ }
WithDispatch
wrapper. Read moreCreate ProtoBufMessage
for request.
Future
. Read moreWithDispatch
wrapper. Read morepub trait ProtoBufResponseBuilder {
- fn protobuf<T: Message>(&mut self, value: T) -> Result<HttpResponse, Error>;
-}
pub trait ProtoBufResponseBuilder {
+ fn protobuf<T: Message>(&mut self, value: T) -> Result<HttpResponse, Error>;
+}
pub enum Error {
+Error in actix_redis - Rust Enum actix_redis::Error
source · pub enum Error {
Redis(Error),
NotConnected,
Disconnected,
}
Expand description
General purpose actix-redis
error.
Variants
Redis(Error)
NotConnected
Receiving message during reconnecting.
Disconnected
Cancel all waiters when connection is dropped.
-Trait Implementations
sourceimpl Error for Error
sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()sourceimpl ResponseError for Error
fn status_code(&self) -> StatusCode
Returns appropriate status code for error. Read morefn error_response(&self) -> HttpResponse<BoxBody>
Creates full response for error. Read moreAuto Trait Implementations
impl !RefUnwindSafe for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl !UnwindSafe for Error
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> From<T> for T
const: unstable · sourcefn from(t: T) -> T
Returns the argument unchanged.
+Trait Implementations
sourceimpl Error for Error
sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()sourceimpl ResponseError for Error
fn status_code(&self) -> StatusCode
Returns appropriate status code for error. Read morefn error_response(&self) -> HttpResponse<BoxBody>
Creates full response for error. Read moreAuto Trait Implementations
impl !RefUnwindSafe for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl !UnwindSafe for Error
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
\ No newline at end of file
+WithDispatch
wrapper. Read more
pub enum RespError {
+RespError in actix_redis - Rust Enum actix_redis::RespError
pub enum RespError {
Internal(String),
IO(Error),
Resp(String, Option<RespValue>),
@@ -16,13 +16,13 @@ chains of futures; but it occurring at runtime should be considered a catastroph
failure.
If any error is propagated this way that needs to be handled, then it should be made into
a proper option.
-
Trait Implementations
impl Error for Error
fn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations
impl !RefUnwindSafe for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl !UnwindSafe for Error
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> From<T> for T
const: unstable · sourcefn from(t: T) -> T
Returns the argument unchanged.
+Trait Implementations
impl Error for Error
fn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations
impl !RefUnwindSafe for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl !UnwindSafe for Error
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
\ No newline at end of file
+WithDispatch
wrapper. Read more
pub enum RespValue {
+RespValue in actix_redis - Rust
key
and return true
if they are equal.WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_redis/index.html b/actix_redis/index.html
index 107c7049d..2973141f6 100644
--- a/actix_redis/index.html
+++ b/actix_redis/index.html
@@ -1,3 +1,3 @@
-Redis integration for actix
.
Redis integration for actix
.
Into<RespValue>
.Into<RespValue>
.macro_rules! resp_array {
+resp_array in actix_redis - Rust Macro actix_redis::resp_array
macro_rules! resp_array {
($($e:expr),* $(,)?) => { ... };
}
Expand description
Macro to create a RESP array, useful for preparing commands to send. Elements can be any type, or a mixture
@@ -6,7 +6,7 @@ of types, that satisfy Into<RespValue>
.
As a general rule, if a value is moved, the data can be deconstructed (if appropriate, e.g. String) and the raw
data moved into the corresponding RespValue
. If a reference is provided, the data will be copied instead.
Examples
-#[macro_use]
+#[macro_use]
extern crate redis_async;
fn main() {
@@ -15,11 +15,11 @@ data moved into the corresponding RespValue
. If a reference is pro
}
For variable length Redis commands:
-#[macro_use]
+#[macro_use]
extern crate redis_async;
fn main() {
let data = vec!["data", "from", "somewhere", "else"];
let command = resp_array!["RPUSH", "mykey"].append(data);
}
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/actix_redis/struct.Command.html b/actix_redis/struct.Command.html
index 1acd82980..2a212df65 100644
--- a/actix_redis/struct.Command.html
+++ b/actix_redis/struct.Command.html
@@ -1,4 +1,4 @@
-Command in actix_redis - Rust Struct actix_redis::Command
source · [−]pub struct Command(pub RespValue);
Expand description
Command for sending data to Redis.
+Command in actix_redis - Rust Struct actix_redis::Command
source · pub struct Command(pub RespValue);
Expand description
Command for sending data to Redis.
Tuple Fields
0: RespValue
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Command
impl Send for Command
impl Sync for Command
impl Unpin for Command
impl UnwindSafe for Command
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
From<T> for U chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
WithDispatch
wrapper. Read morepub struct RedisActor { /* private fields */ }
Redis communication actor.
+pub struct RedisActor { /* private fields */ }
Redis communication actor.
Start new Supervisor
with RedisActor
.
Actor::Stopping
state. Read moreWithDispatch
wrapper. Read morepub enum CookieContentSecurity {
+CookieContentSecurity in actix_session::config - Rust pub enum CookieContentSecurity {
Private,
Signed,
}
Expand description
Determines how to secure the content of the session cookie.
@@ -18,4 +18,4 @@ tamper with the cookie content, but they can read it.
From<T> for U
chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_session/config/enum.SessionLifecycle.html b/actix_session/config/enum.SessionLifecycle.html
index 22febbe8a..bcade24e5 100644
--- a/actix_session/config/enum.SessionLifecycle.html
+++ b/actix_session/config/enum.SessionLifecycle.html
@@ -1,5 +1,5 @@
-#[non_exhaustive]
+SessionLifecycle in actix_session::config - Rust Enum actix_session::config::SessionLifecycle
source · #[non_exhaustive]
pub enum SessionLifecycle {
BrowserSession(BrowserSession),
PersistentSession(PersistentSession),
@@ -21,4 +21,4 @@ attribute. They do not disappear when the current browser session ends.
From<T> for U
chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_session/config/enum.TtlExtensionPolicy.html b/actix_session/config/enum.TtlExtensionPolicy.html
index 6686098cd..b9278a8a3 100644
--- a/actix_session/config/enum.TtlExtensionPolicy.html
+++ b/actix_session/config/enum.TtlExtensionPolicy.html
@@ -1,5 +1,5 @@
-#[non_exhaustive]
+TtlExtensionPolicy in actix_session::config - Rust Enum actix_session::config::TtlExtensionPolicy
source · #[non_exhaustive]
pub enum TtlExtensionPolicy {
OnEveryRequest,
OnStateChanges,
@@ -25,4 +25,4 @@ your server.
From<T> for U
chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_session/config/index.html b/actix_session/config/index.html
index c5431811d..c259a847f 100644
--- a/actix_session/config/index.html
+++ b/actix_session/config/index.html
@@ -1,4 +1,4 @@
-Configuration options to tune the behaviour of SessionMiddleware
.
Configuration options to tune the behaviour of SessionMiddleware
.
SessionMiddleware
builder.SessionMiddleware
builder.pub struct BrowserSession { /* private fields */ }
A session lifecycle strategy where the session cookie expires when the +
pub struct BrowserSession { /* private fields */ }
A session lifecycle strategy where the session cookie expires when the browser’s current session ends.
When does a browser session end? It depends on the browser. Chrome, for example, will often
continue running in the background when the browser is closed—session cookies are not deleted
@@ -34,4 +34,4 @@ specifying a more aggressive state TTL extension policy - check out
From<T> for U
chooses to do.
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_session/config/struct.PersistentSession.html b/actix_session/config/struct.PersistentSession.html
index 826a06a99..044e16d79 100644
--- a/actix_session/config/struct.PersistentSession.html
+++ b/actix_session/config/struct.PersistentSession.html
@@ -1,5 +1,5 @@
-pub struct PersistentSession { /* private fields */ }
A session lifecycle strategy where the session cookie will be persistent.
+pub struct PersistentSession { /* private fields */ }
A session lifecycle strategy where the session cookie will be persistent.
Persistent cookies have a pre-determined expiration, specified via the Max-Age
or Expires
attribute. They do not disappear when the current browser session ends.
Due to its Into<SessionLifecycle>
implementation, a PersistentSession
can be passed directly
@@ -34,4 +34,4 @@ See TtlE
From<T> for U
chooses to do.
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_session/config/struct.SessionMiddlewareBuilder.html b/actix_session/config/struct.SessionMiddlewareBuilder.html
index fd3ab63ca..f79820223 100644
--- a/actix_session/config/struct.SessionMiddlewareBuilder.html
+++ b/actix_session/config/struct.SessionMiddlewareBuilder.html
@@ -1,5 +1,5 @@
-pub struct SessionMiddlewareBuilder<Store: SessionStore> { /* private fields */ }
A fluent, customized SessionMiddleware
builder.
pub struct SessionMiddlewareBuilder<Store: SessionStore> { /* private fields */ }
A fluent, customized SessionMiddleware
builder.
Set the name of the cookie used to store the session ID.
Defaults to id
.
Set the Secure
attribute for the cookie used to store the session ID.
From<T> for U
chooses to do.
WithDispatch
wrapper. Read morepub enum SessionStatus {
+SessionStatus in actix_session - Rust Enum actix_session::SessionStatus
source · pub enum SessionStatus {
Changed,
Purged,
Renewed,
@@ -23,4 +23,4 @@ sufficient, and should not be overridden without very good reason. From<T> for U
chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_session/index.html b/actix_session/index.html
index d082c1fe1..cc7ee4ae1 100644
--- a/actix_session/index.html
+++ b/actix_session/index.html
@@ -1,5 +1,5 @@
-Session management for Actix Web.
+Session management for Actix Web.
The HTTP protocol, at a first glance, is stateless: the client sends a request, the server
parses its content, performs some processing and returns a response. The outcome is only
influenced by the provided inputs (i.e. the request content) and whatever state the server
@@ -37,7 +37,7 @@ as a middleware on your App
:
You can implement your own session storage backend using the SessionStore
trait.
SessionMiddleware
.Session::get
.Session::insert
.Session
.Session
object from various actix-web
types (e.g. HttpRequest
,
-ServiceRequest
, ServiceResponse
).ServiceRequest
, ServiceResponse
).pub enum LoadError {
+LoadError in actix_session::storage - Rust Enum actix_session::storage::LoadError
source · Expand description
Possible failures modes for SessionStore::load
.
Variants
Deserialization(Error)
Failed to deserialize session state.
Other(Error)
Something went wrong when retrieving the session state.
-Trait Implementations
sourceimpl Error for LoadError
sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations
impl !RefUnwindSafe for LoadError
impl Send for LoadError
impl Sync for LoadError
impl Unpin for LoadError
impl !UnwindSafe for LoadError
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> From<T> for T
const: unstable · sourcefn from(t: T) -> T
Returns the argument unchanged.
+Trait Implementations
sourceimpl Error for LoadError
sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations
impl !RefUnwindSafe for LoadError
impl Send for LoadError
impl Sync for LoadError
impl Unpin for LoadError
impl !UnwindSafe for LoadError
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
\ No newline at end of file
+WithDispatch
wrapper. Read more
pub enum SaveError {
+SaveError in actix_session::storage - Rust Enum actix_session::storage::SaveError
source · Expand description
Possible failures modes for SessionStore::save
.
Variants
Serialization(Error)
Failed to serialize session state.
Other(Error)
Something went wrong when persisting the session state.
-Trait Implementations
sourceimpl Error for SaveError
sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations
impl !RefUnwindSafe for SaveError
impl Send for SaveError
impl Sync for SaveError
impl Unpin for SaveError
impl !UnwindSafe for SaveError
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> From<T> for T
const: unstable · sourcefn from(t: T) -> T
Returns the argument unchanged.
+Trait Implementations
sourceimpl Error for SaveError
sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations
impl !RefUnwindSafe for SaveError
impl Send for SaveError
impl Sync for SaveError
impl Unpin for SaveError
impl !UnwindSafe for SaveError
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
\ No newline at end of file
+WithDispatch
wrapper. Read more
pub enum UpdateError {
+UpdateError in actix_session::storage - Rust Enum actix_session::storage::UpdateError
source · Expand description
Possible failures modes for SessionStore::update
.
Variants
Serialization(Error)
Failed to serialize session state.
Other(Error)
Something went wrong when updating the session state.
-Trait Implementations
sourceimpl Debug for UpdateError
sourceimpl Display for UpdateError
sourceimpl Error for UpdateError
sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations
impl !RefUnwindSafe for UpdateError
impl Send for UpdateError
impl Sync for UpdateError
impl Unpin for UpdateError
impl !UnwindSafe for UpdateError
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> From<T> for T
const: unstable · sourcefn from(t: T) -> T
Returns the argument unchanged.
+Trait Implementations
sourceimpl Debug for UpdateError
sourceimpl Display for UpdateError
sourceimpl Error for UpdateError
sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations
impl !RefUnwindSafe for UpdateError
impl Send for UpdateError
impl Sync for UpdateError
impl Unpin for UpdateError
impl !UnwindSafe for UpdateError
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
\ No newline at end of file
+WithDispatch
wrapper. Read more
Pluggable storage backends for session state.
+Pluggable storage backends for session state.
RedisActorSessionStore
instance with custom configuration
parameters.RedisSessionStore
instance with custom configuration
parameters.SessionStore::load
.SessionStore::save
.SessionStore::update
.SessionStore::load
.SessionStore::save
.SessionStore::update
.#[non_exhaustive]pub struct CookieSessionStore;
Use the session key, stored in the session cookie, as storage backend for the session state.
+#[non_exhaustive]pub struct CookieSessionStore;
Use the session key, stored in the session cookie, as storage backend for the session state.
use actix_web::{cookie::Key, web, App, HttpServer, HttpResponse, Error};
use actix_session::{SessionMiddleware, storage::CookieSessionStore};
@@ -9,7 +9,7 @@
// [...]
}
-#[actix_web::main]
+#[actix_web::main]
async fn main() -> std::io::Result<()> {
let secret_key = get_secret_key();
HttpServer::new(move ||
@@ -37,4 +37,4 @@ storage backend.
From<T> for U
chooses to do.
WithDispatch
wrapper. Read morepub struct RedisActorSessionStore { /* private fields */ }
Use Redis as session storage backend.
+pub struct RedisActorSessionStore { /* private fields */ }
Use Redis as session storage backend.
use actix_web::{web, App, HttpServer, HttpResponse, Error};
use actix_session::{SessionMiddleware, storage::RedisActorSessionStore};
@@ -10,7 +10,7 @@
// [...]
}
-#[actix_web::main]
+#[actix_web::main]
async fn main() -> std::io::Result<()> {
let secret_key = get_secret_key();
let redis_connection_string = "127.0.0.1:6379";
@@ -47,4 +47,4 @@ connection string for Redis.
From<T> for U
chooses to do.
WithDispatch
wrapper. Read morepub struct RedisActorSessionStoreBuilder { /* private fields */ }
A fluent builder to construct a RedisActorSessionStore
instance with custom configuration
+
pub struct RedisActorSessionStoreBuilder { /* private fields */ }
A fluent builder to construct a RedisActorSessionStore
instance with custom configuration
parameters.
Set a custom cache key generation strategy, expecting a session key as input.
Finalise the builder and return a RedisActorSessionStore
instance.
From<T> for U
chooses to do.
WithDispatch
wrapper. Read morepub struct RedisSessionStore { /* private fields */ }
Use Redis as session storage backend.
+pub struct RedisSessionStore { /* private fields */ }
Use Redis as session storage backend.
use actix_web::{web, App, HttpServer, HttpResponse, Error};
use actix_session::{SessionMiddleware, storage::RedisSessionStore};
@@ -10,7 +10,7 @@
// [...]
}
-#[actix_web::main]
+#[actix_web::main]
async fn main() -> std::io::Result<()> {
let secret_key = get_secret_key();
let redis_connection_string = "redis://127.0.0.1:6379";
@@ -51,4 +51,4 @@ connection string for Redis.
From<T> for U
chooses to do.
WithDispatch
wrapper. Read morepub struct RedisSessionStoreBuilder { /* private fields */ }
A fluent builder to construct a RedisSessionStore
instance with custom configuration
+
pub struct RedisSessionStoreBuilder { /* private fields */ }
A fluent builder to construct a RedisSessionStore
instance with custom configuration
parameters.
Set a custom cache key generation strategy, expecting a session key as input.
Finalise the builder and return a RedisActorSessionStore
instance.
From<T> for U
chooses to do.
WithDispatch
wrapper. Read morepub struct SessionKey(_);
A session key, the string stored in a client-side cookie to associate a user with its session +
pub struct SessionKey(_);
A session key, the string stored in a client-side cookie to associate a user with its session state on the backend.
Session keys are stored as cookies, therefore they cannot be arbitrary long. Session keys are @@ -20,4 +20,4 @@ sufficient, and should not be overridden without very good reason. From<T> for U chooses to do.
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_session/storage/trait.SessionStore.html b/actix_session/storage/trait.SessionStore.html
index e8805adaa..74a3d45c4 100644
--- a/actix_session/storage/trait.SessionStore.html
+++ b/actix_session/storage/trait.SessionStore.html
@@ -1,5 +1,5 @@
-pub trait SessionStore {
+SessionStore in actix_session::storage - Rust Trait actix_session::storage::SessionStore
source · pub trait SessionStore {
fn load<'life0, 'life1, 'async_trait>(
&'life0 self,
session_key: &'life1 SessionKey
) -> Pin<Box<dyn Future<Output = Result<Option<HashMap<String, String>>, LoadError>> + 'async_trait>>
where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait;
fn save<'life0, 'life1, 'async_trait>(
&'life0 self,
session_state: HashMap<String, String>,
ttl: &'life1 Duration
) -> Pin<Box<dyn Future<Output = Result<SessionKey, SaveError>> + 'async_trait>>
where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait;
fn update<'life0, 'life1, 'async_trait>(
&'life0 self,
session_key: SessionKey,
session_state: HashMap<String, String>,
ttl: &'life1 Duration
) -> Pin<Box<dyn Future<Output = Result<SessionKey, UpdateError>> + 'async_trait>>
where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait;
@@ -16,4 +16,4 @@ is required for implementations, too. In particular, we use the send-optional va
sourcefn update<'life0, 'life1, 'async_trait>(
&'life0 self,
session_key: SessionKey,
session_state: HashMap<String, String>,
ttl: &'life1 Duration
) -> Pin<Box<dyn Future<Output = Result<SessionKey, UpdateError>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Updates the session state associated to a pre-existing session key.
sourcefn update_ttl<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
session_key: &'life1 SessionKey,
ttl: &'life2 Duration
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Updates the TTL of the session state associated to a pre-existing session key.
Implementors
sourceimpl SessionStore for CookieSessionStore
sourceimpl SessionStore for RedisActorSessionStore
sourceimpl SessionStore for RedisSessionStore
pub struct Session(_);
The primary interface to access and modify session state.
+pub struct Session(_);
The primary interface to access and modify session state.
Session
is an extractor—you can specify it as an input type for your
request handlers and it will be automatically extracted from the incoming request.
use actix_session::Session;
-#[get("/")]
+#[get("/")]
async fn index(session: Session) -> Result<impl Responder> {
// access session data
if let Some(count) = session.get::<i32>("counter")? {
@@ -58,4 +58,4 @@ otherwise returns un-deserialized JSON string.
From<T> for U
chooses to do.
WithDispatch
wrapper. Read morepub struct SessionGetError(_);
Error returned by Session::get
.
Returns the argument unchanged.
+pub struct SessionGetError(_);
Error returned by Session::get
.
WithDispatch
wrapper. Read morepub struct SessionInsertError(_);
Error returned by Session::insert
.
Returns the argument unchanged.
+pub struct SessionInsertError(_);
Error returned by Session::insert
.
WithDispatch
wrapper. Read morepub struct SessionMiddleware<Store: SessionStore> { /* private fields */ }
A middleware for session management in Actix Web applications.
+pub struct SessionMiddleware<Store: SessionStore> { /* private fields */ }
A middleware for session management in Actix Web applications.
SessionMiddleware
takes care of a few jobs:
From<T> for U
chooses to do.
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_session/trait.SessionExt.html b/actix_session/trait.SessionExt.html
index 5de6847f0..0350762e0 100644
--- a/actix_session/trait.SessionExt.html
+++ b/actix_session/trait.SessionExt.html
@@ -1,7 +1,7 @@
-pub trait SessionExt {
+SessionExt in actix_session - Rust Trait actix_session::SessionExt
source · pub trait SessionExt {
fn get_session(&self) -> Session;
}
Expand description
Extract a Session
object from various actix-web
types (e.g. HttpRequest
,
ServiceRequest
, ServiceResponse
).
Required Methods
sourcefn get_session(&self) -> Session
Extract a Session
object.
-Implementations on Foreign Types
sourceimpl SessionExt for HttpRequest
sourcefn get_session(&self) -> Session
sourceimpl SessionExt for ServiceRequest
sourcefn get_session(&self) -> Session
sourceimpl SessionExt for ServiceResponse
sourcefn get_session(&self) -> Session
sourceimpl<'a> SessionExt for GuardContext<'a>
sourcefn get_session(&self) -> Session
Implementors
\ No newline at end of file
+
pub enum Backlog {
+Backlog in actix_settings - Rust Enum actix_settings::Backlog
source · pub enum Backlog {
Default,
Manual(usize),
}
Expand description
The maximum number of pending connections.
@@ -20,4 +20,4 @@ sufficient, and should not be overridden without very good reason. From<T> for U chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
sourceimpl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
WithDispatch
wrapper. Read morepub enum Error {
+Error in actix_settings - Rust Enum actix_settings::Error
source · impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_settings/enum.KeepAlive.html b/actix_settings/enum.KeepAlive.html
index 2a53e68a6..9acd15432 100644
--- a/actix_settings/enum.KeepAlive.html
+++ b/actix_settings/enum.KeepAlive.html
@@ -1,5 +1,5 @@
-pub enum KeepAlive {
+KeepAlive in actix_settings - Rust Enum actix_settings::KeepAlive
source · pub enum KeepAlive {
Default,
Disabled,
Os,
@@ -22,4 +22,4 @@ sufficient, and should not be overridden without very good reason. From<T> for U
chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
sourceimpl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
WithDispatch
wrapper. Read morepub enum MaxConnectionRate {
+MaxConnectionRate in actix_settings - Rust pub enum MaxConnectionRate {
Default,
Manual(usize),
}
Expand description
The maximum per-worker concurrent TLS connection limit.
@@ -18,4 +18,4 @@ sufficient, and should not be overridden without very good reason. From<T> for U chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
sourceimpl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
WithDispatch
wrapper. Read morepub enum MaxConnections {
+MaxConnections in actix_settings - Rust Enum actix_settings::MaxConnections
source · pub enum MaxConnections {
Default,
Manual(usize),
}
Expand description
The maximum per-worker number of concurrent connections.
@@ -18,4 +18,4 @@ sufficient, and should not be overridden without very good reason. From<T> for U chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
sourceimpl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
WithDispatch
wrapper. Read morepub enum Mode {
+Mode in actix_settings - Rust Enum actix_settings::Mode
source · pub enum Mode {
Development,
Production,
}
Expand description
Marker of intended deployment environment.
@@ -15,4 +15,4 @@ sufficient, and should not be overridden without very good reason. From<T> for U chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
sourceimpl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
WithDispatch
wrapper. Read morepub enum NumWorkers {
+NumWorkers in actix_settings - Rust Enum actix_settings::NumWorkers
source · pub enum NumWorkers {
Default,
Manual(usize),
}
Expand description
The number of workers that the server should start.
@@ -17,4 +17,4 @@ sufficient, and should not be overridden without very good reason. From<T> for U chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
sourceimpl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
WithDispatch
wrapper. Read morepub enum Timeout {
+Timeout in actix_settings - Rust Enum actix_settings::Timeout
source · impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
sourceimpl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
WithDispatch
wrapper. Read moreEasily manage Actix Web’s settings from a TOML file and environment variables.
+Easily manage Actix Web’s settings from a TOML file and environment variables.
To get started add a Settings::parse_toml("./Server.toml")
call to the
top of your main function. This will create a template file with descriptions of all the
configurable settings. You can change or remove anything in that file and it will be picked up
@@ -11,7 +11,7 @@ the environment using ⓘuse actix_settings::{ApplySettings as _, Mode, Settings};
-#[actix_web::main]
+#[actix_web::main]
async fn main() -> std::io::Result<()> {
let mut settings = Settings::parse_toml("./Server.toml")
.expect("Failed to parse `Settings` from Server.toml");
@@ -49,4 +49,4 @@ the environment using await
}
FromStr
trait that returns [AtError
] errorsBasicSettings
with no defined application-specific settings.FromStr
trait that returns [AtError
] errorsBasicSettings
with no defined application-specific settings.pub struct ActixSettings {impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
sourceimpl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
WithDispatch
wrapper. Read morepub struct Address {
+Address in actix_settings - Rust Struct actix_settings::Address
source · Expand description
A host/port pair for the server to bind to.
@@ -15,4 +15,4 @@ sufficient, and should not be overridden without very good reason. From<T> for U chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
sourceimpl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
WithDispatch
wrapper. Read morepub struct BasicSettings<A> {
+BasicSettings in actix_settings - Rust Struct actix_settings::BasicSettings
source · pub struct BasicSettings<A> {
pub actix: ActixSettings,
pub application: A,
}
Expand description
Wrapper for server and application-specific settings.
@@ -44,4 +44,4 @@ sufficient, and should not be overridden without very good reason. From<T> for U chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
sourceimpl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
WithDispatch
wrapper. Read more#[non_exhaustive]pub struct NoSettings {}
Marker type representing no defined application-specific settings.
+#[non_exhaustive]pub struct NoSettings {}
Marker type representing no defined application-specific settings.
source
. Read morekey
and return true
if they are equal.WithDispatch
wrapper. Read morepub struct Tls {
+Tls in actix_settings - Rust Struct actix_settings::Tls
source · impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
sourceimpl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
WithDispatch
wrapper. Read morepub trait ApplySettings {
+ApplySettings in actix_settings - Rust Trait actix_settings::ApplySettings
source · pub trait ApplySettings {
fn apply_settings<A>(self, settings: &BasicSettings<A>) -> Self
where
A: DeserializeOwned;
}
Expand description
Extension trait for applying parsed settings to the server object.
Required Methods
sourcefn apply_settings<A>(self, settings: &BasicSettings<A>) -> Selfwhere
A: DeserializeOwned,
Apply a BasicSettings
value to self
.
-Implementations on Foreign Types
sourceimpl<F, I, S, B> ApplySettings for HttpServer<F, I, S, B>where
F: Fn() -> I + Send + Clone + 'static,
I: IntoServiceFactory<S, Request>,
S: ServiceFactory<Request, Config = AppConfig> + 'static,
S::Error: Into<WebError> + 'static,
S::InitError: Debug,
S::Response: Into<Response<B>> + 'static,
S::Future: 'static,
B: MessageBody + 'static,
sourcefn apply_settings<A>(self, settings: &BasicSettings<A>) -> Selfwhere
A: DeserializeOwned,
Implementors
\ No newline at end of file
+
pub trait Parse: Sized {
+Parse in actix_settings - Rust Trait actix_settings::Parse
source · Expand description
A specialized FromStr
trait that returns [AtError
] errors
Required Methods
Implementations on Foreign Types
Implementors
\ No newline at end of file
+
pub type Settings = BasicSettings<NoSettings>;
Convenience type alias for BasicSettings
with no defined application-specific settings.
pub type Settings = BasicSettings<NoSettings>;
Convenience type alias for BasicSettings
with no defined application-specific settings.
Extractor for the “Basic” HTTP Authentication Scheme.
-BasicAuth
extractor configuration used for WWW-Authenticate
header later.Extractor for the “Basic” HTTP Authentication Scheme.
+BasicAuth
extractor configuration used for WWW-Authenticate
header later.pub struct BasicAuth(_);
Extractor for HTTP Basic auth.
+pub struct BasicAuth(_);
WithDispatch
wrapper. Read morepub struct Config(_);
BasicAuth
extractor configuration used for WWW-Authenticate
header later.
pub struct Config(_);
BasicAuth
extractor configuration used for WWW-Authenticate
header later.
WithDispatch
wrapper. Read morepub enum Error {
+Error in actix_web_httpauth::extractors::bearer - Rust Enum actix_web_httpauth::extractors::bearer::Error
source · pub enum Error {
InvalidRequest,
InvalidToken,
InsufficientScope,
@@ -21,4 +21,4 @@ operator. From<T> for U
chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_web_httpauth/extractors/bearer/index.html b/actix_web_httpauth/extractors/bearer/index.html
index 92c80eb30..8bb4711b2 100644
--- a/actix_web_httpauth/extractors/bearer/index.html
+++ b/actix_web_httpauth/extractors/bearer/index.html
@@ -1,2 +1,2 @@
-Extractor for the “Bearer” HTTP Authentication Scheme.
-BearerAuth
extractor configuration.Extractor for the “Bearer” HTTP Authentication Scheme.
+BearerAuth
extractor configuration.pub struct BearerAuth(_);
Extractor for HTTP Bearer auth
+pub struct BearerAuth(_);
WithDispatch
wrapper. Read morepub struct Config(_);
BearerAuth
extractor configuration.
pub struct Config(_);
BearerAuth
extractor configuration.
Set challenge scope
attribute.
The "scope"
attribute is a space-delimited list of case-sensitive
scope values indicating the required scope of the access token for
@@ -14,4 +14,4 @@ described in HTTP/1.1
From<T> for U
chooses to do.
WithDispatch
wrapper. Read moreType-safe authentication information extractors.
+Type-safe authentication information extractors.
pub struct AuthenticationError<C: Challenge> { /* private fields */ }
Authentication error returned by authentication extractors.
+pub struct AuthenticationError<C: Challenge> { /* private fields */ }
Authentication error returned by authentication extractors.
Different extractors may extend AuthenticationError
implementation in order to provide access
inner challenge fields.
Extended error customization for HTTP Bearer
auth.
Returns mutable reference to the inner status code.
Can be used to override returned status code, but by default this lib tries to stick to the RFC, so it might be unreasonable.
-WithDispatch
wrapper. Read morepub trait AuthExtractorConfig {
+AuthExtractorConfig in actix_web_httpauth::extractors - Rust pub trait AuthExtractorConfig {
type Inner: Challenge;
fn into_inner(self) -> Self::Inner;
@@ -6,4 +6,4 @@
extractors.
Required Associated Types
Required Methods
sourcefn into_inner(self) -> Self::Inner
Convert the config instance into a HTTP challenge.
-Implementors
sourceimpl AuthExtractorConfig for actix_web_httpauth::extractors::basic::Config
sourceimpl AuthExtractorConfig for actix_web_httpauth::extractors::bearer::Config
\ No newline at end of file
+
pub enum ParseError {
+ParseError in actix_web_httpauth::headers::authorization - Rust pub enum ParseError {
Invalid,
MissingScheme,
MissingField(&'static str),
@@ -14,13 +14,13 @@
ToStrError(ToStrError)
Unable to convert header into the str.
Base64DecodeError(DecodeError)
Malformed base64 string.
Utf8Error(Utf8Error)
Malformed UTF-8 string.
-Trait Implementations
sourceimpl Debug for ParseError
sourceimpl Display for ParseError
sourceimpl Error for ParseError
sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()sourceimpl From<DecodeError> for ParseError
sourceimpl From<ToStrError> for ParseError
sourcefn from(err: ToStrError) -> Self
Converts to this type from the input type.Auto Trait Implementations
impl RefUnwindSafe for ParseError
impl Send for ParseError
impl Sync for ParseError
impl Unpin for ParseError
impl UnwindSafe for ParseError
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> From<T> for T
const: unstable · sourcefn from(t: T) -> T
Returns the argument unchanged.
+Trait Implementations
sourceimpl Debug for ParseError
sourceimpl Display for ParseError
sourceimpl Error for ParseError
sourcefn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()sourceimpl From<DecodeError> for ParseError
sourceimpl From<ToStrError> for ParseError
sourcefn from(err: ToStrError) -> Self
Converts to this type from the input type.Auto Trait Implementations
impl RefUnwindSafe for ParseError
impl Send for ParseError
impl Sync for ParseError
impl Unpin for ParseError
impl UnwindSafe for ParseError
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moresourceimpl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
\ No newline at end of file
+WithDispatch
wrapper. Read more
Authorization
header and various auth schemes.
Authorization
header, defined in RFC 7235Authorization
header.Authorization
header.Authorization
header and various auth schemes.
Authorization
header, defined in RFC 7235Authorization
header.Authorization
header.pub struct Authorization<S: Scheme>(_);
Authorization
header, defined in RFC 7235
pub struct Authorization<S: Scheme>(_);
Authorization
header, defined in RFC 7235
The “Authorization” header field allows a user agent to authenticate itself with an origin server—usually, but not necessarily, after receiving a 401 (Unauthorized) response. Its value consists of credentials containing the authentication information of the user agent for the @@ -23,4 +23,4 @@ operator. From<T> for U chooses to do.
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_web_httpauth/headers/authorization/struct.Basic.html b/actix_web_httpauth/headers/authorization/struct.Basic.html
index bbba79555..ec191b25b 100644
--- a/actix_web_httpauth/headers/authorization/struct.Basic.html
+++ b/actix_web_httpauth/headers/authorization/struct.Basic.html
@@ -1,4 +1,4 @@
-pub struct Basic { /* private fields */ }
Credentials for Basic
authentication scheme, defined in RFC 7617
pub struct Basic { /* private fields */ }
Credentials for Basic
authentication scheme, defined in RFC 7617
WithDispatch
wrapper. Read morepub struct Bearer { /* private fields */ }
Credentials for Bearer
authentication scheme, defined in RFC 6750.
pub struct Bearer { /* private fields */ }
Credentials for Bearer
authentication scheme, defined in RFC 6750.
Should be used in combination with Authorization
header.
WithDispatch
wrapper. Read morepub trait Scheme: TryIntoHeaderValue + Debug + Display + Clone + Send + Sync {
+Scheme in actix_web_httpauth::headers::authorization - Rust Trait actix_web_httpauth::headers::authorization::Scheme
source · pub trait Scheme: TryIntoHeaderValue + Debug + Display + Clone + Send + Sync {
fn parse(header: &HeaderValue) -> Result<Self, ParseError>;
}
Expand description
Authentication scheme for Authorization
header.
Required Methods
sourcefn parse(header: &HeaderValue) -> Result<Self, ParseError>
Try to parse an authentication scheme from the Authorization
header.
-Implementors
\ No newline at end of file
+
Typed HTTP headers.
-Authorization
header and various auth schemes.WWW-Authenticate
header and various auth challenges.Typed HTTP headers.
+Authorization
header and various auth schemes.WWW-Authenticate
header and various auth challenges.Challenge for the “Basic” HTTP Authentication Scheme.
+Challenge for the “Basic” HTTP Authentication Scheme.
WWW-Authenticate
header with HTTP Basic auth scheme,
-described in RFC 7617pub struct Basic { /* private fields */ }
Challenge for WWW-Authenticate
header with HTTP Basic auth scheme,
+
pub struct Basic { /* private fields */ }
Challenge for WWW-Authenticate
header with HTTP Basic auth scheme,
described in RFC 7617
use actix_web_httpauth::headers::www_authenticate::basic::Basic;
@@ -32,4 +32,4 @@ operator. From<T> for U
chooses to do.
WithDispatch
wrapper. Read morepub enum Error {
+Error in actix_web_httpauth::headers::www_authenticate::bearer - Rust Enum actix_web_httpauth::headers::www_authenticate::bearer::Error
source · pub enum Error {
InvalidRequest,
InvalidToken,
InsufficientScope,
@@ -21,4 +21,4 @@ operator. From<T> for U
chooses to do.
impl<V, T> VZip<V> for Twhere
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/actix_web_httpauth/headers/www_authenticate/bearer/index.html b/actix_web_httpauth/headers/www_authenticate/bearer/index.html
index 0666ce9d9..799458089 100644
--- a/actix_web_httpauth/headers/www_authenticate/bearer/index.html
+++ b/actix_web_httpauth/headers/www_authenticate/bearer/index.html
@@ -1,2 +1,2 @@
-Challenge for the “Bearer” HTTP Authentication Scheme.
-WWW-Authenticate
header with HTTP Bearer auth scheme, described in RFC 6750.Bearer
challenge.Challenge for the “Bearer” HTTP Authentication Scheme.
+WWW-Authenticate
header with HTTP Bearer auth scheme, described in RFC 6750.Bearer
challenge.pub struct Bearer { /* private fields */ }
Challenge for WWW-Authenticate
header with HTTP Bearer auth scheme, described in RFC 6750.
pub struct Bearer { /* private fields */ }
Challenge for WWW-Authenticate
header with HTTP Bearer auth scheme, described in RFC 6750.
use actix_web_httpauth::headers::www_authenticate::bearer::{
Bearer, Error,
@@ -36,4 +36,4 @@ operator. From<T> for U
chooses to do.
WithDispatch
wrapper. Read morepub struct BearerBuilder(_);
Builder for the Bearer
challenge.
pub struct BearerBuilder(_);
WithDispatch
wrapper. Read moreWWW-Authenticate
header and various auth challenges.
WWW-Authenticate
header, described in RFC 7235.WWW-Authenticate
header.WWW-Authenticate
header and various auth challenges.
WWW-Authenticate
header, described in RFC 7235.WWW-Authenticate
header.pub struct WwwAuthenticate<C: Challenge>(pub C);
WWW-Authenticate
header, described in RFC 7235.
pub struct WwwAuthenticate<C: Challenge>(pub C);
0: C
source
. Read moreself
and other
values to be equal, and is used
@@ -13,4 +13,4 @@ operator. From<T> for U chooses to do.
WithDispatch
wrapper. Read morepub trait Challenge: TryIntoHeaderValue + Debug + Display + Clone + Send + Sync {
+Challenge in actix_web_httpauth::headers::www_authenticate - Rust
\ No newline at end of file
+
HTTP authentication schemes for Actix Web.
+HTTP authentication schemes for Actix Web.
Provides:
Bearer
as defined in RFC 6750.Basic
as defined in RFC 7617.HTTP Authentication middleware.
-HTTP Authentication middleware.
+pub struct HttpAuthentication<T, F>where
T: FromRequest,{ /* private fields */ }
Middleware for checking HTTP authentication.
+pub struct HttpAuthentication<T, F>where
T: FromRequest,{ /* private fields */ }
Middleware for checking HTTP authentication.
If there is no Authorization
header in the request, this middleware returns an error
immediately, without calling the F
callback.
Otherwise, it will pass both the request and the parsed credentials into it. In case of
@@ -46,4 +46,4 @@ validation callback F
.
From<T> for U
chooses to do.
WithDispatch
wrapper. Read more
\ No newline at end of file
diff --git a/ayu.css b/ayu.css
deleted file mode 100644
index c4aa72575..000000000
--- a/ayu.css
+++ /dev/null
@@ -1 +0,0 @@
- :root{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--search-color:#fff;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--example-line-numbers-border-color:none;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);}.slider{background-color:#ccc;}.slider:before{background-color:white;}input:focus+.slider{box-shadow:0 0 0 2px #0a84ff,0 0 0 6px rgba(10,132,255,0.3);}h1,h2,h3,h4{color:white;}h1 a{color:#fff;}h4{border:none;}.docblock code{color:#ffb454;}.code-header{color:#e6e1cf;}.docblock pre>code,pre>code{color:#e6e1cf;}.item-info code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}pre,.rustdoc.source .example-wrap{color:#e6e1cf;}.rust-logo{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);}.sidebar .current,.sidebar a:hover{color:#ffb44c;}.sidebar-elems .location{color:#ff7733;}.src-line-numbers .line-highlighted{color:#708090;padding-right:4px;border-right:1px solid #ffb44c;}.search-results a:hover{color:#fff !important;background-color:#3c3c3c;}.search-results a:focus{color:#fff !important;background-color:#3c3c3c;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.sidebar h2 a,.sidebar h3 a{color:white;}body.source .example-wrap pre.rust a{background:#333;}details.rustdoc-toggle>summary::before{filter:invert(100%);}#crate-search-div::after{filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);}#crate-search:hover,#crate-search:focus{border-color:#e0e0e0 !important;}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);}.module-item .stab,.import-item .stab{color:#000;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}a.test-arrow{font-size:100%;color:#788797;border-radius:4px;background-color:rgba(57,175,215,0.09);}a.test-arrow:hover{background-color:rgba(57,175,215,0.368);color:#c5c5c5;}:target{background:rgba(255,236,164,0.06);border-right:3px solid rgba(255,180,76,0.85);}.search-failed a{color:#39AFD7;}.tooltip::after{background-color:#314559;color:#c5c5c5;}.tooltip::before{border-color:transparent #314559 transparent transparent;}.notable-traits-tooltiptext{background-color:#314559;}#titles>button.selected{background-color:#141920 !important;border-bottom:1px solid #ffb44c !important;border-top:none;}#titles>button:not(.selected){background-color:transparent !important;border:none;}#titles>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#titles>button>div.count{color:#888;}pre.rust .lifetime{}pre.rust .kw{}#titles>button:hover,#titles>button.selected{}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute{}pre.rust .kw-2,pre.rust .prelude-ty{}kbd{color:#c5c5c5;background-color:#314559;box-shadow:inset 0 -1px 0 #5c6773;}#settings-menu>a,#help-button>a{color:#fff;}#settings-menu>a img{filter:invert(100);}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus{border-color:#e0e0e0;}.search-results .result-name span.alias{color:#c5c5c5;}.search-results .result-name span.grey{color:#999;}#source-sidebar>.title{color:#fff;}#source-sidebar div.files>a:hover,details.dir-entry summary:hover,#source-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:#14191f;color:#ffb44c;}#source-sidebar div.files>a.selected{background-color:#14191f;color:#ffb44c;}.scraped-example-list .scrape-help{border-color:#aaa;color:#eee;}.scraped-example-list .scrape-help:hover{border-color:white;color:white;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(15,20,25,1),rgba(15,20,25,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(15,20,25,1),rgba(15,20,25,0));}.toggle-line-inner{background:#999;}.toggle-line:hover .toggle-line-inner{background:#c5c5c5;}
\ No newline at end of file
diff --git a/dark.css b/dark.css
deleted file mode 100644
index ee3eabcb8..000000000
--- a/dark.css
+++ /dev/null
@@ -1 +0,0 @@
-:root{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--search-color:#111;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--example-line-numbers-border-color:#4a4949;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;}.slider{background-color:#ccc;}.slider:before{background-color:white;}input:focus+.slider{box-shadow:0 0 0 2px #0a84ff,0 0 0 6px rgba(10,132,255,0.3);}.rust-logo{filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff)}.content .item-info::before{color:#ccc;}body.source .example-wrap pre.rust a{background:#333;}details.rustdoc-toggle>summary::before{filter:invert(100%);}#crate-search-div::after{filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);}#crate-search:hover,#crate-search:focus{border-color:#2196f3 !important;}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);}a.test-arrow{color:#dedede;background-color:rgba(78,139,202,0.2);}a.test-arrow:hover{background-color:#4e8bca;}:target{background-color:#494a3d;border-right:3px solid #bb7410;}.search-failed a{color:#0089ff;}.tooltip::after{background-color:#000;color:#fff;border-color:#000;}.tooltip::before{border-color:transparent black transparent transparent;}.notable-traits-tooltiptext{background-color:#111;}#titles>button:not(.selected){background-color:#252525;border-top-color:#252525;}#titles>button:hover,#titles>button.selected{border-top-color:#0089ff;background-color:#353535;}#titles>button>div.count{color:#888;}kbd{color:#000;background-color:#fafbfc;box-shadow:inset 0 -1px 0 #c6cbd1;}#settings-menu>a,#help-button>a{color:#000;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus{border-color:#ffb900;}.search-results .result-name span.alias{color:#fff;}.search-results .result-name span.grey{color:#ccc;}#source-sidebar div.files>a:hover,details.dir-entry summary:hover,#source-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:#444;}#source-sidebar div.files>a.selected{background-color:#333;}.scraped-example-list .scrape-help{border-color:#aaa;color:#eee;}.scraped-example-list .scrape-help:hover{border-color:white;color:white;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(53,53,53,1),rgba(53,53,53,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(53,53,53,1),rgba(53,53,53,0));}.toggle-line-inner{background:#999;}.toggle-line:hover .toggle-line-inner{background:#c5c5c5;}
\ No newline at end of file
diff --git a/help.html b/help.html
index f6fe48185..2a7a7b772 100644
--- a/help.html
+++ b/help.html
@@ -1 +1,2 @@
-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(x=>""+x+"
").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="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 …","Allow private network access.","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 …","Configures whether requests should be pre-emptively …","","","","","","","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 all …","Set a list of headers which are safe to expose to the API …","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self)
.","Calls U::from(self)
.","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":[4,4,0,0,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,4,1,4,4,4,1,1,1,4,1,1,1,4,4,1,4,1,4,1,1,1,4,1,4,1,4,4,1,4,1,4,1,4,1,4],"f":[0,0,0,0,0,0,0,0,0,0,[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[[1,2],1],[1,1],[[1,3],1],[[]],[[]],[[]],[[]],[4,4],[[]],[[],1],[1,1],[1,1],[4,5],[1,1],[1,1],[[1,6],7],[[4,6],7],[[4,6],7],[[]],[[]],[[]],[[]],[[1,[10,[[9,[8]]]]],1],[1],[[],1],[11],[1,1],[4,12],[1,1],[[]],[[],13],[[],14],[[],14],[[],14],[[],14],[[],15],[[],15],[[]],[[]]],"p":[[3,"Cors"],[15,"str"],[15,"bool"],[4,"CorsError"],[3,"HttpResponse"],[3,"Formatter"],[6,"Result"],[15,"usize"],[4,"Option"],[8,"Into"],[3,"Demand"],[3,"StatusCode"],[3,"String"],[4,"Result"],[3,"TypeId"]]},\
"actix_identity":{"doc":"Identity management for Actix Web.","t":[3,8,3,11,11,11,11,11,11,11,0,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,3,4,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],"n":["Identity","IdentityExt","IdentityMiddleware","borrow","borrow","borrow_mut","borrow_mut","builder","clone","clone_into","config","default","from","from","from_request","get_identity","id","into","into","login","logout","new_transform","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","DeleteIdentityKeys","IdentityMiddlewareBuilder","LogoutBehaviour","PurgeSession","borrow","borrow","borrow_mut","borrow_mut","build","clone","clone","clone_into","clone_into","fmt","fmt","from","from","into","into","login_deadline","logout_behaviour","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","visit_deadline","vzip","vzip"],"q":["actix_identity","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_identity::config","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["A verified user identity. It can be used as a request …","Helper trait to retrieve an Identity
instance from various …","Identity management middleware.","","","","","A fluent API to configure IdentityMiddleware
.","","","Configuration options to tune the behaviour of …","","Returns the argument unchanged.","Returns the argument unchanged.","","Retrieve the identity attached to the current session, if …","Return the user id associated to the current session.","Calls U::from(self)
.","Calls U::from(self)
.","Attach a valid user identity to the current session.","Remove the user identity from the current session.","","","","","","","","","","","When Identity::logout
is called, remove the identity …","A fluent builder to construct an IdentityMiddleware
…","LogoutBehaviour
controls what actions are going to be …","When Identity::logout
is called, purge the current session.","","","","","Finalises the builder and returns an IdentityMiddleware
…","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self)
.","Calls U::from(self)
.","Automatically logs out users after a certain amount of …","Determines how Identity::logout
affects the current …","","","","","","","","","Automatically logs out users after a certain amount of …","",""],"i":[0,0,0,5,2,5,2,2,2,2,0,2,5,2,5,16,5,5,2,5,5,2,2,5,2,5,2,5,2,5,2,11,0,0,11,11,1,11,1,1,11,1,11,1,11,1,11,1,11,1,1,1,11,1,11,1,11,1,11,1,1,11,1],"f":[0,0,0,[[]],[[]],[[]],[[]],[[],1],[2,2],[[]],0,[[],2],[[]],[[]],[[3,4]],[[],[[7,[5,6]]]],[5,[[7,[8,6]]]],[[]],[[]],[[9,8],[[7,[5,6]]]],[5],[2],[[]],[[],7],[[],7],[[],7],[[],7],[[],10],[[],10],[[]],[[]],0,0,0,0,[[]],[[]],[[]],[[]],[1,2],[11,11],[1,1],[[]],[[]],[[11,12],13],[[1,12],13],[[]],[[]],[[]],[[]],[[1,[15,[14]]],1],[[1,11],1],[[]],[[]],[[],7],[[],7],[[],7],[[],7],[[],10],[[],10],[[1,[15,[14]]],1],[[]],[[]]],"p":[[3,"IdentityMiddlewareBuilder"],[3,"IdentityMiddleware"],[3,"HttpRequest"],[4,"Payload"],[3,"Identity"],[3,"Error"],[4,"Result"],[3,"String"],[3,"Extensions"],[3,"TypeId"],[4,"LogoutBehaviour"],[3,"Formatter"],[6,"Result"],[3,"Duration"],[4,"Option"],[8,"IdentityExt"]]},\
-"actix_limitation":{"doc":"Rate limiter using a fixed window counter for arbitrary …","t":[3,13,17,17,17,17,4,13,3,13,3,3,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,12,12,12,12],"n":["Builder","Client","DEFAULT_COOKIE_NAME","DEFAULT_PERIOD_SECS","DEFAULT_REQUEST_LIMIT","DEFAULT_SESSION_KEY","Error","LimitExceeded","Limiter","Other","RateLimiter","Status","Time","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","builder","clone","clone","clone_into","clone_into","cookie_name","count","default","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","into","into","into","into","into","key_by","limit","limit","new_transform","period","provide","remaining","reset_epoch_utc","session_key","source","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","0","0","0","0"],"q":["actix_limitation","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_limitation::Error","","",""],"d":["Rate limiter builder.","Redis client failed to connect or run a query.","Default cookie name.","Default period (in seconds).","Default request limit.","Default session key.","Failure modes of the rate limiter.","Limit is exceeded for a key.","Rate limiter.","Generic error.","Rate limit middleware.","A report for a given key containing the limit status.","Time conversion failed.","","","","","","","","","","","Finalizes and returns a Limiter
.","Construct rate limiter builder with defaults.","","","","","Sets name of cookie to be sent.","Consumes one rate limit unit, returning the status.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Sets rate limit key derivation function.","Set upper limit.","Returns the maximum number of requests allowed in the …","","Set limit window/period.","","Returns how many requests are left in the current period.","Returns a UNIX timestamp in UTC approximately when the …","Sets session key to be used in backend.","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,3,0,0,0,0,0,3,0,3,0,0,3,1,3,10,7,2,1,3,10,7,2,1,2,7,2,7,2,1,2,10,1,3,3,10,7,2,1,3,3,3,10,7,2,1,3,10,7,2,1,1,7,10,1,3,7,7,1,3,7,2,3,1,3,10,7,2,1,3,10,7,2,1,3,10,7,2,1,3,10,7,2,21,22,23,24],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,[[4,[2,3]]]],[[[6,[5]]],1],[7,7],[2,2],[[]],[[]],[[1,[6,[[9,[8]]]]],1],[[2,[6,[5]]],[[4,[7,3]]]],[[],10],[[1,11],12],[[3,11],12],[[3,11],12],[[10,11],12],[[7,11],12],[[2,11],12],[[]],[[]],[13,3],[14,3],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[[1,15],1],[7,15],[10],[[1,16],1],[17],[7,15],[7,15],[[1,[6,[[9,[8]]]]],1],[3,[[19,[18]]]],[[]],[[]],[[],5],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],20],[[],20],[[],20],[[],20],[[],20],[[]],[[]],[[]],[[]],[[]],0,0,0,0],"p":[[3,"Builder"],[3,"Limiter"],[4,"Error"],[4,"Result"],[3,"String"],[8,"Into"],[3,"Status"],[15,"str"],[4,"Cow"],[3,"RateLimiter"],[3,"Formatter"],[6,"Result"],[3,"ComponentRange"],[3,"RedisError"],[15,"usize"],[3,"Duration"],[3,"Demand"],[8,"Error"],[4,"Option"],[3,"TypeId"],[13,"Client"],[13,"LimitExceeded"],[13,"Time"],[13,"Other"]]},\
-"actix_protobuf":{"doc":"Protobuf payload extractor for Actix Web.","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,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","resource_path","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","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","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":[3,4,4,4,4,0,0,0,0,0,4,3,1,14,4,3,1,14,4,1,3,3,4,3,3,4,4,3,1,14,4,4,4,3,3,1,14,4,14,1,14,14,14,23,3,3,3,4,3,1,14,4,3,1,14,4,14,3,1,14,4,3,1,14,4,24,25,26],"f":[0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[[3,[2]]]],[[[3,[2]]]],[4,5],[[[3,[2]],6],7],[[[3,[2]],6],7],[[4,6],7],[[4,6],7],[[]],[[]],[[]],[[]],[8,4],[9,4],[[10,11]],[[]],[[]],[[]],[[]],[[]],[[1,12],1],[[[14,[[0,[2,13]]]],12],[[14,[[0,[2,13]]]]]],[[10,11],[[14,[[0,[2,13]]]]]],[[[15,[[14,[[0,[2,13]]]]]],16],17],[2,[[19,[5,18]]]],[[],20],[[[3,[[0,[2,13]]]],10],5],[[],21],[[],21],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[15,16],17],[[],22],[[],22],[[],22],[[],22],[[]],[[]],[[]],[[]],0,0,0],"p":[[3,"ProtoBufConfig"],[8,"Message"],[3,"ProtoBuf"],[4,"ProtoBufPayloadError"],[3,"HttpResponse"],[3,"Formatter"],[6,"Result"],[3,"DecodeError"],[4,"PayloadError"],[3,"HttpRequest"],[4,"Payload"],[15,"usize"],[8,"Default"],[3,"ProtoBufMessage"],[3,"Pin"],[3,"Context"],[4,"Poll"],[3,"Error"],[4,"Result"],[3,"Path"],[3,"String"],[3,"TypeId"],[8,"ProtoBufResponseBuilder"],[13,"Serialize"],[13,"Deserialize"],[13,"Payload"]]},\
-"actix_redis":{"doc":"Redis integration for actix
.","t":[12,13,13,3,13,13,4,13,13,13,13,13,13,13,3,13,13,4,4,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,14,11,11,11,11,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","Nil","NotConnected","Redis","RedisActor","Remote","Resp","RespError","RespValue","SimpleString","Unexpected","append","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","equivalent","error","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_resp_int","handle","handle","into","into","into","into","into","provide","provide","push","resp_array","restarting","source","source","start","started","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","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 sending data to Redis.","Error creating a connection, or an error with a connection …","Cancel all waiters when connection is 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 …","","Receiving message during reconnecting.","","Redis communication actor.","A remote error","A RESP parsing/serialising error occurred","","A single RESP value, this owns the data that is read/to-be …","","An unexpected error. In this context “unexpected” …","Convenience function for building dynamic Redis commands …","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","Push item to Resp array","Macro to create a RESP array, useful for preparing …","","","","Start new Supervisor
with RedisActor
.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[7,1,1,0,13,10,0,1,13,1,13,1,10,10,0,13,13,0,0,1,13,1,4,7,10,1,13,4,7,10,1,13,1,1,1,1,4,7,10,10,1,13,13,4,7,10,10,1,1,1,1,1,1,1,1,13,13,13,1,4,4,4,7,10,1,13,10,13,1,0,4,10,13,4,4,1,10,13,4,7,10,1,13,4,7,10,1,13,4,7,10,1,13,4,7,10,1,13,29,30,31,32,33,34,35,32,36,37,38,39,40],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[[]],[[1,1],3],[[],3],[[4,5],6],[[7,8],9],[[10,8],9],[[10,8],9],[[1,8],[[12,[11]]]],[[13,8],[[12,[11]]]],[[13,8],[[12,[11]]]],[[]],[[]],[13,10],[[]],[14,1],[15,1],[16,1],[14,1],[[[19,[17,18]]],1],[[]],[[[20,[16]]],1],[[],1],[21,13],[[]],[5,13],[1,[[12,[1,13]]]],[[4,7]],[[4,[12,[1,13]]]],[[]],[[]],[[]],[[]],[[]],[22],[22],[1],0,[4],[10,[[24,[23]]]],[13,[[24,[23]]]],[[[25,[14]]],[[26,[4]]]],[[4,27]],[[]],[[],14],[[],14],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],28],[[],28],[[],28],[[],28],[[],28],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0],"p":[[4,"RespValue"],[8,"IntoIterator"],[15,"bool"],[3,"RedisActor"],[3,"Error"],[4,"Running"],[3,"Command"],[3,"Formatter"],[6,"Result"],[4,"Error"],[3,"Error"],[4,"Result"],[4,"RespError"],[3,"String"],[15,"usize"],[15,"str"],[15,"u8"],[3,"Global"],[3,"Vec"],[3,"Arc"],[3,"TrySendError"],[3,"Demand"],[8,"Error"],[4,"Option"],[8,"Into"],[3,"Addr"],[3,"Context"],[3,"TypeId"],[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":"Session management for Actix Web.","t":[13,13,13,3,8,3,3,3,4,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,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,0,11,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,13,4,13,13,3,13,13,4,3,13,4,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,3,13,4,13,13,13,3,3,3,3,4,13,13,3,8,4,11,11,11,11,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,10,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,11,10,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12],"n":["Changed","Purged","Renewed","Session","SessionExt","SessionGetError","SessionInsertError","SessionMiddleware","SessionStatus","Unchanged","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","builder","clear","clone","clone","clone","clone_into","clone_into","clone_into","config","default","entries","eq","equivalent","error_response","error_response","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_request","get","get_session","insert","into","into","into","into","into","new","new_transform","provide","provide","purge","remove","remove_as","renew","source","source","status","storage","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","BrowserSession","BrowserSession","CookieContentSecurity","OnEveryRequest","OnStateChanges","PersistentSession","PersistentSession","Private","SessionLifecycle","SessionMiddlewareBuilder","Signed","TtlExtensionPolicy","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cookie_content_security","cookie_domain","cookie_http_only","cookie_name","cookie_path","cookie_same_site","cookie_secure","default","default","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","into","into","into","into","into","into","session_lifecycle","session_ttl","session_ttl_extension_policy","state_ttl","state_ttl_extension_policy","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","0","0","CookieSessionStore","Deserialization","LoadError","Other","Other","Other","RedisActorSessionStore","RedisActorSessionStoreBuilder","RedisSessionStore","RedisSessionStoreBuilder","SaveError","Serialization","Serialization","SessionKey","SessionStore","UpdateError","as_ref","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","builder","builder","cache_keygen","cache_keygen","clone","clone_into","default","delete","delete","delete","delete","eq","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","load","load","load","load","new","new","provide","provide","provide","save","save","save","save","source","source","source","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","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","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update","update","update","update","update_ttl","update_ttl","update_ttl","update_ttl","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","0","0","0","0","0","0"],"q":["actix_session","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_session::config","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_session::config::SessionLifecycle","","actix_session::storage","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_session::storage::LoadError","","actix_session::storage::SaveError","","actix_session::storage::UpdateError",""],"d":["Session state has been updated - the changes will have to …","The session has been flagged for deletion - the session …","The session has been flagged for renewal.","The primary interface to access and modify session state.","Extract a Session
object from various actix-web
types …","Error returned by Session::get
.","Error returned by Session::insert
.","A middleware for session management in Actix Web …","Status of a Session
.","The session state has not been modified since its …","","","","","","","","","","","A fluent API to configure SessionMiddleware
.","Clear the session.","","","","","","","Configuration options to tune the behaviour of …","","Get all raw key-value data from the session.","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Get a value
from the session.","Extract a Session
object.","Inserts a key-value pair into the session.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Use SessionMiddleware::new
to initialize the session …","","","","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 …","","","Returns session status.","Pluggable storage backends for session state.","","","","","","","","","","","","","","","","","","","","","","","","","","A session lifecycle strategy where the session cookie …","The session cookie will expire when the current browser …","Determines how to secure the content of the session cookie.","The TTL is refreshed every time the server receives a …","The TTL is refreshed every time the session state changes …","A session lifecycle strategy where the session cookie will …","The session cookie will be a persistent cookie.","The cookie content is encrypted when using …","Determines what type of session cookie should be used and …","A fluent, customized SessionMiddleware
builder.","The cookie content is signed when using …","Configuration for which events should trigger an extension …","","","","","","","","","","","","","Finalise the builder and return a SessionMiddleware
…","","","","","","","","","","","Choose how the session cookie content should be secured.","Set the Domain
attribute for the cookie used to store the …","Set the HttpOnly
attribute for the cookie used to store …","Set the name of the cookie used to store the session ID.","Set the Path
attribute for the cookie used to store the …","Set the SameSite
attribute for the cookie used to store …","Set the Secure
attribute for the cookie used to store the …","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Determines what type of session cookie should be used and …","Specifies how long the session cookie should live.","Determines under what circumstances the TTL of your …","Sets a time-to-live (TTL) when storing the session state …","Determine under what circumstances the TTL of your session …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Use the session key, stored in the session cookie, as …","Failed to deserialize session state.","Possible failures modes for SessionStore::load
.","Something went wrong when retrieving the session state.","Something went wrong when persisting the session state.","Something went wrong when updating the session state.","Use Redis as session storage backend.","A fluent builder to construct a RedisActorSessionStore
…","Use Redis as session storage backend.","A fluent builder to construct a RedisSessionStore
instance …","Possible failures modes for SessionStore::save
.","Failed to serialize session state.","Failed to serialize session state.","A session key, the string stored in a client-side cookie …","The interface to retrieve and save the current session …","Possible failures modes for SessionStore::update
.","","","","","","","","","","","","","","","","","","","","Finalise the builder and return a RedisActorSessionStore
…","Finalise the builder and return a RedisActorSessionStore
…","A fluent API to configure RedisActorSessionStore
.","A fluent API to configure RedisSessionStore
. It takes as …","Set a custom cache key generation strategy, expecting a …","Set a custom cache key generation strategy, expecting a …","","","","Deletes a session from the store.","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Loads the session state associated to a session key.","","","","Create a new instance of RedisActorSessionStore
using the …","Create a new instance of RedisSessionStore
using the …","","","","Persist the session state for a newly created session.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Updates the session state associated to a pre-existing …","","","","Updates the TTL of the session state associated to a …","","","","","","","","","","","","","","","","","",""],"i":[7,7,7,0,0,0,0,0,0,7,6,4,7,12,15,6,4,7,12,15,6,4,6,4,7,6,4,7,0,7,4,7,7,12,15,7,12,12,15,15,6,4,7,12,12,15,15,4,4,49,4,6,4,7,12,15,6,6,12,15,4,4,4,4,12,15,4,0,6,4,7,12,15,6,4,7,12,15,6,4,7,12,15,6,4,7,12,15,6,4,7,12,15,0,30,0,33,33,0,30,34,0,0,34,0,3,30,31,32,33,34,3,30,31,32,33,34,3,30,31,32,33,34,30,31,32,33,34,3,3,3,3,3,3,3,31,32,30,31,32,33,34,3,30,30,30,31,32,33,34,3,30,31,32,33,34,3,32,32,31,31,30,31,32,33,34,3,30,31,32,33,34,3,30,31,32,33,34,3,30,31,32,33,34,3,30,31,32,33,34,50,51,0,46,0,46,47,48,0,0,0,0,0,47,48,0,0,0,37,39,38,40,46,47,48,37,42,41,39,38,40,46,47,48,37,42,41,38,40,39,41,38,40,41,41,42,1,39,42,41,37,37,46,46,47,47,48,48,37,39,38,40,46,47,48,37,42,41,39,38,40,46,47,48,37,42,41,1,39,42,41,39,41,46,47,48,1,39,42,41,46,47,48,41,46,47,48,39,38,40,46,47,48,37,37,42,41,39,38,40,46,47,48,37,42,41,39,38,40,46,47,48,37,42,41,1,39,42,41,1,39,42,41,39,38,40,46,47,48,37,42,41,52,53,54,55,56,57],"f":[0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[1,2],[[3,[1]]]],[4],[[[6,[[0,[5,1]]]]],[[6,[[0,[5,1]]]]]],[4,4],[7,7],[[]],[[]],[[]],0,[[],7],[4,[[10,[[9,[8,8]]]]]],[[7,7],11],[[],11],[12,[[14,[13]]]],[15,[[14,[13]]]],[[7,16],17],[[12,16],17],[[12,16],17],[[15,16],17],[[15,16],17],[[]],[[]],[[]],[[]],[18,12],[[]],[18,15],[[19,20]],[[4,21],[[24,[[23,[22]],12]]]],[[],4],[[4,[25,[8]],26],[[24,[15]]]],[[]],[[]],[[]],[[]],[[]],[[1,2],[[6,[1]]]],[6],[27],[27],[4],[[4,21],[[23,[8]]]],[[4,21],[[23,[[24,[22,8]]]]]],[4],[12,[[23,[28]]]],[15,[[23,[28]]]],[4,7],0,[[]],[[]],[[]],[[],8],[[],8],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],29],[[],29],[[],29],[[],29],[[],29],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[3,[1]]],[[6,[1]]]],[30,30],[31,31],[32,32],[33,33],[34,34],[[]],[[]],[[]],[[]],[[]],[[[3,[1]],34],[[3,[1]]]],[[[3,[1]],[23,[8]]],[[3,[1]]]],[[[3,[1]],11],[[3,[1]]]],[[[3,[1]],8],[[3,[1]]]],[[[3,[1]],8],[[3,[1]]]],[[[3,[1]],35],[[3,[1]]]],[[[3,[1]],11],[[3,[1]]]],[[],31],[[],32],[[30,16],17],[[31,16],17],[[32,16],17],[[33,16],17],[[34,16],17],[[]],[[]],[31,30],[32,30],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[3,[1]],[25,[30]]],[[3,[1]]]],[[32,36],32],[[32,33],32],[[31,36],31],[[31,33],31],[[]],[[]],[[]],[[]],[[]],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[37,21],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[38,39],[40,[[24,[41,18]]]],[[[25,[8]]],38],[[[25,[8]]],40],[38,38],[40,40],[41,41],[[]],[[],42],[37,[[45,[[44,[43]]]]]],[[39,37],[[45,[[44,[43]]]]]],[[42,37],[[45,[[44,[43]]]]]],[[41,37],[[45,[[44,[43]]]]]],[[37,37],11],[[],11],[[46,16],17],[[46,16],17],[[47,16],17],[[47,16],17],[[48,16],17],[[48,16],17],[[37,16],17],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[37,[[45,[[44,[43]]]]]],[[39,37],[[45,[[44,[43]]]]]],[[42,37],[[45,[[44,[43]]]]]],[[41,37],[[45,[[44,[43]]]]]],[[[25,[8]]],39],[[[25,[8]]],[[24,[41,18]]]],[27],[27],[27],[[[9,[8,8]],36],[[45,[[44,[43]]]]]],[[39,[9,[8,8]],36],[[45,[[44,[43]]]]]],[[42,[9,[8,8]],36],[[45,[[44,[43]]]]]],[[41,[9,[8,8]],36],[[45,[[44,[43]]]]]],[46,[[23,[28]]]],[47,[[23,[28]]]],[48,[[23,[28]]]],[[]],[[],8],[[],8],[[],8],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[8,[[24,[37]]]],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[37,[9,[8,8]],36],[[45,[[44,[43]]]]]],[[39,37,[9,[8,8]],36],[[45,[[44,[43]]]]]],[[42,37,[9,[8,8]],36],[[45,[[44,[43]]]]]],[[41,37,[9,[8,8]],36],[[45,[[44,[43]]]]]],[[37,36],[[45,[[44,[43]]]]]],[[39,37,36],[[45,[[44,[43]]]]]],[[42,37,36],[[45,[[44,[43]]]]]],[[41,37,36],[[45,[[44,[43]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0],"p":[[8,"SessionStore"],[3,"Key"],[3,"SessionMiddlewareBuilder"],[3,"Session"],[8,"Clone"],[3,"SessionMiddleware"],[4,"SessionStatus"],[3,"String"],[3,"HashMap"],[3,"Ref"],[15,"bool"],[3,"SessionGetError"],[3,"BoxBody"],[3,"HttpResponse"],[3,"SessionInsertError"],[3,"Formatter"],[6,"Result"],[3,"Error"],[3,"HttpRequest"],[4,"Payload"],[15,"str"],[8,"DeserializeOwned"],[4,"Option"],[4,"Result"],[8,"Into"],[8,"Serialize"],[3,"Demand"],[8,"Error"],[3,"TypeId"],[4,"SessionLifecycle"],[3,"BrowserSession"],[3,"PersistentSession"],[4,"TtlExtensionPolicy"],[4,"CookieContentSecurity"],[4,"SameSite"],[3,"Duration"],[3,"SessionKey"],[3,"RedisActorSessionStoreBuilder"],[3,"RedisActorSessionStore"],[3,"RedisSessionStoreBuilder"],[3,"RedisSessionStore"],[3,"CookieSessionStore"],[8,"Future"],[3,"Box"],[3,"Pin"],[4,"LoadError"],[4,"SaveError"],[4,"UpdateError"],[8,"SessionExt"],[13,"BrowserSession"],[13,"PersistentSession"],[13,"Deserialization"],[13,"Other"],[13,"Serialization"],[13,"Other"],[13,"Serialization"],[13,"Other"]]},\
-"actix_settings":{"doc":"Easily manage Actix Web’s settings from a TOML file and …","t":[3,3,8,4,3,13,13,13,13,13,13,13,13,13,4,13,13,13,4,13,13,13,13,4,4,13,4,3,4,13,8,13,13,13,13,13,13,6,4,3,13,12,12,10,12,11,11,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,11,10,11,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,12,12,12,12,12,12],"n":["ActixSettings","Address","ApplySettings","Backlog","BasicSettings","Default","Default","Default","Default","Default","Default","Development","Disabled","EnvVarError","Error","FileExists","InvalidValue","IoError","KeepAlive","Manual","Manual","Manual","Manual","MaxConnectionRate","MaxConnections","Milliseconds","Mode","NoSettings","NumWorkers","Os","Parse","ParseAddressError","ParseBoolError","ParseIntError","Production","Seconds","Seconds","Settings","Timeout","Tls","TomlError","actix","application","apply_settings","backlog","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","certificate","client_shutdown","client_timeout","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","enable_compression","enable_log","enabled","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","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","from","from_default_template","from_template","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","host","hosts","into","into","into","into","into","into","into","into","into","into","into","into","into","keep_alive","max_connection_rate","max_connections","mode","num_workers","override_field","override_field_with_env_var","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse_toml","port","private_key","shutdown_timeout","tls","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","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","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write_toml_file","0","0","0","0","0","0","0","0","column","expected","file","got","line","0","0","0","0","0","0"],"q":["actix_settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_settings::Backlog","actix_settings::Error","","","","","","","","","","","","actix_settings::KeepAlive","actix_settings::MaxConnectionRate","actix_settings::MaxConnections","actix_settings::NumWorkers","actix_settings::Timeout",""],"d":["Settings types for Actix Web.","A host/port pair for the server to bind to.","Extension trait for applying parsed settings to the server …","The maximum number of pending connections.","Wrapper for server and application-specific settings.","The default number of connections. See struct docs.","The default keep-alive as defined by Actix Web.","The default connection limit. See struct docs.","The default number of connections. See struct docs.","The default number of workers. See struct docs.","The default timeout. Depends on context.","Marks development environment.","Disable keep-alive.","Environment variable does not exists or is invalid.","Errors that can be returned from methods in this crate.","File already exists on disk.","Invalid value.","I/O error.","The server keep-alive preference.","A specific number of connections.","A specific connection limit.","A specific number of connections.","A specific number of workers.","The maximum per-worker concurrent TLS connection limit.","The maximum per-worker number of concurrent connections.","Timeout in milliseconds.","Marker of intended deployment environment.","Marker type representing no defined application-specific …","The number of workers that the server should start.","Let the OS determine keep-alive duration.","A specialized FromStr
trait that returns [AtError
] errors","Value is not an address.","Value is not a boolean.","Value is not an integer.","Marks production environment.","A specific keep-alive duration (in seconds).","Timeout in seconds.","Convenience type alias for BasicSettings
with no defined …","A timeout duration in milliseconds or seconds.","TLS (HTTPS) configuration.","Error deserializing as TOML.","Actix Web server settings.","Application-specific settings.","Apply a BasicSettings
value to self
.","The maximum number of pending connections.","","","","","","","","","","","","","","","","","","","","","","","","","","","Path to certificate .pem
file.","Timeout duration for connection shutdown.","Timeout duration for reading client request header.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","True if the Compress
middleware should be enabled.","True if the Logger
middleware should be enabled.","Tru if accepting TLS connections should be enabled.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Parse an instance of Self
straight from the default TOML …","Parse an instance of Self
straight from the default TOML …","","","","","","","","","","","","","","","","","","","","","","","","","Host part of address.","List of addresses for the server to bind to.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Server keep-alive preference.","The per-worker maximum concurrent TLS connection limit.","The per-worker maximum number of concurrent connections.","Marker of intended deployment environment.","The number of workers that the server should start.","Attempts to parse value
and override the referenced field
.","Attempts to read an environment variable, parse it, and …","Parse Self
from string
.","","","","","","","","","Parse an instance of Self
from a TOML file located at …","Port part of address.","Path to private key .pem
file.","Timeout duration for graceful worker shutdown.","TLS (HTTPS) configuration.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Writes the default TOML template to a new file, located at …","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,4,5,6,7,9,10,8,5,2,0,2,2,2,0,4,6,7,9,0,0,10,0,0,0,5,0,2,2,2,8,5,10,0,0,0,2,1,1,31,12,2,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,11,12,12,2,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,3,4,5,6,7,8,9,10,11,12,1,14,12,12,11,3,4,5,6,7,8,9,10,11,12,1,14,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,2,2,2,2,2,2,2,3,4,5,6,7,8,9,10,11,12,1,14,1,1,3,4,5,6,7,8,9,10,11,12,1,14,3,4,5,6,7,8,9,10,11,12,1,14,3,12,2,3,4,5,6,7,8,9,10,11,12,1,14,12,12,12,12,12,1,1,32,3,4,5,6,7,8,9,10,1,3,11,12,12,2,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,1,33,34,35,36,37,38,39,40,41,41,41,41,41,42,43,44,45,46,47],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[[[1,[13]]],[[1,[13]]]],[14,14],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[15,[3]]]],[[],[[15,[4]]]],[[],[[15,[5]]]],[[],[[15,[6]]]],[[],[[15,[7]]]],[[],[[15,[8]]]],[[],[[15,[9]]]],[[],[[15,[10]]]],[[],[[15,[11]]]],[[],[[15,[12]]]],[[],[[15,[1]]]],[[],[[15,[14]]]],0,0,0,[[3,3],16],[[4,4],16],[[5,5],16],[[6,6],16],[[7,7],16],[[8,8],16],[[9,9],16],[[10,10],16],[[11,11],16],[[12,12],16],[[[1,[17]],1],16],[[14,14],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[2,18],19],[[3,18],19],[[4,18],19],[[5,18],19],[[6,18],19],[[7,18],19],[[8,18],19],[[9,18],19],[[10,18],19],[[11,18],19],[[12,18],19],[[[1,[20]],18],19],[[14,18],19],[[]],[21,2],[22,2],[23,2],[24,2],[25,2],[26,2],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[15,[1,2]]]],[27,[[15,[1,2]]]],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[[[1,[29]]]],[14],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,[[],[[15,[2]]]],[[],[[15,[2]]]],[27,[[15,[2]]]],[27,[[15,[3,2]]]],[27,[[15,[4,2]]]],[27,[[15,[5,2]]]],[27,[[15,[6,2]]]],[27,[[15,[7,2]]]],[27,[[15,[8,2]]]],[27,[[15,[9,2]]]],[27,[[15,[10,2]]]],[[],[[15,[1,2]]]],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[15,[2]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"p":[[3,"BasicSettings"],[4,"Error"],[3,"Address"],[4,"Backlog"],[4,"KeepAlive"],[4,"MaxConnectionRate"],[4,"MaxConnections"],[4,"Mode"],[4,"NumWorkers"],[4,"Timeout"],[3,"Tls"],[3,"ActixSettings"],[8,"Clone"],[3,"NoSettings"],[4,"Result"],[15,"bool"],[8,"PartialEq"],[3,"Formatter"],[6,"Result"],[8,"Debug"],[3,"Error"],[4,"VarError"],[3,"IoError"],[3,"ParseBoolError"],[3,"ParseIntError"],[3,"Error"],[15,"str"],[15,"u64"],[8,"Hash"],[3,"TypeId"],[8,"ApplySettings"],[8,"Parse"],[13,"Manual"],[13,"EnvVarError"],[13,"FileExists"],[13,"IoError"],[13,"ParseBoolError"],[13,"ParseIntError"],[13,"ParseAddressError"],[13,"TomlError"],[13,"InvalidValue"],[13,"Seconds"],[13,"Manual"],[13,"Manual"],[13,"Manual"],[13,"Milliseconds"],[13,"Seconds"]],"a":{"https":[39],"ssl":[39]}},\
-"actix_web_httpauth":{"doc":"HTTP authentication schemes for Actix Web.","t":[0,0,0,8,3,16,0,0,11,11,11,11,11,11,11,11,11,10,11,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,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,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,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,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,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,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,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["extractors","headers","middleware","AuthExtractorConfig","AuthenticationError","Inner","basic","bearer","borrow","borrow_mut","challenge_mut","error_response","fmt","fmt","from","from","into","into_inner","new","provide","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","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","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","new","new","parse","parse","parse","parse","partial_cmp","partial_cmp","partial_cmp","password","provide","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_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","parse","partial_cmp","to_bytes","to_owned","try_from","try_into","try_into_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","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","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 for types that provides configuration …","Authentication error returned by authentication extractors.","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.","","","","Returns the argument unchanged.","","Calls U::from(self)
.","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 WWW-Authenticate
…","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self)
.","Calls U::from(self)
.","","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, …","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","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.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","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 an 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.","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self)
.","","","","Converts the challenge into a bytes suitable for HTTP …","","","","","","","","Challenge for WWW-Authenticate
header with HTTP Basic auth …","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self)
.","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 [RFC 6750, …","Provides the error_description
attribute, as defined in […","Provides the error_uri
attribute, as defined in [RFC 6750 …","Consumes the builder and returns built Bearer
instance.","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self)
.","Calls U::from(self)
.","","Provides the realm
attribute, as defined in RFC 2617.","Provides the scope
attribute, as defined in RFC 6749 §3.3.","","","","","","","","","","","","Middleware for checking HTTP authentication.","Construct HttpAuthentication
middleware for the HTTP “…","Construct HttpAuthentication
middleware for the HTTP “…","","","","","","Returns the argument unchanged.","Calls U::from(self)
.","","","","","","","Construct HttpAuthentication
middleware with the provided …"],"i":[0,0,0,0,0,52,0,0,2,2,2,2,2,2,2,2,2,52,2,2,2,2,2,2,2,2,2,2,2,2,0,0,14,14,16,14,16,14,16,14,16,14,14,16,14,16,16,14,16,14,16,14,14,16,14,16,14,16,14,16,16,14,16,0,0,0,13,13,13,21,21,22,13,21,22,13,21,22,13,21,22,13,13,21,13,13,21,22,13,13,21,22,13,22,13,13,21,22,13,21,13,21,21,13,21,22,13,13,22,21,22,13,21,22,13,21,22,13,21,22,13,0,0,0,36,0,0,36,36,36,0,0,36,36,29,29,36,29,31,32,36,29,31,32,29,31,32,29,31,32,29,31,32,29,29,31,32,29,31,32,36,36,29,29,31,31,32,32,36,36,36,36,29,29,29,31,32,29,29,36,29,31,32,29,29,31,32,28,29,31,32,29,31,32,31,36,36,29,31,32,36,29,31,32,32,36,29,31,32,36,29,31,32,29,29,31,32,36,29,31,32,31,36,29,31,32,53,54,55,56,47,0,0,0,0,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,1,47,47,47,47,47,47,47,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,0,13,13,13,50,12,50,12,12,12,12,12,50,12,12,12,50,50,50,50,50,12,12,50,12,12,12,50,12,12,50,50,12,12,50,12,50,12,12,50,12,50,12,0,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51],"f":[0,0,0,0,0,0,0,0,[[]],[[]],[[[2,[1]]]],[[[2,[1]]],3],[[[2,[[0,[4,1]]]],5],6],[[[2,[1]],5],6],[[]],[[],2],[[]],[[]],[1,[[2,[1]]]],[7],[[[2,[1]]],8],[[[2,[1]]],8],[[],9],[[],10],[[],10],[[],11],[[]],[[[2,[12]],13],[[2,[12]]]],[[[2,[12]]],[[2,[12]]]],[[[2,[12]]],[[2,[12]]]],0,0,[14,15],[[]],[[]],[[]],[[]],[14,14],[16,16],[[]],[[]],[[],14],[[14,5],6],[[16,5],6],[[]],[[]],[[17,18]],[[]],[[]],[14],[16,[[20,[19]]]],[14,14],[[]],[[]],[[],10],[[],10],[[],10],[[],10],[[],11],[[],11],[16,19],[[]],[[]],0,0,0,0,0,0,[21,12],[[]],[[]],[[]],[[]],[[]],[[]],[21,21],[22,22],[13,13],[[]],[[]],[[]],[[13,13],23],[[],21],[[13,13],24],[[],24],[[21,5],6],[[22,5],6],[[13,5],6],[[13,5],6],[[]],[[]],[[]],[[17,18]],[[],25],[13],[[]],[[]],[[]],[21],[[13,13],[[20,[23]]]],[[21,[27,[[26,[19]]]]],21],[[21,[27,[[26,[19]]]]],21],[13,8],[[]],[[]],[[]],[[],9],[22,19],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],11],[[],11],[[],11],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[[29,[28]]]],[[[29,[28]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[29,[[0,[30,28]]]]],[[29,[[0,[30,28]]]]]],[31,31],[32,32],[[]],[[]],[[]],[[[29,[[0,[33,28]]]],29],23],[[31,31],23],[[32,32],23],[[],[[29,[[0,[34,28]]]]]],[[[29,[[0,[35,28]]]],29],24],[[31,31],24],[[32,32],24],[[],24],[[],24],[[],24],[[36,5],6],[[36,5],6],[[[29,[[0,[4,28]]]],5],6],[[[29,[28]],5],6],[[31,5],6],[[31,5],6],[[32,5],6],[[32,5],6],[37,36],[[]],[38,36],[39,36],[[]],[40],[28,[[29,[28]]]],[[]],[[]],[[],25],[[[29,[[0,[41,28]]]]]],[[]],[[]],[[]],[[]],[[[29,[28]]],28],[[],42],[20,31],[[],32],[43,[[10,[36]]]],[[],[[10,[[29,[28]],44]]]],[43,[[10,[31,36]]]],[43,[[10,[32,36]]]],[[[29,[[0,[45,28]]]],29],[[20,[23]]]],[[31,31],[[20,[23]]]],[[32,32],[[20,[23]]]],[31,[[20,[19]]]],[7],[36,[[20,[46]]]],[[]],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[32,19],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[[29,[28]]],[[10,[43]]]],[31,[[10,[43]]]],[32,[[10,[43]]]],[[],11],[[],11],[[],11],[[],11],[31,19],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,[[]],[[]],[[[47,[[0,[30,1]]]]],[[47,[[0,[30,1]]]]]],[[]],[[[47,[[0,[33,1]]]],47],23],[[],[[47,[[0,[34,1]]]]]],[[[47,[[0,[35,1]]]],47],24],[[],24],[[[47,[[0,[4,1]]]],5],6],[[]],[[],25],[[[47,[[0,[41,1]]]]]],[[]],[[],42],[[],[[10,[[47,[1]],44]]]],[[[47,[[0,[45,1]]]],47],[[20,[23]]]],[[],48],[[]],[[],10],[[],10],[[],10],[[[47,[1]]],[[10,[43]]]],[[],11],[[]],0,[[]],[[]],[15,15],[[]],[[15,15],23],[[],15],[[15,15],24],[[],24],[[15,5],[[10,[49]]]],[[15,5],6],[[]],[[],25],[15],[[]],[[],15],[[15,15],[[20,[23]]]],[[]],[[],9],[[],10],[[],10],[15,[[10,[43]]]],[[],11],[[]],[[],15],0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[],50],[12,12],[[]],[[12,12],23],[[],50],[[],12],[[12,12],24],[[],24],[[50,13],50],[50,50],[50,50],[50,12],[[50,5],6],[[12,5],6],[[12,5],[[10,[49]]]],[[]],[[]],[[],25],[12],[[]],[[]],[[12,12],[[20,[23]]]],[50,50],[50,50],[[]],[[],9],[[],10],[[],10],[[],10],[[],10],[12,[[10,[43]]]],[[],11],[[],11],[[]],[[]],0,[[],[[51,[16]]]],[[],[[51,[22]]]],[[]],[[]],[[[51,[30,30]]],[[51,[30,30]]]],[[]],[[[51,[4,4]],5],6],[[]],[[]],[51],[[]],[[],10],[[],10],[[],11],[[]],[[],51]],"p":[[8,"Challenge"],[3,"AuthenticationError"],[3,"HttpResponse"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[3,"Demand"],[3,"StatusCode"],[3,"String"],[4,"Result"],[3,"TypeId"],[3,"Bearer"],[4,"Error"],[3,"Config"],[3,"Basic"],[3,"BasicAuth"],[3,"HttpRequest"],[4,"Payload"],[15,"str"],[4,"Option"],[3,"Config"],[3,"BearerAuth"],[4,"Ordering"],[15,"bool"],[15,"u64"],[4,"Cow"],[8,"Into"],[8,"Scheme"],[3,"Authorization"],[8,"Clone"],[3,"Basic"],[3,"Bearer"],[8,"Ord"],[8,"Default"],[8,"PartialEq"],[4,"ParseError"],[3,"Utf8Error"],[4,"DecodeError"],[3,"ToStrError"],[15,"never"],[8,"Hash"],[3,"HeaderName"],[3,"HeaderValue"],[4,"ParseError"],[8,"PartialOrd"],[8,"Error"],[3,"WwwAuthenticate"],[3,"Bytes"],[3,"Error"],[3,"BearerBuilder"],[3,"HttpAuthentication"],[8,"AuthExtractorConfig"],[13,"MissingField"],[13,"ToStrError"],[13,"Base64DecodeError"],[13,"Utf8Error"]]}\
+"actix_limitation":{"doc":"Rate limiter using a fixed window counter for arbitrary …","t":[3,13,17,17,17,17,4,13,3,13,3,3,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],"n":["Builder","Client","DEFAULT_COOKIE_NAME","DEFAULT_PERIOD_SECS","DEFAULT_REQUEST_LIMIT","DEFAULT_SESSION_KEY","Error","LimitExceeded","Limiter","Other","RateLimiter","Status","Time","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","builder","clone","clone","clone_into","clone_into","cookie_name","count","default","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","into","into","into","into","into","key_by","limit","limit","new_transform","period","provide","remaining","reset_epoch_utc","session_key","source","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip"],"q":["actix_limitation","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Rate limiter builder.","Redis client failed to connect or run a query.","Default cookie name.","Default period (in seconds).","Default request limit.","Default session key.","Failure modes of the rate limiter.","Limit is exceeded for a key.","Rate limiter.","Generic error.","Rate limit middleware.","A report for a given key containing the limit status.","Time conversion failed.","","","","","","","","","","","Finalizes and returns a Limiter
.","Construct rate limiter builder with defaults.","","","","","Sets name of cookie to be sent.","Consumes one rate limit unit, returning the status.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Sets rate limit key derivation function.","Set upper limit.","Returns the maximum number of requests allowed in the …","","Set limit window/period.","","Returns how many requests are left in the current period.","Returns a UNIX timestamp in UTC approximately when the …","Sets session key to be used in backend.","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,3,0,0,0,0,0,3,0,3,0,0,3,1,3,10,7,2,1,3,10,7,2,1,2,7,2,7,2,1,2,10,1,3,3,10,7,2,1,3,3,3,10,7,2,1,3,10,7,2,1,1,7,10,1,3,7,7,1,3,7,2,3,1,3,10,7,2,1,3,10,7,2,1,3,10,7,2,1,3,10,7,2],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,[[4,[2,3]]]],[[[6,[5]]],1],[7,7],[2,2],[[]],[[]],[[1,[6,[[9,[8]]]]],1],[[2,[6,[5]]],[[4,[7,3]]]],[[],10],[[1,11],12],[[3,11],12],[[3,11],12],[[10,11],12],[[7,11],12],[[2,11],12],[[]],[[]],[13,3],[14,3],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[[1,15],1],[7,15],[10],[[1,16],1],[17],[7,15],[7,15],[[1,[6,[[9,[8]]]]],1],[3,[[19,[18]]]],[[]],[[]],[[],5],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],20],[[],20],[[],20],[[],20],[[],20],[[]],[[]],[[]],[[]],[[]]],"p":[[3,"Builder"],[3,"Limiter"],[4,"Error"],[4,"Result"],[3,"String"],[8,"Into"],[3,"Status"],[15,"str"],[4,"Cow"],[3,"RateLimiter"],[3,"Formatter"],[6,"Result"],[3,"RedisError"],[3,"ComponentRange"],[15,"usize"],[3,"Duration"],[3,"Demand"],[8,"Error"],[4,"Option"],[3,"TypeId"]]},\
+"actix_protobuf":{"doc":"Protobuf payload extractor for Actix Web.","t":[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,11],"n":["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","resource_path","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"],"q":["actix_protobuf","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Content type error","Deserialize error","Payload size is bigger than 256k","Payload error","","","","","","Serialize error","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","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":[4,4,4,4,0,0,0,0,0,4,3,1,14,4,3,1,14,4,1,3,3,4,3,3,4,4,3,1,14,4,4,4,3,3,1,14,4,14,1,14,14,14,23,3,3,3,4,3,1,14,4,3,1,14,4,14,3,1,14,4,3,1,14,4],"f":[0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[[3,[2]]]],[[[3,[2]]]],[4,5],[[[3,[2]],6],7],[[[3,[2]],6],7],[[4,6],7],[[4,6],7],[[]],[[]],[[]],[8,4],[9,4],[[]],[[10,11]],[[]],[[]],[[]],[[]],[[]],[[1,12],1],[[[14,[[0,[2,13]]]],12],[[14,[[0,[2,13]]]]]],[[10,11],[[14,[[0,[2,13]]]]]],[[[15,[[14,[[0,[2,13]]]]]],16],17],[2,[[19,[5,18]]]],[[],20],[[[3,[[0,[2,13]]]],10],5],[[],21],[[],21],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[15,16],17],[[],22],[[],22],[[],22],[[],22],[[]],[[]],[[]],[[]]],"p":[[3,"ProtoBufConfig"],[8,"Message"],[3,"ProtoBuf"],[4,"ProtoBufPayloadError"],[3,"HttpResponse"],[3,"Formatter"],[6,"Result"],[4,"PayloadError"],[3,"DecodeError"],[3,"HttpRequest"],[4,"Payload"],[15,"usize"],[8,"Default"],[3,"ProtoBufMessage"],[3,"Pin"],[3,"Context"],[4,"Poll"],[3,"Error"],[4,"Result"],[3,"Path"],[3,"String"],[3,"TypeId"],[8,"ProtoBufResponseBuilder"]]},\
+"actix_redis":{"doc":"Redis integration for actix
.","t":[13,13,3,13,13,4,13,13,13,13,13,13,13,3,13,13,4,4,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,14,11,11,11,11,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":["Array","BulkString","Command","Connection","Disconnected","Error","Error","IO","Integer","Internal","Nil","NotConnected","Redis","RedisActor","Remote","Resp","RespError","RespValue","SimpleString","Unexpected","append","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","eq","equivalent","error","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_resp_int","handle","handle","into","into","into","into","into","provide","provide","push","resp_array","restarting","source","source","start","started","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip"],"q":["actix_redis","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Zero, one or more other RespValue
s.","A bulk string. In Redis terminology a string is a …","Command for sending data to Redis.","Error creating a connection, or an error with a connection …","Cancel all waiters when connection is 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 …","","Receiving message during reconnecting.","","Redis communication actor.","A remote error","A RESP parsing/serialising error occurred","","A single RESP value, this owns the data that is read/to-be …","","An unexpected error. In this context “unexpected” …","Convenience function for building dynamic Redis commands …","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Returns the argument unchanged.","","","","","","Returns the argument unchanged.","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","Push item to Resp array","Macro to create a RESP array, useful for preparing …","","","","Start new Supervisor
with RedisActor
.","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[1,1,0,13,10,0,1,13,1,13,1,10,10,0,13,13,0,0,1,13,1,4,7,10,1,13,4,7,10,1,13,1,1,1,1,4,7,10,10,1,13,13,4,7,10,10,1,1,1,1,1,1,1,1,13,13,13,1,4,4,4,7,10,1,13,10,13,1,0,4,10,13,4,4,1,10,13,4,7,10,1,13,4,7,10,1,13,4,7,10,1,13,4,7,10,1,13],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[[]],[[1,1],3],[[],3],[[4,5],6],[[7,8],9],[[10,8],9],[[10,8],9],[[1,8],[[12,[11]]]],[[13,8],[[12,[11]]]],[[13,8],[[12,[11]]]],[[]],[[]],[[]],[13,10],[14,1],[[[17,[15,16]]],1],[14,1],[[],1],[[]],[[[19,[18]]],1],[18,1],[20,1],[5,13],[21,13],[[]],[1,[[12,[1,13]]]],[[4,[12,[1,13]]]],[[4,7]],[[]],[[]],[[]],[[]],[[]],[22],[22],[1],0,[4],[10,[[24,[23]]]],[13,[[24,[23]]]],[[[25,[14]]],[[26,[4]]]],[[4,27]],[[]],[[],14],[[],14],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],28],[[],28],[[],28],[[],28],[[],28],[[]],[[]],[[]],[[]],[[]]],"p":[[4,"RespValue"],[8,"IntoIterator"],[15,"bool"],[3,"RedisActor"],[3,"Error"],[4,"Running"],[3,"Command"],[3,"Formatter"],[6,"Result"],[4,"Error"],[3,"Error"],[4,"Result"],[4,"RespError"],[3,"String"],[15,"u8"],[3,"Global"],[3,"Vec"],[15,"str"],[3,"Arc"],[15,"usize"],[3,"TrySendError"],[3,"Demand"],[8,"Error"],[4,"Option"],[8,"Into"],[3,"Addr"],[3,"Context"],[3,"TypeId"]]},\
+"actix_session":{"doc":"Session management for Actix Web.","t":[13,13,13,3,8,3,3,3,4,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,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,0,11,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,13,4,13,13,3,13,13,4,3,13,4,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,13,4,13,13,13,3,3,3,3,4,13,13,3,8,4,11,11,11,11,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,10,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,11,10,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11],"n":["Changed","Purged","Renewed","Session","SessionExt","SessionGetError","SessionInsertError","SessionMiddleware","SessionStatus","Unchanged","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","builder","clear","clone","clone","clone","clone_into","clone_into","clone_into","config","default","entries","eq","equivalent","error_response","error_response","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_request","get","get_session","insert","into","into","into","into","into","new","new_transform","provide","provide","purge","remove","remove_as","renew","source","source","status","storage","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","BrowserSession","BrowserSession","CookieContentSecurity","OnEveryRequest","OnStateChanges","PersistentSession","PersistentSession","Private","SessionLifecycle","SessionMiddlewareBuilder","Signed","TtlExtensionPolicy","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cookie_content_security","cookie_domain","cookie_http_only","cookie_name","cookie_path","cookie_same_site","cookie_secure","default","default","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","into","into","into","into","into","into","session_lifecycle","session_ttl","session_ttl_extension_policy","state_ttl","state_ttl_extension_policy","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","CookieSessionStore","Deserialization","LoadError","Other","Other","Other","RedisActorSessionStore","RedisActorSessionStoreBuilder","RedisSessionStore","RedisSessionStoreBuilder","SaveError","Serialization","Serialization","SessionKey","SessionStore","UpdateError","as_ref","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","builder","builder","cache_keygen","cache_keygen","clone","clone_into","default","delete","delete","delete","delete","eq","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","load","load","load","load","new","new","provide","provide","provide","save","save","save","save","source","source","source","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","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","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update","update","update","update","update_ttl","update_ttl","update_ttl","update_ttl","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip"],"q":["actix_session","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_session::config","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_session::storage","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Session state has been updated - the changes will have to …","The session has been flagged for deletion - the session …","The session has been flagged for renewal.","The primary interface to access and modify session state.","Extract a Session
object from various actix-web
types …","Error returned by Session::get
.","Error returned by Session::insert
.","A middleware for session management in Actix Web …","Status of a Session
.","The session state has not been modified since its …","","","","","","","","","","","A fluent API to configure SessionMiddleware
.","Clear the session.","","","","","","","Configuration options to tune the behaviour of …","","Get all raw key-value data from the session.","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","Get a value
from the session.","Extract a Session
object.","Inserts a key-value pair into the session.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Use SessionMiddleware::new
to initialize the session …","","","","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 …","","","Returns session status.","Pluggable storage backends for session state.","","","","","","","","","","","","","","","","","","","","","","","","","","A session lifecycle strategy where the session cookie …","The session cookie will expire when the current browser …","Determines how to secure the content of the session cookie.","The TTL is refreshed every time the server receives a …","The TTL is refreshed every time the session state changes …","A session lifecycle strategy where the session cookie will …","The session cookie will be a persistent cookie.","The cookie content is encrypted when using …","Determines what type of session cookie should be used and …","A fluent, customized SessionMiddleware
builder.","The cookie content is signed when using …","Configuration for which events should trigger an extension …","","","","","","","","","","","","","Finalise the builder and return a SessionMiddleware
…","","","","","","","","","","","Choose how the session cookie content should be secured.","Set the Domain
attribute for the cookie used to store the …","Set the HttpOnly
attribute for the cookie used to store …","Set the name of the cookie used to store the session ID.","Set the Path
attribute for the cookie used to store the …","Set the SameSite
attribute for the cookie used to store …","Set the Secure
attribute for the cookie used to store the …","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Determines what type of session cookie should be used and …","Specifies how long the session cookie should live.","Determines under what circumstances the TTL of your …","Sets a time-to-live (TTL) when storing the session state …","Determine under what circumstances the TTL of your session …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Use the session key, stored in the session cookie, as …","Failed to deserialize session state.","Possible failures modes for SessionStore::load
.","Something went wrong when retrieving the session state.","Something went wrong when persisting the session state.","Something went wrong when updating the session state.","Use Redis as session storage backend.","A fluent builder to construct a RedisActorSessionStore
…","Use Redis as session storage backend.","A fluent builder to construct a RedisSessionStore
instance …","Possible failures modes for SessionStore::save
.","Failed to serialize session state.","Failed to serialize session state.","A session key, the string stored in a client-side cookie …","The interface to retrieve and save the current session …","Possible failures modes for SessionStore::update
.","","","","","","","","","","","","","","","","","","","","Finalise the builder and return a RedisActorSessionStore
…","Finalise the builder and return a RedisActorSessionStore
…","A fluent API to configure RedisActorSessionStore
.","A fluent API to configure RedisSessionStore
. It takes as …","Set a custom cache key generation strategy, expecting a …","Set a custom cache key generation strategy, expecting a …","","","","Deletes a session from the store.","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Loads the session state associated to a session key.","","","","Create a new instance of RedisActorSessionStore
using the …","Create a new instance of RedisSessionStore
using the …","","","","Persist the session state for a newly created session.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Updates the session state associated to a pre-existing …","","","","Updates the TTL of the session state associated to a …","","","","","","","","","","","",""],"i":[7,7,7,0,0,0,0,0,0,7,6,4,7,12,15,6,4,7,12,15,6,4,6,4,7,6,4,7,0,7,4,7,7,12,15,7,12,12,15,15,6,4,7,12,12,15,15,4,4,49,4,6,4,7,12,15,6,6,12,15,4,4,4,4,12,15,4,0,6,4,7,12,15,6,4,7,12,15,6,4,7,12,15,6,4,7,12,15,6,4,7,12,15,0,30,0,33,33,0,30,34,0,0,34,0,3,30,31,32,33,34,3,30,31,32,33,34,3,30,31,32,33,34,30,31,32,33,34,3,3,3,3,3,3,3,31,32,30,31,32,33,34,3,30,30,30,31,32,33,34,3,30,31,32,33,34,3,32,32,31,31,30,31,32,33,34,3,30,31,32,33,34,3,30,31,32,33,34,3,30,31,32,33,34,3,30,31,32,33,34,0,46,0,46,47,48,0,0,0,0,0,47,48,0,0,0,37,39,38,40,46,47,48,37,42,41,39,38,40,46,47,48,37,42,41,38,40,39,41,38,40,41,41,42,1,39,42,41,37,37,46,46,47,47,48,48,37,39,38,40,46,47,48,37,42,41,39,38,40,46,47,48,37,42,41,1,39,42,41,39,41,46,47,48,1,39,42,41,46,47,48,41,46,47,48,39,38,40,46,47,48,37,37,42,41,39,38,40,46,47,48,37,42,41,39,38,40,46,47,48,37,42,41,1,39,42,41,1,39,42,41,39,38,40,46,47,48,37,42,41],"f":[0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[1,2],[[3,[1]]]],[4],[[[6,[[0,[5,1]]]]],[[6,[[0,[5,1]]]]]],[4,4],[7,7],[[]],[[]],[[]],0,[[],7],[4,[[10,[[9,[8,8]]]]]],[[7,7],11],[[],11],[12,[[14,[13]]]],[15,[[14,[13]]]],[[7,16],17],[[12,16],17],[[12,16],17],[[15,16],17],[[15,16],17],[[]],[[]],[[]],[18,12],[[]],[18,15],[[]],[[19,20]],[[4,21],[[24,[[23,[22]],12]]]],[[],4],[[4,[25,[8]],26],[[24,[15]]]],[[]],[[]],[[]],[[]],[[]],[[1,2],[[6,[1]]]],[6],[27],[27],[4],[[4,21],[[23,[8]]]],[[4,21],[[23,[[24,[22,8]]]]]],[4],[12,[[23,[28]]]],[15,[[23,[28]]]],[4,7],0,[[]],[[]],[[]],[[],8],[[],8],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],29],[[],29],[[],29],[[],29],[[],29],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[3,[1]]],[[6,[1]]]],[30,30],[31,31],[32,32],[33,33],[34,34],[[]],[[]],[[]],[[]],[[]],[[[3,[1]],34],[[3,[1]]]],[[[3,[1]],[23,[8]]],[[3,[1]]]],[[[3,[1]],11],[[3,[1]]]],[[[3,[1]],8],[[3,[1]]]],[[[3,[1]],8],[[3,[1]]]],[[[3,[1]],35],[[3,[1]]]],[[[3,[1]],11],[[3,[1]]]],[[],31],[[],32],[[30,16],17],[[31,16],17],[[32,16],17],[[33,16],17],[[34,16],17],[[]],[32,30],[[]],[31,30],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[3,[1]],[25,[30]]],[[3,[1]]]],[[32,36],32],[[32,33],32],[[31,36],31],[[31,33],31],[[]],[[]],[[]],[[]],[[]],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[37,21],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[38,39],[40,[[24,[41,18]]]],[[[25,[8]]],38],[[[25,[8]]],40],[38,38],[40,40],[41,41],[[]],[[],42],[37,[[45,[[44,[43]]]]]],[[39,37],[[45,[[44,[43]]]]]],[[42,37],[[45,[[44,[43]]]]]],[[41,37],[[45,[[44,[43]]]]]],[[37,37],11],[[],11],[[46,16],17],[[46,16],17],[[47,16],17],[[47,16],17],[[48,16],17],[[48,16],17],[[37,16],17],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[37,[[45,[[44,[43]]]]]],[[39,37],[[45,[[44,[43]]]]]],[[42,37],[[45,[[44,[43]]]]]],[[41,37],[[45,[[44,[43]]]]]],[[[25,[8]]],39],[[[25,[8]]],[[24,[41,18]]]],[27],[27],[27],[[[9,[8,8]],36],[[45,[[44,[43]]]]]],[[39,[9,[8,8]],36],[[45,[[44,[43]]]]]],[[42,[9,[8,8]],36],[[45,[[44,[43]]]]]],[[41,[9,[8,8]],36],[[45,[[44,[43]]]]]],[46,[[23,[28]]]],[47,[[23,[28]]]],[48,[[23,[28]]]],[[]],[[],8],[[],8],[[],8],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[8,[[24,[37]]]],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],24],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[37,[9,[8,8]],36],[[45,[[44,[43]]]]]],[[39,37,[9,[8,8]],36],[[45,[[44,[43]]]]]],[[42,37,[9,[8,8]],36],[[45,[[44,[43]]]]]],[[41,37,[9,[8,8]],36],[[45,[[44,[43]]]]]],[[37,36],[[45,[[44,[43]]]]]],[[39,37,36],[[45,[[44,[43]]]]]],[[42,37,36],[[45,[[44,[43]]]]]],[[41,37,36],[[45,[[44,[43]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]]],"p":[[8,"SessionStore"],[3,"Key"],[3,"SessionMiddlewareBuilder"],[3,"Session"],[8,"Clone"],[3,"SessionMiddleware"],[4,"SessionStatus"],[3,"String"],[3,"HashMap"],[3,"Ref"],[15,"bool"],[3,"SessionGetError"],[3,"BoxBody"],[3,"HttpResponse"],[3,"SessionInsertError"],[3,"Formatter"],[6,"Result"],[3,"Error"],[3,"HttpRequest"],[4,"Payload"],[15,"str"],[8,"DeserializeOwned"],[4,"Option"],[4,"Result"],[8,"Into"],[8,"Serialize"],[3,"Demand"],[8,"Error"],[3,"TypeId"],[4,"SessionLifecycle"],[3,"BrowserSession"],[3,"PersistentSession"],[4,"TtlExtensionPolicy"],[4,"CookieContentSecurity"],[4,"SameSite"],[3,"Duration"],[3,"SessionKey"],[3,"RedisActorSessionStoreBuilder"],[3,"RedisActorSessionStore"],[3,"RedisSessionStoreBuilder"],[3,"RedisSessionStore"],[3,"CookieSessionStore"],[8,"Future"],[3,"Box"],[3,"Pin"],[4,"LoadError"],[4,"SaveError"],[4,"UpdateError"],[8,"SessionExt"]]},\
+"actix_settings":{"doc":"Easily manage Actix Web’s settings from a TOML file and …","t":[3,3,8,4,3,13,13,13,13,13,13,13,13,13,4,13,13,13,4,13,13,13,13,4,4,13,4,3,4,13,8,13,13,13,13,13,13,6,4,3,13,12,12,10,12,11,11,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,11,11,10,11,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,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],"n":["ActixSettings","Address","ApplySettings","Backlog","BasicSettings","Default","Default","Default","Default","Default","Default","Development","Disabled","EnvVarError","Error","FileExists","InvalidValue","IoError","KeepAlive","Manual","Manual","Manual","Manual","MaxConnectionRate","MaxConnections","Milliseconds","Mode","NoSettings","NumWorkers","Os","Parse","ParseAddressError","ParseBoolError","ParseIntError","Production","Seconds","Seconds","Settings","Timeout","Tls","TomlError","actix","application","apply_settings","backlog","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","certificate","client_shutdown","client_timeout","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","enable_compression","enable_log","enabled","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","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","from","from_default_template","from_template","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","get_hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","hash","host","hosts","into","into","into","into","into","into","into","into","into","into","into","into","into","keep_alive","max_connection_rate","max_connections","mode","num_workers","override_field","override_field_with_env_var","parse","parse","parse","parse","parse","parse","parse","parse","parse","parse_toml","port","private_key","shutdown_timeout","tls","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","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","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write_toml_file","column","expected","file","got","line"],"q":["actix_settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","actix_settings::Error","","","",""],"d":["Settings types for Actix Web.","A host/port pair for the server to bind to.","Extension trait for applying parsed settings to the server …","The maximum number of pending connections.","Wrapper for server and application-specific settings.","The default number of connections. See struct docs.","The default keep-alive as defined by Actix Web.","The default connection limit. See struct docs.","The default number of connections. See struct docs.","The default number of workers. See struct docs.","The default timeout. Depends on context.","Marks development environment.","Disable keep-alive.","Environment variable does not exists or is invalid.","Errors that can be returned from methods in this crate.","File already exists on disk.","Invalid value.","I/O error.","The server keep-alive preference.","A specific number of connections.","A specific connection limit.","A specific number of connections.","A specific number of workers.","The maximum per-worker concurrent TLS connection limit.","The maximum per-worker number of concurrent connections.","Timeout in milliseconds.","Marker of intended deployment environment.","Marker type representing no defined application-specific …","The number of workers that the server should start.","Let the OS determine keep-alive duration.","A specialized FromStr
trait that returns [AtError
] errors","Value is not an address.","Value is not a boolean.","Value is not an integer.","Marks production environment.","A specific keep-alive duration (in seconds).","Timeout in seconds.","Convenience type alias for BasicSettings
with no defined …","A timeout duration in milliseconds or seconds.","TLS (HTTPS) configuration.","Error deserializing as TOML.","Actix Web server settings.","Application-specific settings.","Apply a BasicSettings
value to self
.","The maximum number of pending connections.","","","","","","","","","","","","","","","","","","","","","","","","","","","Path to certificate .pem
file.","Timeout duration for connection shutdown.","Timeout duration for reading client request header.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","True if the Compress
middleware should be enabled.","True if the Logger
middleware should be enabled.","Tru if accepting TLS connections should be enabled.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Parse an instance of Self
straight from the default TOML …","Parse an instance of Self
straight from the default TOML …","","","","","","","","","","","","","","","","","","","","","","","","","Host part of address.","List of addresses for the server to bind to.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Server keep-alive preference.","The per-worker maximum concurrent TLS connection limit.","The per-worker maximum number of concurrent connections.","Marker of intended deployment environment.","The number of workers that the server should start.","Attempts to parse value
and override the referenced field
.","Attempts to read an environment variable, parse it, and …","Parse Self
from string
.","","","","","","","","","Parse an instance of Self
from a TOML file located at …","Port part of address.","Path to private key .pem
file.","Timeout duration for graceful worker shutdown.","TLS (HTTPS) configuration.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Writes the default TOML template to a new file, located at …","","","","",""],"i":[0,0,0,0,0,4,5,6,7,9,10,8,5,2,0,2,2,2,0,4,6,7,9,0,0,10,0,0,0,5,0,2,2,2,8,5,10,0,0,0,2,1,1,31,12,2,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,11,12,12,2,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,3,4,5,6,7,8,9,10,11,12,1,14,12,12,11,3,4,5,6,7,8,9,10,11,12,1,14,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,2,2,2,2,2,2,2,3,4,5,6,7,8,9,10,11,12,1,14,1,1,3,4,5,6,7,8,9,10,11,12,1,14,3,4,5,6,7,8,9,10,11,12,1,14,3,12,2,3,4,5,6,7,8,9,10,11,12,1,14,12,12,12,12,12,1,1,32,3,4,5,6,7,8,9,10,1,3,11,12,12,2,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,2,3,4,5,6,7,8,9,10,11,12,1,14,1,33,33,33,33,33],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[11,11],[12,12],[[[1,[13]]],[[1,[13]]]],[14,14],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[15,[3]]]],[[],[[15,[4]]]],[[],[[15,[5]]]],[[],[[15,[6]]]],[[],[[15,[7]]]],[[],[[15,[8]]]],[[],[[15,[9]]]],[[],[[15,[10]]]],[[],[[15,[11]]]],[[],[[15,[12]]]],[[],[[15,[1]]]],[[],[[15,[14]]]],0,0,0,[[3,3],16],[[4,4],16],[[5,5],16],[[6,6],16],[[7,7],16],[[8,8],16],[[9,9],16],[[10,10],16],[[11,11],16],[[12,12],16],[[[1,[17]],1],16],[[14,14],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[2,18],19],[[3,18],19],[[4,18],19],[[5,18],19],[[6,18],19],[[7,18],19],[[8,18],19],[[9,18],19],[[10,18],19],[[11,18],19],[[12,18],19],[[[1,[20]],18],19],[[14,18],19],[21,2],[22,2],[[]],[23,2],[24,2],[25,2],[26,2],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[15,[1,2]]]],[27,[[15,[1,2]]]],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[[],28],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[[[1,[29]]]],[14],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,[[],[[15,[2]]]],[[],[[15,[2]]]],[27,[[15,[2]]]],[27,[[15,[3,2]]]],[27,[[15,[4,2]]]],[27,[[15,[5,2]]]],[27,[[15,[6,2]]]],[27,[[15,[7,2]]]],[27,[[15,[8,2]]]],[27,[[15,[9,2]]]],[27,[[15,[10,2]]]],[[],[[15,[1,2]]]],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[],30],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[15,[2]]]],0,0,0,0,0],"p":[[3,"BasicSettings"],[4,"Error"],[3,"Address"],[4,"Backlog"],[4,"KeepAlive"],[4,"MaxConnectionRate"],[4,"MaxConnections"],[4,"Mode"],[4,"NumWorkers"],[4,"Timeout"],[3,"Tls"],[3,"ActixSettings"],[8,"Clone"],[3,"NoSettings"],[4,"Result"],[15,"bool"],[8,"PartialEq"],[3,"Formatter"],[6,"Result"],[8,"Debug"],[4,"VarError"],[3,"Error"],[3,"Error"],[3,"IoError"],[3,"ParseIntError"],[3,"ParseBoolError"],[15,"str"],[15,"u64"],[8,"Hash"],[3,"TypeId"],[8,"ApplySettings"],[8,"Parse"],[13,"InvalidValue"]],"a":{"https":[39],"ssl":[39]}},\
+"actix_web_httpauth":{"doc":"HTTP authentication schemes for Actix Web.","t":[0,0,0,8,3,16,0,0,11,11,11,11,11,11,11,11,11,10,11,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,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,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,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,11,8,3,0,0,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,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,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["extractors","headers","middleware","AuthExtractorConfig","AuthenticationError","Inner","basic","bearer","borrow","borrow_mut","challenge_mut","error_response","fmt","fmt","from","from","into","into_inner","new","provide","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","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","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","new","new","parse","parse","parse","parse","partial_cmp","partial_cmp","partial_cmp","password","provide","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_pair","try_into_value","try_into_value","try_into_value","type_id","type_id","type_id","type_id","user_id","vzip","vzip","vzip","vzip","Challenge","WwwAuthenticate","basic","bearer","borrow","borrow_mut","clone","clone_into","cmp","default","eq","equivalent","fmt","from","get_hash","hash","into","name","parse","partial_cmp","to_bytes","to_owned","try_from","try_into","try_into_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","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","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::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 for types that provides configuration …","Authentication error returned by authentication extractors.","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.","","","","Returns the argument unchanged.","","Calls U::from(self)
.","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 WWW-Authenticate
…","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self)
.","Calls U::from(self)
.","","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, …","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","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.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","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 an 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.","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self)
.","","","","Converts the challenge into a bytes suitable for HTTP …","","","","","","","","Challenge for WWW-Authenticate
header with HTTP Basic auth …","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self)
.","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 [RFC 6750, …","Provides the error_description
attribute, as defined in […","Provides the error_uri
attribute, as defined in [RFC 6750 …","Consumes the builder and returns built Bearer
instance.","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self)
.","Calls U::from(self)
.","","Provides the realm
attribute, as defined in RFC 2617.","Provides the scope
attribute, as defined in RFC 6749 §3.3.","","","","","","","","","","","","Middleware for checking HTTP authentication.","Construct HttpAuthentication
middleware for the HTTP “…","Construct HttpAuthentication
middleware for the HTTP “…","","","","","","Returns the argument unchanged.","Calls U::from(self)
.","","","","","","","Construct HttpAuthentication
middleware with the provided …"],"i":[0,0,0,0,0,52,0,0,2,2,2,2,2,2,2,2,2,52,2,2,2,2,2,2,2,2,2,2,2,2,0,0,14,14,16,14,16,14,16,14,16,14,14,16,14,16,16,14,16,14,16,14,14,16,14,16,14,16,14,16,16,14,16,0,0,0,13,13,13,21,21,22,13,21,22,13,21,22,13,21,22,13,13,21,13,13,21,22,13,13,21,22,13,22,13,13,21,22,13,21,13,21,21,13,21,22,13,13,22,21,22,13,21,22,13,21,22,13,21,22,13,0,0,0,36,0,0,36,36,36,0,0,36,36,29,29,36,29,31,32,36,29,31,32,29,31,32,29,31,32,29,31,32,29,29,31,32,29,31,32,36,36,29,29,31,31,32,32,36,36,36,36,29,29,29,31,32,29,29,36,29,31,32,29,29,31,32,28,29,31,32,29,31,32,31,36,36,29,31,32,36,29,31,32,32,36,29,31,32,36,29,31,32,29,29,31,32,36,29,31,32,31,36,29,31,32,0,0,0,0,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,1,47,47,47,47,47,47,47,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,0,13,13,13,50,12,50,12,12,12,12,12,50,12,12,12,50,50,50,50,50,12,12,50,12,12,12,50,12,12,50,50,12,12,50,12,50,12,12,50,12,50,12,0,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51],"f":[0,0,0,0,0,0,0,0,[[]],[[]],[[[2,[1]]]],[[[2,[1]]],3],[[[2,[[0,[4,1]]]],5],6],[[[2,[1]],5],6],[[]],[[],2],[[]],[[]],[1,[[2,[1]]]],[7],[[[2,[1]]],8],[[[2,[1]]],8],[[],9],[[],10],[[],10],[[],11],[[]],[[[2,[12]],13],[[2,[12]]]],[[[2,[12]]],[[2,[12]]]],[[[2,[12]]],[[2,[12]]]],0,0,[14,15],[[]],[[]],[[]],[[]],[14,14],[16,16],[[]],[[]],[[],14],[[14,5],6],[[16,5],6],[[]],[[]],[[17,18]],[[]],[[]],[14],[16,[[20,[19]]]],[14,14],[[]],[[]],[[],10],[[],10],[[],10],[[],10],[[],11],[[],11],[16,19],[[]],[[]],0,0,0,0,0,0,[21,12],[[]],[[]],[[]],[[]],[[]],[[]],[21,21],[22,22],[13,13],[[]],[[]],[[]],[[13,13],23],[[],21],[[13,13],24],[[],24],[[21,5],6],[[22,5],6],[[13,5],6],[[13,5],6],[[]],[[]],[[]],[[17,18]],[[],25],[13],[[]],[[]],[[]],[21],[[13,13],[[20,[23]]]],[[21,[27,[[26,[19]]]]],21],[[21,[27,[[26,[19]]]]],21],[13,8],[[]],[[]],[[]],[[],9],[22,19],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],11],[[],11],[[],11],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[[29,[28]]]],[[[29,[28]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[29,[[0,[30,28]]]]],[[29,[[0,[30,28]]]]]],[31,31],[32,32],[[]],[[]],[[]],[[[29,[[0,[33,28]]]],29],23],[[31,31],23],[[32,32],23],[[],[[29,[[0,[34,28]]]]]],[[[29,[[0,[35,28]]]],29],24],[[31,31],24],[[32,32],24],[[],24],[[],24],[[],24],[[36,5],6],[[36,5],6],[[[29,[28]],5],6],[[[29,[[0,[4,28]]]],5],6],[[31,5],6],[[31,5],6],[[32,5],6],[[32,5],6],[37,36],[38,36],[[]],[39,36],[40],[[]],[28,[[29,[28]]]],[[]],[[]],[[],25],[[[29,[[0,[41,28]]]]]],[[]],[[]],[[]],[[]],[[[29,[28]]],28],[[],42],[20,31],[[],32],[43,[[10,[36]]]],[[],[[10,[[29,[28]],44]]]],[43,[[10,[31,36]]]],[43,[[10,[32,36]]]],[[[29,[[0,[45,28]]]],29],[[20,[23]]]],[[31,31],[[20,[23]]]],[[32,32],[[20,[23]]]],[31,[[20,[19]]]],[7],[36,[[20,[46]]]],[[]],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[32,19],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[],10],[[[29,[28]]],[[10,[43]]]],[31,[[10,[43]]]],[32,[[10,[43]]]],[[],11],[[],11],[[],11],[[],11],[31,19],[[]],[[]],[[]],[[]],0,0,0,0,[[]],[[]],[[[47,[[0,[30,1]]]]],[[47,[[0,[30,1]]]]]],[[]],[[[47,[[0,[33,1]]]],47],23],[[],[[47,[[0,[34,1]]]]]],[[[47,[[0,[35,1]]]],47],24],[[],24],[[[47,[[0,[4,1]]]],5],6],[[]],[[],25],[[[47,[[0,[41,1]]]]]],[[]],[[],42],[[],[[10,[[47,[1]],44]]]],[[[47,[[0,[45,1]]]],47],[[20,[23]]]],[[],48],[[]],[[],10],[[],10],[[],10],[[[47,[1]]],[[10,[43]]]],[[],11],[[]],0,[[]],[[]],[15,15],[[]],[[15,15],23],[[],15],[[15,15],24],[[],24],[[15,5],[[10,[49]]]],[[15,5],6],[[]],[[],25],[15],[[]],[[],15],[[15,15],[[20,[23]]]],[[]],[[],9],[[],10],[[],10],[15,[[10,[43]]]],[[],11],[[]],[[],15],0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[],50],[12,12],[[]],[[12,12],23],[[],50],[[],12],[[12,12],24],[[],24],[[50,13],50],[50,50],[50,50],[50,12],[[50,5],6],[[12,5],6],[[12,5],[[10,[49]]]],[[]],[[]],[[],25],[12],[[]],[[]],[[12,12],[[20,[23]]]],[50,50],[50,50],[[]],[[],9],[[],10],[[],10],[[],10],[[],10],[12,[[10,[43]]]],[[],11],[[],11],[[]],[[]],0,[[],[[51,[16]]]],[[],[[51,[22]]]],[[]],[[]],[[[51,[30,30]]],[[51,[30,30]]]],[[]],[[[51,[4,4]],5],6],[[]],[[]],[51],[[]],[[],10],[[],10],[[],11],[[]],[[],51]],"p":[[8,"Challenge"],[3,"AuthenticationError"],[3,"HttpResponse"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[3,"Demand"],[3,"StatusCode"],[3,"String"],[4,"Result"],[3,"TypeId"],[3,"Bearer"],[4,"Error"],[3,"Config"],[3,"Basic"],[3,"BasicAuth"],[3,"HttpRequest"],[4,"Payload"],[15,"str"],[4,"Option"],[3,"Config"],[3,"BearerAuth"],[4,"Ordering"],[15,"bool"],[15,"u64"],[4,"Cow"],[8,"Into"],[8,"Scheme"],[3,"Authorization"],[8,"Clone"],[3,"Basic"],[3,"Bearer"],[8,"Ord"],[8,"Default"],[8,"PartialEq"],[4,"ParseError"],[3,"Utf8Error"],[3,"ToStrError"],[4,"DecodeError"],[15,"never"],[8,"Hash"],[3,"HeaderName"],[3,"HeaderValue"],[4,"ParseError"],[8,"PartialOrd"],[8,"Error"],[3,"WwwAuthenticate"],[3,"Bytes"],[3,"Error"],[3,"BearerBuilder"],[3,"HttpAuthentication"],[8,"AuthExtractorConfig"]]}\
}');
if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
diff --git a/search.js b/search.js
deleted file mode 100644
index f0ccdfb1b..000000000
--- a/search.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(function(){const itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias",];const TY_PRIMITIVE=itemTypes.indexOf("primitive");const TY_KEYWORD=itemTypes.indexOf("keyword");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";function hasOwnPropertyRustdoc(obj,property){return Object.prototype.hasOwnProperty.call(obj,property)}function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("titles").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb}else if(nb!==0){printTab(0)}}const levenshtein_row2=[];function levenshtein(s1,s2){if(s1===s2){return 0}const s1_len=s1.length,s2_len=s2.length;if(s1_len&&s2_len){let i1=0,i2=0,a,b,c,c2;const row=levenshtein_row2;while(i11 +all_or_some.rs - source \ No newline at end of file + -1 2 3 4 @@ -55,7 +55,7 @@ 54 55/// An enum signifying that some of type `T` is allowed, or `All` (anything is allowed). -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum AllOrSome<T> { /// Everything is allowed. Usually equivalent to the `*` value. All, @@ -78,7 +78,7 @@ } /// Returns whether this is a `Some` variant. - #[allow(dead_code)] + #[allow(dead_code)] pub fn is_some(&self) -> bool { !self.is_all() } @@ -100,7 +100,7 @@ } } -#[cfg(test)] +#[cfg(test)] #[test] fn tests() { assert!(AllOrSome::<()>::All.is_all()); @@ -110,4 +110,4 @@ assert!(AllOrSome::Some(()).is_some()); }
1 +builder.rs - source \ No newline at end of file + -1 2 3 4 @@ -758,7 +758,7 @@ /// /// // `cors` can now be used in `App::wrap`. /// ``` -#[derive(Debug)] +#[derive(Debug)] pub struct Cors { inner: Rc<Inner>, error: Option<Either<HttpError, CorsError>>, @@ -787,7 +787,7 @@ preflight: true, send_wildcard: false, supports_credentials: true, - #[cfg(feature = "draft-private-network-access")] + #[cfg(feature = "draft-private-network-access")] allow_private_network_access: false, vary_header: true, block_on_origin_mismatch: true, @@ -1116,7 +1116,7 @@ /// Defaults to `false`. /// /// [Private Network Access]: https://wicg.github.io/private-network-access - #[cfg(feature = "draft-private-network-access")] + #[cfg(feature = "draft-private-network-access")] #[cfg_attr(docsrs, doc(cfg(feature = "draft-private-network-access")))] pub fn allow_private_network_access(mut self) -> Cors { if let Some(cors) = cors(&mut self.inner, &self.error) { @@ -1200,7 +1200,7 @@ preflight: true, send_wildcard: false, supports_credentials: false, - #[cfg(feature = "draft-private-network-access")] + #[cfg(feature = "draft-private-network-access")] allow_private_network_access: false, vary_header: true, block_on_origin_mismatch: true, @@ -1298,7 +1298,7 @@ .unwrap() } -#[cfg(test)] +#[cfg(test)] mod test { use std::convert::{Infallible, TryInto}; @@ -1312,7 +1312,7 @@ use super::*; - #[test] + #[test] fn illegal_allow_credentials() { // using the permissive defaults (all origins allowed) and adding send_wildcard // and supports_credentials should error on construction @@ -1325,7 +1325,7 @@ .is_err()); } - #[actix_web::test] + #[actix_web::test] async fn restrictive_defaults() { let cors = Cors::default() .new_transform(test::ok_service()) @@ -1340,12 +1340,12 @@ assert_eq!(resp.status(), StatusCode::BAD_REQUEST); } - #[actix_web::test] + #[actix_web::test] async fn allowed_header_try_from() { let _cors = Cors::default().allowed_header("Content-Type"); } - #[actix_web::test] + #[actix_web::test] async fn allowed_header_try_into() { struct ContentType; @@ -1360,7 +1360,7 @@ let _cors = Cors::default().allowed_header(ContentType); } - #[actix_web::test] + #[actix_web::test] async fn middleware_generic_over_body_type() { let srv = fn_service(|req: ServiceRequest| async move { Ok(req.into_response(HttpResponse::with_body(StatusCode::OK, body::None::new()))) @@ -1370,4 +1370,4 @@ } }
1 +error.rs - source \ No newline at end of file + -1 2 3 4 @@ -52,39 +52,39 @@ use derive_more::{Display, Error}; /// Errors that can occur when processing CORS guarded requests. -#[derive(Debug, Clone, Display, Error)] +#[derive(Debug, Clone, Display, Error)] #[non_exhaustive] pub enum CorsError { /// Allowed origin argument must not be wildcard (`*`). - #[display(fmt = "`allowed_origin` argument must not be wildcard (`*`)")] + #[display(fmt = "`allowed_origin` argument must not be wildcard (`*`)")] WildcardOrigin, /// Request header `Origin` is required but was not provided. - #[display(fmt = "Request header `Origin` is required but was not provided")] + #[display(fmt = "Request header `Origin` is required but was not provided")] MissingOrigin, /// Request header `Access-Control-Request-Method` is required but is missing. - #[display(fmt = "Request header `Access-Control-Request-Method` is required but is missing")] + #[display(fmt = "Request header `Access-Control-Request-Method` is required but is missing")] MissingRequestMethod, /// Request header `Access-Control-Request-Method` has an invalid value. - #[display(fmt = "Request header `Access-Control-Request-Method` has an invalid value")] + #[display(fmt = "Request header `Access-Control-Request-Method` has an invalid value")] BadRequestMethod, /// Request header `Access-Control-Request-Headers` has an invalid value. - #[display(fmt = "Request header `Access-Control-Request-Headers` has an invalid value")] + #[display(fmt = "Request header `Access-Control-Request-Headers` has an invalid value")] BadRequestHeaders, /// Origin is not allowed to make this request. - #[display(fmt = "Origin is not allowed to make this request")] + #[display(fmt = "Origin is not allowed to make this request")] OriginNotAllowed, /// Request method is not allowed. - #[display(fmt = "Requested method is not allowed")] + #[display(fmt = "Requested method is not allowed")] MethodNotAllowed, /// One or more request headers are not allowed. - #[display(fmt = "One or more request headers are not allowed")] + #[display(fmt = "One or more request headers are not allowed")] HeadersNotAllowed, } @@ -98,4 +98,4 @@ } }
1 +inner.rs - source \ No newline at end of file + -1 2 3 4 @@ -426,9 +426,9 @@ use crate::{AllOrSome, CorsError}; -#[derive(Clone)] +#[derive(Clone)] pub(crate) struct OriginFn { - #[allow(clippy::type_complexity)] + #[allow(clippy::type_complexity)] pub(crate) boxed_fn: Rc<dyn Fn(&HeaderValue, &RequestHead) -> bool>, } @@ -453,7 +453,7 @@ .and_then(|meth| Method::try_from(meth).ok()) } -#[derive(Debug, Clone)] +#[derive(Debug, Clone)] pub(crate) struct Inner { pub(crate) allowed_origins: AllOrSome<HashSet<HeaderValue>>, pub(crate) allowed_origins_fns: SmallVec<[OriginFn; 4]>, @@ -472,7 +472,7 @@ pub(crate) preflight: bool, pub(crate) send_wildcard: bool, pub(crate) supports_credentials: bool, - #[cfg(feature = "draft-private-network-access")] + #[cfg(feature = "draft-private-network-access")] pub(crate) allow_private_network_access: bool, pub(crate) vary_header: bool, pub(crate) block_on_origin_mismatch: bool, @@ -485,7 +485,7 @@ /// header should be added to the response or not. pub(crate) fn validate_origin(&self, req: &RequestHead) -> Result<bool, CorsError> { // return early if all origins are allowed or get ref to allowed origins set - #[allow(clippy::mutable_key_type)] + #[allow(clippy::mutable_key_type)] let allowed_origins = match &self.allowed_origins { AllOrSome::All if self.allowed_origins_fns.is_empty() => return Ok(true), AllOrSome::Some(allowed_origins) => allowed_origins, @@ -569,7 +569,7 @@ pub(crate) fn validate_allowed_headers(&self, req: &RequestHead) -> Result<(), CorsError> { // return early if all headers are allowed or get ref to allowed origins set - #[allow(clippy::mutable_key_type)] + #[allow(clippy::mutable_key_type)] let allowed_headers = match &self.allowed_headers { AllOrSome::All => return Ok(()), AllOrSome::Some(allowed_headers) => allowed_headers, @@ -587,7 +587,7 @@ Some(Ok(headers)) => { // the set is ephemeral we take care not to mutate the // inserted keys so this lint exception is acceptable - #[allow(clippy::mutable_key_type)] + #[allow(clippy::mutable_key_type)] let mut request_headers = HashSet::with_capacity(8); // try to convert each header name in the comma-separated list @@ -630,19 +630,19 @@ val.extend(hdr.as_bytes()); val.extend(b", Origin, Access-Control-Request-Method, Access-Control-Request-Headers"); - #[cfg(feature = "draft-private-network-access")] + #[cfg(feature = "draft-private-network-access")] val.extend(b", Access-Control-Allow-Private-Network"); val.try_into().unwrap() } - #[cfg(feature = "draft-private-network-access")] + #[cfg(feature = "draft-private-network-access")] None => HeaderValue::from_static( "Origin, Access-Control-Request-Method, Access-Control-Request-Headers, \ Access-Control-Allow-Private-Network", ), - #[cfg(not(feature = "draft-private-network-access"))] + #[cfg(not(feature = "draft-private-network-access"))] None => HeaderValue::from_static( "Origin, Access-Control-Request-Method, Access-Control-Request-Headers", ), @@ -651,7 +651,7 @@ headers.insert(header::VARY, value); } -#[cfg(test)] +#[cfg(test)] mod test { use std::rc::Rc; @@ -670,7 +670,7 @@ val.to_str().unwrap() } - #[actix_web::test] + #[actix_web::test] async fn test_validate_not_allowed_origin() { let cors = Cors::default() .allowed_origin("https://www.example.com") @@ -688,7 +688,7 @@ assert!(cors.inner.validate_allowed_headers(req.head()).is_err()); } - #[actix_web::test] + #[actix_web::test] async fn test_preflight() { let mut cors = Cors::default() .allow_any_origin() @@ -780,7 +780,7 @@ assert_eq!(resp.status(), StatusCode::OK); } - #[actix_web::test] + #[actix_web::test] async fn allow_fn_origin_equals_head_origin() { let cors = Cors::default() .allowed_origin_fn(|origin, head| { @@ -814,4 +814,4 @@ } }
1 +lib.rs - source \ No newline at end of file + -1 2 3 4 @@ -117,7 +117,7 @@ //! //! [Private Network Access]: https://wicg.github.io/private-network-access -#![forbid(unsafe_code)] +#![forbid(unsafe_code)] #![deny(rust_2018_idioms, nonstandard_style)] #![warn(future_incompatible, missing_docs, missing_debug_implementations)] #![doc(html_logo_url = "https://actix.rs/img/logo.png")] @@ -136,4 +136,4 @@ use inner::{Inner, OriginFn}; pub use middleware::CorsMiddleware;
1 +middleware.rs - source \ No newline at end of file + -1 2 3 4 @@ -325,7 +325,7 @@ /// /// This struct contains the settings for CORS requests to be validated and for responses to /// be generated. -#[doc(hidden)] +#[doc(hidden)] #[derive(Debug, Clone)] pub struct CorsMiddleware<S> { pub(crate) service: S, @@ -395,7 +395,7 @@ res.insert_header((header::ACCESS_CONTROL_ALLOW_HEADERS, headers.clone())); } - #[cfg(feature = "draft-private-network-access")] + #[cfg(feature = "draft-private-network-access")] if inner.allow_private_network_access && req .headers() @@ -476,7 +476,7 @@ ); } - #[cfg(feature = "draft-private-network-access")] + #[cfg(feature = "draft-private-network-access")] if inner.allow_private_network_access && res .request() @@ -545,7 +545,7 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use actix_web::{ dev::Transform, @@ -557,12 +557,12 @@ use super::*; use crate::Cors; - #[test] + #[test] fn compat_compat() { let _ = App::new().wrap(Compat::new(Cors::default())); } - #[actix_web::test] + #[actix_web::test] async fn test_options_no_origin() { // Tests case where allowed_origins is All but there are validate functions to run incase. // In this case, origins are only allowed when the DNT header is sent. @@ -602,4 +602,4 @@ } }
1 +config.rs - source \ No newline at end of file + -1 2 3 4 @@ -105,7 +105,7 @@ use crate::IdentityMiddleware; -#[derive(Debug, Clone)] +#[derive(Debug, Clone)] pub(crate) struct Configuration { pub(crate) on_logout: LogoutBehaviour, pub(crate) login_deadline: Option<Duration>, @@ -126,7 +126,7 @@ /// invoked. /// /// [`Identity::logout`]: crate::Identity::logout -#[derive(Debug, Clone)] +#[derive(Debug, Clone)] #[non_exhaustive] pub enum LogoutBehaviour { /// When [`Identity::logout`](crate::Identity::logout) is called, purge the current session. @@ -147,7 +147,7 @@ /// parameters. /// /// Use [`IdentityMiddleware::builder`] to get started! -#[derive(Debug, Clone)] +#[derive(Debug, Clone)] pub struct IdentityMiddlewareBuilder { configuration: Configuration, } @@ -201,4 +201,4 @@ } }
1 +identity.rs - source \ No newline at end of file + -1 2 3 4 @@ -337,7 +337,7 @@ /// ``` pub struct Identity(IdentityInner); -#[derive(Clone)] +#[derive(Clone)] pub(crate) struct IdentityInner { pub(crate) session: Session, pub(crate) logout_behaviour: LogoutBehaviour, @@ -516,7 +516,7 @@ type Error = Error; type Future = Ready<Result<Self, Self::Error>>; - #[inline] + #[inline] fn from_request(req: &HttpRequest, _: &mut Payload) -> Self::Future { ready(Identity::extract(&req.extensions()).map_err(|err| { let res = actix_web::error::InternalError::from_response( @@ -529,4 +529,4 @@ } }
1 +identity_ext.rs - source \ No newline at end of file + -1 2 3 4 @@ -53,4 +53,4 @@ } }
1 +lib.rs - source \ No newline at end of file + -1 2 3 4 @@ -184,7 +184,7 @@ //! [`IdentityMiddlewareBuilder::visit_deadline`]: config::IdentityMiddlewareBuilder::visit_deadline //! [`IdentityMiddlewareBuilder::login_deadline`]: config::IdentityMiddlewareBuilder::login_deadline -#![forbid(unsafe_code)] +#![forbid(unsafe_code)] #![deny(rust_2018_idioms, nonstandard_style, missing_docs)] #![warn(future_incompatible)] @@ -195,4 +195,4 @@ pub use self::{identity::Identity, identity_ext::IdentityExt, middleware::IdentityMiddleware};
1 +middleware.rs - source \ No newline at end of file + -1 2 3 4 @@ -296,7 +296,7 @@ /// # ; /// } /// ``` -#[derive(Default, Clone)] +#[derive(Default, Clone)] pub struct IdentityMiddleware { configuration: Rc<Configuration>, } @@ -334,7 +334,7 @@ } } -#[doc(hidden)] +#[doc(hidden)] pub struct InnerIdentityMiddleware<S> { service: Rc<S>, configuration: Rc<Configuration>, @@ -380,7 +380,7 @@ // easier to scan with returns where they are // especially if the function body were to evolve in the future -#[allow(clippy::needless_return)] +#[allow(clippy::needless_return)] fn enforce_policies(req: &ServiceRequest, configuration: &Configuration) { let must_extract_identity = configuration.login_deadline.is_some() || configuration.visit_deadline.is_some(); @@ -511,4 +511,4 @@ LogOut, }
1 +builder.rs - source \ No newline at end of file + -1 2 3 4 @@ -172,7 +172,7 @@ 171use std::{borrow::Cow, sync::Arc, time::Duration}; -#[cfg(feature = "session")] +#[cfg(feature = "session")] use actix_session::SessionExt as _; use actix_web::dev::ServiceRequest; use redis::Client; @@ -180,14 +180,14 @@ use crate::{errors::Error, GetArcBoxKeyFn, Limiter}; /// Rate limiter builder. -#[derive(Debug)] +#[derive(Debug)] pub struct Builder { pub(crate) redis_url: String, pub(crate) limit: usize, pub(crate) period: Duration, pub(crate) get_key_fn: Option<GetArcBoxKeyFn>, pub(crate) cookie_name: Cow<'static, str>, - #[cfg(feature = "session")] + #[cfg(feature = "session")] pub(crate) session_key: Cow<'static, str>, } @@ -218,7 +218,7 @@ /// Sets name of cookie to be sent. /// /// This method should not be used in combination of `key_by` as they conflict. - #[deprecated = "Prefer `key_by`."] + #[deprecated = "Prefer `key_by`."] pub fn cookie_name(&mut self, cookie_name: impl Into<Cow<'static, str>>) -> &mut Self { if self.get_key_fn.is_some() { panic!("This method should not be used in combination of get_key as they overwrite each other") @@ -230,7 +230,7 @@ /// Sets session key to be used in backend. /// /// This method should not be used in combination of `key_by` as they conflict. - #[deprecated = "Prefer `key_by`."] + #[deprecated = "Prefer `key_by`."] #[cfg(feature = "session")] pub fn session_key(&mut self, session_key: impl Into<Cow<'static, str>>) -> &mut Self { if self.get_key_fn.is_some() { @@ -250,17 +250,17 @@ } else { let cookie_name = self.cookie_name.clone(); - #[cfg(feature = "session")] + #[cfg(feature = "session")] let session_key = self.session_key.clone(); let closure: GetArcBoxKeyFn = Arc::new(Box::new(move |req: &ServiceRequest| { - #[cfg(feature = "session")] + #[cfg(feature = "session")] let res = req .get_session() .get(&session_key) .unwrap_or_else(|_| req.cookie(&cookie_name).map(|c| c.to_string())); - #[cfg(not(feature = "session"))] + #[cfg(not(feature = "session"))] let res = req.cookie(&cookie_name).map(|c| c.to_string()); res @@ -277,11 +277,11 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use super::*; - #[test] + #[test] fn test_create_builder() { let redis_url = "redis://127.0.0.1"; let period = Duration::from_secs(10); @@ -291,19 +291,19 @@ period, get_key_fn: Some(Arc::new(|_| None)), cookie_name: Cow::Owned("session".to_string()), - #[cfg(feature = "session")] + #[cfg(feature = "session")] session_key: Cow::Owned("rate-api".to_string()), }; assert_eq!(builder.redis_url, redis_url); assert_eq!(builder.limit, 100); assert_eq!(builder.period, period); - #[cfg(feature = "session")] + #[cfg(feature = "session")] assert_eq!(builder.session_key, "rate-api"); assert_eq!(builder.cookie_name, "session"); } - #[test] + #[test] fn test_create_limiter() { let redis_url = "redis://127.0.0.1"; let period = Duration::from_secs(20); @@ -313,7 +313,7 @@ period: Duration::from_secs(10), get_key_fn: Some(Arc::new(|_| None)), cookie_name: Cow::Borrowed("sid"), - #[cfg(feature = "session")] + #[cfg(feature = "session")] session_key: Cow::Borrowed("key"), }; @@ -323,7 +323,7 @@ assert_eq!(limiter.period, period); } - #[test] + #[test] #[should_panic = "Redis URL did not parse"] fn test_create_limiter_error() { let redis_url = "127.0.0.1"; @@ -334,7 +334,7 @@ period: Duration::from_secs(10), get_key_fn: Some(Arc::new(|_| None)), cookie_name: Cow::Borrowed("sid"), - #[cfg(feature = "session")] + #[cfg(feature = "session")] session_key: Cow::Borrowed("key"), }; @@ -342,4 +342,4 @@ } }
1 +errors.rs - source \ No newline at end of file + -1 2 3 4 @@ -46,28 +46,28 @@ use crate::status::Status; /// Failure modes of the rate limiter. -#[derive(Debug, Display, Error, From)] +#[derive(Debug, Display, Error, From)] pub enum Error { /// Redis client failed to connect or run a query. - #[display(fmt = "Redis client failed to connect or run a query")] + #[display(fmt = "Redis client failed to connect or run a query")] Client(redis::RedisError), /// Limit is exceeded for a key. - #[display(fmt = "Limit is exceeded for a key")] + #[display(fmt = "Limit is exceeded for a key")] #[from(ignore)] - LimitExceeded(#[error(not(source))] Status), + LimitExceeded(#[error(not(source))] Status), /// Time conversion failed. - #[display(fmt = "Time conversion failed")] + #[display(fmt = "Time conversion failed")] Time(time::error::ComponentRange), /// Generic error. - #[display(fmt = "Generic error")] + #[display(fmt = "Generic error")] #[from(ignore)] - Other(#[error(not(source))] String), + Other(#[error(not(source))] String), } -#[cfg(test)] +#[cfg(test)] mod tests { use super::*; @@ -84,4 +84,4 @@ } }
1 +lib.rs - source \ No newline at end of file + -1 2 3 4 @@ -183,7 +183,7 @@ //! ```toml //! [dependencies] //! actix-web = "4" -#![doc = concat!("actix-limitation = \"", env!("CARGO_PKG_VERSION_MAJOR"), ".", env!("CARGO_PKG_VERSION_MINOR"),"\"")] +#![doc = concat!("actix-limitation = \"", env!("CARGO_PKG_VERSION_MAJOR"), ".", env!("CARGO_PKG_VERSION_MINOR"),"\"")] //! ``` //! //! ```no_run @@ -224,7 +224,7 @@ //! } //! ``` -#![forbid(unsafe_code)] +#![forbid(unsafe_code)] #![deny(rust_2018_idioms, nonstandard_style)] #![warn(future_incompatible, missing_docs, missing_debug_implementations)] #![doc(html_logo_url = "https://actix.rs/img/logo.png")] @@ -252,7 +252,7 @@ pub const DEFAULT_COOKIE_NAME: &str = "sid"; /// Default session key. -#[cfg(feature = "session")] +#[cfg(feature = "session")] pub const DEFAULT_SESSION_KEY: &str = "rate-api-id"; /// Helper trait to impl Debug on GetKeyFn type @@ -274,7 +274,7 @@ type GetArcBoxKeyFn = Arc<GetKeyFn>; /// Rate limiter. -#[derive(Debug, Clone)] +#[derive(Debug, Clone)] pub struct Limiter { client: Client, limit: usize, @@ -287,7 +287,7 @@ /// /// See [`redis-rs` docs](https://docs.rs/redis/0.21/redis/#connection-parameters) on connection /// parameters for how to set the Redis URL. - #[must_use] + #[must_use] pub fn builder(redis_url: impl Into<String>) -> Builder { Builder { redis_url: redis_url.into(), @@ -295,7 +295,7 @@ period: Duration::from_secs(DEFAULT_PERIOD_SECS), get_key_fn: None, cookie_name: Cow::Borrowed(DEFAULT_COOKIE_NAME), - #[cfg(feature = "session")] + #[cfg(feature = "session")] session_key: Cow::Borrowed(DEFAULT_SESSION_KEY), } } @@ -342,11 +342,11 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use super::*; - #[test] + #[test] fn test_create_limiter() { let mut builder = Limiter::builder("redis://127.0.0.1:6379/1"); let limiter = builder.build(); @@ -358,4 +358,4 @@ } }
1 +middleware.rs - source \ No newline at end of file + -1 2 3 4 @@ -127,7 +127,7 @@ use crate::{Error as LimitationError, Limiter}; /// Rate limit middleware. -#[derive(Debug, Default)] +#[derive(Debug, Default)] #[non_exhaustive] pub struct RateLimiter; @@ -151,7 +151,7 @@ } /// Rate limit middleware service. -#[derive(Debug)] +#[derive(Debug)] pub struct RateLimiterMiddleware<S> { service: Rc<S>, } @@ -230,4 +230,4 @@ } }
1 +status.rs - source \ No newline at end of file + -1 2 3 4 @@ -124,7 +124,7 @@ use crate::Error as LimitationError; /// A report for a given key containing the limit status. -#[derive(Debug, Clone)] +#[derive(Debug, Clone)] pub struct Status { pub(crate) limit: usize, pub(crate) remaining: usize, @@ -133,7 +133,7 @@ impl Status { /// Constructs status limit status from parts. - #[must_use] + #[must_use] pub(crate) fn new(count: usize, limit: usize, reset_epoch_utc: usize) -> Self { let remaining = if count >= limit { 0 } else { limit - count }; @@ -145,19 +145,19 @@ } /// Returns the maximum number of requests allowed in the current period. - #[must_use] + #[must_use] pub fn limit(&self) -> usize { self.limit } /// Returns how many requests are left in the current period. - #[must_use] + #[must_use] pub fn remaining(&self) -> usize { self.remaining } /// Returns a UNIX timestamp in UTC approximately when the next period will begin. - #[must_use] + #[must_use] pub fn reset_epoch_utc(&self) -> usize { self.reset_epoch_utc } @@ -178,11 +178,11 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use super::*; - #[test] + #[test] fn test_create_status() { let status = Status { limit: 100, @@ -195,7 +195,7 @@ assert_eq!(status.reset_epoch_utc(), 1000); } - #[test] + #[test] fn test_build_status() { let count = 200; let limit = 100; @@ -205,7 +205,7 @@ assert_eq!(status.reset_epoch_utc(), 2000); } - #[test] + #[test] fn test_build_status_limit() { let limit = 100; let status = Status::new(0, limit, 2000); @@ -214,21 +214,21 @@ assert_eq!(status.reset_epoch_utc(), 2000); } - #[test] + #[test] fn test_epoch_utc_plus_zero() { let duration = Duration::from_secs(0); let seconds = Status::epoch_utc_plus(duration).unwrap(); assert!(seconds as u64 >= duration.as_secs()); } - #[test] + #[test] fn test_epoch_utc_plus() { let duration = Duration::from_secs(10); let seconds = Status::epoch_utc_plus(duration).unwrap(); assert!(seconds as u64 >= duration.as_secs() + 10); } - #[test] + #[test] #[should_panic = "Source duration value is out of range for the target type"] fn test_epoch_utc_plus_overflow() { let duration = Duration::from_secs(10000000000000000000); @@ -236,4 +236,4 @@ } }
1 +lib.rs - source \ No newline at end of file + -1 2 3 4 @@ -335,7 +335,7 @@ 335//! Protobuf payload extractor for Actix Web. -#![forbid(unsafe_code)] +#![forbid(unsafe_code)] #![deny(rust_2018_idioms, nonstandard_style)] #![warn(future_incompatible)] @@ -363,26 +363,26 @@ }; use prost::{DecodeError as ProtoBufDecodeError, EncodeError as ProtoBufEncodeError, Message}; -#[derive(Debug, Display)] +#[derive(Debug, Display)] pub enum ProtoBufPayloadError { /// Payload size is bigger than 256k - #[display(fmt = "Payload size is bigger than 256k")] + #[display(fmt = "Payload size is bigger than 256k")] Overflow, /// Content type error - #[display(fmt = "Content type error")] + #[display(fmt = "Content type error")] ContentType, /// Serialize error - #[display(fmt = "ProtoBuf serialize error: {}", _0)] + #[display(fmt = "ProtoBuf serialize error: {}", _0)] Serialize(ProtoBufEncodeError), /// Deserialize error - #[display(fmt = "ProtoBuf deserialize error: {}", _0)] + #[display(fmt = "ProtoBuf deserialize error: {}", _0)] Deserialize(ProtoBufDecodeError), /// Payload error - #[display(fmt = "Error that occur during reading payload: {}", _0)] + #[display(fmt = "Error that occur during reading payload: {}", _0)] Payload(PayloadError), } @@ -466,7 +466,7 @@ type Error = Error; type Future = LocalBoxFuture<'static, Result<Self, Error>>; - #[inline] + #[inline] fn from_request(req: &HttpRequest, payload: &mut Payload) -> Self::Future { let limit = req .app_data::<ProtoBufConfig>() @@ -606,7 +606,7 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use actix_web::{http::header, test::TestRequest}; @@ -626,15 +626,15 @@ } } - #[derive(Clone, PartialEq, Eq, Message)] + #[derive(Clone, PartialEq, Eq, Message)] pub struct MyObject { - #[prost(int32, tag = "1")] + #[prost(int32, tag = "1")] pub number: i32, - #[prost(string, tag = "2")] + #[prost(string, tag = "2")] pub name: String, } - #[actix_web::test] + #[actix_web::test] async fn test_protobuf() { let protobuf = ProtoBuf(MyObject { number: 9, @@ -646,7 +646,7 @@ assert_eq!(ct, "application/protobuf"); } - #[actix_web::test] + #[actix_web::test] async fn test_protobuf_message() { let (req, mut pl) = TestRequest::default().to_http_parts(); let protobuf = ProtoBufMessage::<MyObject>::new(&req, &mut pl).await; @@ -669,4 +669,4 @@ } }
1 +lib.rs - source \ No newline at end of file + -1 2 3 4 @@ -29,7 +29,7 @@ 29//! Redis integration for `actix`. -#![forbid(unsafe_code)] +#![forbid(unsafe_code)] #![deny(rust_2018_idioms, nonstandard_style)] #![warn(future_incompatible)] @@ -40,21 +40,21 @@ pub use self::redis::{Command, RedisActor}; /// General purpose `actix-redis` error. -#[derive(Debug, Display, Error, From)] +#[derive(Debug, Display, Error, From)] pub enum Error { - #[display(fmt = "Redis error: {}", _0)] + #[display(fmt = "Redis error: {}", _0)] Redis(redis_async::error::Error), /// Receiving message during reconnecting. - #[display(fmt = "Redis: Not connected")] + #[display(fmt = "Redis: Not connected")] NotConnected, /// Cancel all waiters when connection is dropped. - #[display(fmt = "Redis: Disconnected")] + #[display(fmt = "Redis: Disconnected")] Disconnected, } -#[cfg(feature = "web")] +#[cfg(feature = "web")] impl actix_web::ResponseError for Error {}
1 +redis.rs - source \ No newline at end of file + -1 2 3 4 @@ -162,7 +162,7 @@ use crate::Error; /// Command for sending data to Redis. -#[derive(Debug)] +#[derive(Debug)] pub struct Command(pub RespValue); impl Message for Command { @@ -285,4 +285,4 @@ } }
1 +config.rs - source \ No newline at end of file + -1 2 3 4 @@ -405,7 +405,7 @@ /// Determines what type of session cookie should be used and how its lifecycle should be managed. /// /// Used by [`SessionMiddlewareBuilder::session_lifecycle`]. -#[derive(Debug, Clone, From)] +#[derive(Debug, Clone, From)] #[non_exhaustive] pub enum SessionLifecycle { /// The session cookie will expire when the current browser session ends. @@ -435,7 +435,7 @@ /// /// Due to its `Into<SessionLifecycle>` implementation, a `BrowserSession` can be passed directly /// to [`SessionMiddlewareBuilder::session_lifecycle()`]. -#[derive(Debug, Clone)] +#[derive(Debug, Clone)] pub struct BrowserSession { state_ttl: Duration, state_ttl_extension_policy: TtlExtensionPolicy, @@ -513,7 +513,7 @@ /// ``` /// /// [persistent]: https://www.whitehatsec.com/glossary/content/persistent-session-cookie -#[derive(Debug, Clone)] +#[derive(Debug, Clone)] pub struct PersistentSession { session_ttl: Duration, ttl_extension_policy: TtlExtensionPolicy, @@ -563,7 +563,7 @@ /// /// If you are using a [`PersistentSession`], `TtlExtensionPolicy` controls both the expiration of /// the session cookie and the TTL of the session state on the storage backend. -#[derive(Debug, Clone)] +#[derive(Debug, Clone)] #[non_exhaustive] pub enum TtlExtensionPolicy { /// The TTL is refreshed every time the server receives a request associated with a session. @@ -583,7 +583,7 @@ /// Determines how to secure the content of the session cookie. /// /// Used by [`SessionMiddlewareBuilder::cookie_content_security`]. -#[derive(Debug, Clone, Copy)] +#[derive(Debug, Clone, Copy)] pub enum CookieContentSecurity { /// The cookie content is encrypted when using `CookieContentSecurity::Private`. /// @@ -607,7 +607,7 @@ } /// A fluent, customized [`SessionMiddleware`] builder. -#[must_use] +#[must_use] pub struct SessionMiddlewareBuilder<Store: SessionStore> { storage_backend: Store, configuration: Configuration, @@ -741,25 +741,25 @@ } /// Finalise the builder and return a [`SessionMiddleware`] instance. - #[must_use] + #[must_use] pub fn build(self) -> SessionMiddleware<Store> { SessionMiddleware::from_parts(self.storage_backend, self.configuration) } } -#[derive(Clone)] +#[derive(Clone)] pub(crate) struct Configuration { pub(crate) cookie: CookieConfiguration, pub(crate) session: SessionConfiguration, pub(crate) ttl_extension_policy: TtlExtensionPolicy, } -#[derive(Clone)] +#[derive(Clone)] pub(crate) struct SessionConfiguration { pub(crate) state_ttl: Duration, } -#[derive(Clone)] +#[derive(Clone)] pub(crate) struct CookieConfiguration { pub(crate) secure: bool, pub(crate) http_only: bool, @@ -792,4 +792,4 @@ } }
1 +lib.rs - source \ No newline at end of file + -1 2 3 4 @@ -870,7 +870,7 @@ //! [`RedisSessionStore`]: storage::RedisSessionStore //! [`RedisActorSessionStore`]: storage::RedisActorSessionStore -#![forbid(unsafe_code)] +#![forbid(unsafe_code)] #![deny(rust_2018_idioms, nonstandard_style)] #![warn(future_incompatible, missing_docs)] #![doc(html_logo_url = "https://actix.rs/img/logo.png")] @@ -889,7 +889,7 @@ session_ext::SessionExt, }; -#[cfg(test)] +#[cfg(test)] pub mod test_helpers { use actix_web::cookie::Key; @@ -1389,7 +1389,7 @@ ); } - #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] + #[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct IndexResponse { user_id: Option<String>, counter: i32, @@ -1423,7 +1423,7 @@ Ok(HttpResponse::Ok().json(&IndexResponse { user_id, counter })) } - #[derive(Deserialize)] + #[derive(Deserialize)] struct Identity { user_id: String, } @@ -1472,4 +1472,4 @@ } }
1 +middleware.rs - source \ No newline at end of file + -1 2 3 4 @@ -463,6 +463,7 @@ 462 463 464 +465use std::{collections::HashMap, convert::TryInto, fmt, future::Future, pin::Pin, rc::Rc}; use actix_utils::future::{ready, Ready}; @@ -578,7 +579,7 @@ /// .await /// } /// ``` -#[derive(Clone)] +#[derive(Clone)] pub struct SessionMiddleware<Store: SessionStore> { storage_backend: Rc<Store>, configuration: Rc<Configuration>, @@ -652,7 +653,7 @@ .into() } -#[doc(hidden)] +#[doc(hidden)] #[non_exhaustive] pub struct InnerSessionMiddleware<S, Store: SessionStore + 'static> { service: Rc<S>, @@ -668,7 +669,7 @@ { type Response = ServiceResponse<B>; type Error = actix_web::Error; - #[allow(clippy::type_complexity)] + #[allow(clippy::type_complexity)] type Future = Pin<Box<dyn Future<Output = Result<Self::Response, Self::Error>>>>; forward_ready!(service); @@ -909,6 +910,7 @@ ) -> Result<(), anyhow::Error> { let removal_cookie = Cookie::build(config.name.clone(), "") .path(config.path.clone()) + .secure(config.secure) .http_only(config.http_only) .same_site(config.same_site); @@ -928,4 +930,4 @@ Ok(()) }
1 +session.rs - source \ No newline at end of file + -1 2 3 4 @@ -367,11 +367,11 @@ /// [`SessionExt`]. /// /// [`SessionExt`]: crate::SessionExt -#[derive(Clone)] +#[derive(Clone)] pub struct Session(Rc<RefCell<SessionInner>>); /// Status of a [`Session`]. -#[derive(Debug, Clone, PartialEq, Eq)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum SessionStatus { /// Session state has been updated - the changes will have to be persisted to the backend. Changed, @@ -398,7 +398,7 @@ } } -#[derive(Default)] +#[derive(Default)] struct SessionInner { state: HashMap<String, String>, status: SessionStatus, @@ -608,14 +608,14 @@ type Error = Error; type Future = Ready<Result<Session, Error>>; - #[inline] + #[inline] fn from_request(req: &HttpRequest, _: &mut Payload) -> Self::Future { ready(Ok(Session::get_session(&mut req.extensions_mut()))) } } /// Error returned by [`Session::get`]. -#[derive(Debug, Display, From)] +#[derive(Debug, Display, From)] #[display(fmt = "{}", _0)] pub struct SessionGetError(anyhow::Error); @@ -632,7 +632,7 @@ } /// Error returned by [`Session::insert`]. -#[derive(Debug, Display, From)] +#[derive(Debug, Display, From)] #[display(fmt = "{}", _0)] pub struct SessionInsertError(anyhow::Error); @@ -648,4 +648,4 @@ } }
1 +session_ext.rs - source \ No newline at end of file + -1 2 3 4 @@ -76,4 +76,4 @@ } }
1 +cookie.rs - source \ No newline at end of file + -1 2 3 4 @@ -169,12 +169,12 @@ /// storage backend. /// /// [`CookieContentSecurity::Private`]: crate::config::CookieContentSecurity::Private -#[cfg_attr(docsrs, doc(cfg(feature = "cookie-session")))] +#[cfg_attr(docsrs, doc(cfg(feature = "cookie-session")))] #[derive(Default)] #[non_exhaustive] pub struct CookieSessionStore; -#[async_trait::async_trait(?Send)] +#[async_trait::async_trait(?Send)] impl SessionStore for CookieSessionStore { async fn load(&self, session_key: &SessionKey) -> Result<Option<SessionState>, LoadError> { serde_json::from_str(session_key.as_ref()) @@ -221,17 +221,17 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use super::*; use crate::{storage::utils::generate_session_key, test_helpers::acceptance_test_suite}; - #[actix_web::test] + #[actix_web::test] async fn test_session_workflow() { acceptance_test_suite(CookieSessionStore::default, false).await; } - #[actix_web::test] + #[actix_web::test] async fn loading_a_random_session_key_returns_deserialization_error() { let store = CookieSessionStore::default(); let session_key = generate_session_key(); @@ -242,4 +242,4 @@ } }
1 +interface.rs - source \ No newline at end of file + -1 2 3 4 @@ -130,7 +130,7 @@ /// [`async-trait`](https://docs.rs/async-trait) is used for this trait's definition. Therefore, it /// is required for implementations, too. In particular, we use the send-optional variant: /// `#[async_trait(?Send)]`. -#[async_trait::async_trait(?Send)] +#[async_trait::async_trait(?Send)] pub trait SessionStore { /// Loads the session state associated to a session key. async fn load(&self, session_key: &SessionKey) -> Result<Option<SessionState>, LoadError>; @@ -168,14 +168,14 @@ // while it's actually enough for it to be able to produce a reference to a dyn Error. /// Possible failures modes for [`SessionStore::load`]. -#[derive(Debug, Display)] +#[derive(Debug, Display)] pub enum LoadError { /// Failed to deserialize session state. - #[display(fmt = "Failed to deserialize session state")] + #[display(fmt = "Failed to deserialize session state")] Deserialization(anyhow::Error), /// Something went wrong when retrieving the session state. - #[display(fmt = "Something went wrong when retrieving the session state")] + #[display(fmt = "Something went wrong when retrieving the session state")] Other(anyhow::Error), } @@ -189,14 +189,14 @@ } /// Possible failures modes for [`SessionStore::save`]. -#[derive(Debug, Display)] +#[derive(Debug, Display)] pub enum SaveError { /// Failed to serialize session state. - #[display(fmt = "Failed to serialize session state")] + #[display(fmt = "Failed to serialize session state")] Serialization(anyhow::Error), /// Something went wrong when persisting the session state. - #[display(fmt = "Something went wrong when persisting the session state")] + #[display(fmt = "Something went wrong when persisting the session state")] Other(anyhow::Error), } @@ -209,15 +209,15 @@ } } -#[derive(Debug, Display)] +#[derive(Debug, Display)] /// Possible failures modes for [`SessionStore::update`]. pub enum UpdateError { /// Failed to serialize session state. - #[display(fmt = "Failed to serialize session state")] + #[display(fmt = "Failed to serialize session state")] Serialization(anyhow::Error), /// Something went wrong when updating the session state. - #[display(fmt = "Something went wrong when updating the session state.")] + #[display(fmt = "Something went wrong when updating the session state.")] Other(anyhow::Error), } @@ -230,4 +230,4 @@ } }
1 +mod.rs - source \ No newline at end of file + -1 2 3 4 @@ -37,23 +37,23 @@ session_key::SessionKey, }; -#[cfg(feature = "cookie-session")] +#[cfg(feature = "cookie-session")] mod cookie; -#[cfg(feature = "redis-actor-session")] +#[cfg(feature = "redis-actor-session")] mod redis_actor; -#[cfg(feature = "redis-rs-session")] +#[cfg(feature = "redis-rs-session")] mod redis_rs; -#[cfg(any(feature = "redis-actor-session", feature = "redis-rs-session"))] +#[cfg(any(feature = "redis-actor-session", feature = "redis-rs-session"))] mod utils; -#[cfg(feature = "cookie-session")] +#[cfg(feature = "cookie-session")] pub use cookie::CookieSessionStore; -#[cfg(feature = "redis-actor-session")] +#[cfg(feature = "redis-actor-session")] pub use redis_actor::{RedisActorSessionStore, RedisActorSessionStoreBuilder}; -#[cfg(feature = "redis-rs-session")] +#[cfg(feature = "redis-rs-session")] pub use redis_rs::{RedisSessionStore, RedisSessionStoreBuilder};
1 +redis_actor.rs - source \ No newline at end of file + -1 2 3 4 @@ -369,7 +369,7 @@ /// Redis. Use [`RedisSessionStore`] if you need TLS support. /// /// [`RedisSessionStore`]: crate::storage::RedisSessionStore -#[cfg_attr(docsrs, doc(cfg(feature = "redis-actor-session")))] +#[cfg_attr(docsrs, doc(cfg(feature = "redis-actor-session")))] pub struct RedisActorSessionStore { configuration: CacheConfiguration, addr: Addr<RedisActor>, @@ -409,7 +409,7 @@ /// A fluent builder to construct a [`RedisActorSessionStore`] instance with custom configuration /// parameters. -#[cfg_attr(docsrs, doc(cfg(feature = "redis-actor-session")))] +#[cfg_attr(docsrs, doc(cfg(feature = "redis-actor-session")))] #[must_use] pub struct RedisActorSessionStoreBuilder { connection_string: String, @@ -427,7 +427,7 @@ } /// Finalise the builder and return a [`RedisActorSessionStore`] instance. - #[must_use] + #[must_use] pub fn build(self) -> RedisActorSessionStore { RedisActorSessionStore { configuration: self.configuration, @@ -436,7 +436,7 @@ } } -#[async_trait::async_trait(?Send)] +#[async_trait::async_trait(?Send)] impl SessionStore for RedisActorSessionStore { async fn load(&self, session_key: &SessionKey) -> Result<Option<SessionState>, LoadError> { let cache_key = (self.configuration.cache_keygen)(session_key.as_ref()); @@ -592,7 +592,7 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use std::collections::HashMap; @@ -605,19 +605,19 @@ RedisActorSessionStore::new("127.0.0.1:6379") } - #[actix_web::test] + #[actix_web::test] async fn test_session_workflow() { acceptance_test_suite(redis_actor_store, true).await; } - #[actix_web::test] + #[actix_web::test] async fn loading_a_missing_session_returns_none() { let store = redis_actor_store(); let session_key = generate_session_key(); assert!(store.load(&session_key).await.unwrap().is_none()); } - #[actix_web::test] + #[actix_web::test] async fn updating_of_an_expired_state_is_handled_gracefully() { let store = redis_actor_store(); let session_key = generate_session_key(); @@ -630,4 +630,4 @@ } }
1 +redis_rs.rs - source \ No newline at end of file + -1 2 3 4 @@ -408,14 +408,14 @@ /// `RedisSessionStore` leverages [`redis-rs`] as Redis client. /// /// [`redis-rs`]: https://github.com/mitsuhiko/redis-rs -#[cfg_attr(docsrs, doc(cfg(feature = "redis-rs-session")))] +#[cfg_attr(docsrs, doc(cfg(feature = "redis-rs-session")))] #[derive(Clone)] pub struct RedisSessionStore { configuration: CacheConfiguration, client: ConnectionManager, } -#[derive(Clone)] +#[derive(Clone)] struct CacheConfiguration { cache_keygen: Arc<dyn Fn(&str) -> String + Send + Sync>, } @@ -453,7 +453,7 @@ /// parameters. /// /// [`RedisSessionStore`]: crate::storage::RedisSessionStore -#[cfg_attr(docsrs, doc(cfg(feature = "redis-rs-session")))] +#[cfg_attr(docsrs, doc(cfg(feature = "redis-rs-session")))] #[must_use] pub struct RedisSessionStoreBuilder { connection_string: String, @@ -482,7 +482,7 @@ } } -#[async_trait::async_trait(?Send)] +#[async_trait::async_trait(?Send)] impl SessionStore for RedisSessionStore { async fn load(&self, session_key: &SessionKey) -> Result<Option<SessionState>, LoadError> { let cache_key = (self.configuration.cache_keygen)(session_key.as_ref()); @@ -636,7 +636,7 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use std::collections::HashMap; @@ -652,20 +652,20 @@ .unwrap() } - #[actix_web::test] + #[actix_web::test] async fn test_session_workflow() { let redis_store = redis_store().await; acceptance_test_suite(move || redis_store.clone(), true).await; } - #[actix_web::test] + #[actix_web::test] async fn loading_a_missing_session_returns_none() { let store = redis_store().await; let session_key = generate_session_key(); assert!(store.load(&session_key).await.unwrap().is_none()); } - #[actix_web::test] + #[actix_web::test] async fn loading_an_invalid_session_state_returns_deserialization_error() { let store = redis_store().await; let session_key = generate_session_key(); @@ -681,7 +681,7 @@ )); } - #[actix_web::test] + #[actix_web::test] async fn updating_of_an_expired_state_is_handled_gracefully() { let store = redis_store().await; let session_key = generate_session_key(); @@ -694,4 +694,4 @@ } }
1 +session_key.rs - source \ No newline at end of file + -1 2 3 4 @@ -76,7 +76,7 @@ /// let session_key: Result<SessionKey, _> = key.try_into(); /// assert!(session_key.is_err()); /// ``` -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq)] pub struct SessionKey(String); impl TryFrom<String> for SessionKey { @@ -106,7 +106,7 @@ } } -#[derive(Debug, Display, From)] +#[derive(Debug, Display, From)] #[display(fmt = "The provided string is not a valid session key")] pub struct InvalidSessionKeyError(anyhow::Error); @@ -116,4 +116,4 @@ } }
1 +utils.rs - source \ No newline at end of file + -1 2 3 4 @@ -38,4 +38,4 @@ String::from_utf8(value).unwrap().try_into().unwrap() }
1 +error.rs - source \ No newline at end of file + -1 2 3 4 @@ -142,7 +142,7 @@ use toml::de::Error as TomlError; /// Errors that can be returned from methods in this crate. -#[derive(Debug, Clone)] +#[derive(Debug, Clone)] pub enum Error { /// Environment variable does not exists or is invalid. EnvVarError(VarError), @@ -151,7 +151,7 @@ FileExists(PathBuf), /// Invalid value. - #[allow(missing_docs)] + #[allow(missing_docs)] InvalidValue { expected: &'static str, got: String, @@ -276,4 +276,4 @@ } }
1 +lib.rs - source \ No newline at end of file + -1 2 3 4 @@ -872,7 +872,7 @@ //! } //! ``` -#![forbid(unsafe_code)] +#![forbid(unsafe_code)] #![deny(rust_2018_idioms, nonstandard_style)] #![warn(future_incompatible, missing_docs, missing_debug_implementations)] #![doc(html_logo_url = "https://actix.rs/img/logo.png")] @@ -896,7 +896,7 @@ }; use serde::{de, Deserialize}; -#[macro_use] +#[macro_use] mod error; mod parse; mod settings; @@ -914,7 +914,7 @@ type AsResult<T> = std::result::Result<T, Error>; /// Wrapper for server and application-specific settings. -#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize)] #[serde(bound = "A: Deserialize<'de>")] pub struct BasicSettings<A> { /// Actix Web server settings. @@ -928,7 +928,7 @@ pub type Settings = BasicSettings<NoSettings>; /// Marker type representing no defined application-specific settings. -#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize)] #[non_exhaustive] pub struct NoSettings {/* NOTE: turning this into a unit struct will cause deserialization failures. */} @@ -1057,7 +1057,7 @@ /// Apply a [`BasicSettings`] value to `self`. /// /// [`BasicSettings`]: ./struct.BasicSettings.html - #[must_use] + #[must_use] fn apply_settings<A>(self, settings: &BasicSettings<A>) -> Self where A: de::DeserializeOwned; @@ -1144,19 +1144,19 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use actix_web::App; use super::*; - #[test] + #[test] fn apply_settings() { let settings = Settings::parse_toml("Server.toml").unwrap(); let _ = HttpServer::new(App::new).apply_settings(&settings); } - #[test] + #[test] fn override_field_hosts() { let mut settings = Settings::from_default_template().unwrap(); @@ -1192,7 +1192,7 @@ ); } - #[test] + #[test] fn override_field_with_env_var_hosts() { let mut settings = Settings::from_default_template().unwrap(); @@ -1230,7 +1230,7 @@ ); } - #[test] + #[test] fn override_field_mode() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.mode, Mode::Development); @@ -1238,7 +1238,7 @@ assert_eq!(settings.actix.mode, Mode::Production); } - #[test] + #[test] fn override_field_with_env_var_mode() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.mode, Mode::Development); @@ -1247,7 +1247,7 @@ assert_eq!(settings.actix.mode, Mode::Production); } - #[test] + #[test] fn override_field_enable_compression() { let mut settings = Settings::from_default_template().unwrap(); assert!(settings.actix.enable_compression); @@ -1255,7 +1255,7 @@ assert!(!settings.actix.enable_compression); } - #[test] + #[test] fn override_field_with_env_var_enable_compression() { let mut settings = Settings::from_default_template().unwrap(); assert!(settings.actix.enable_compression); @@ -1268,7 +1268,7 @@ assert!(!settings.actix.enable_compression); } - #[test] + #[test] fn override_field_enable_log() { let mut settings = Settings::from_default_template().unwrap(); assert!(settings.actix.enable_log); @@ -1276,7 +1276,7 @@ assert!(!settings.actix.enable_log); } - #[test] + #[test] fn override_field_with_env_var_enable_log() { let mut settings = Settings::from_default_template().unwrap(); assert!(settings.actix.enable_log); @@ -1289,7 +1289,7 @@ assert!(!settings.actix.enable_log); } - #[test] + #[test] fn override_field_num_workers() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.num_workers, NumWorkers::Default); @@ -1297,7 +1297,7 @@ assert_eq!(settings.actix.num_workers, NumWorkers::Manual(42)); } - #[test] + #[test] fn override_field_with_env_var_num_workers() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.num_workers, NumWorkers::Default); @@ -1310,7 +1310,7 @@ assert_eq!(settings.actix.num_workers, NumWorkers::Manual(42)); } - #[test] + #[test] fn override_field_backlog() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.backlog, Backlog::Default); @@ -1318,7 +1318,7 @@ assert_eq!(settings.actix.backlog, Backlog::Manual(42)); } - #[test] + #[test] fn override_field_with_env_var_backlog() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.backlog, Backlog::Default); @@ -1328,7 +1328,7 @@ assert_eq!(settings.actix.backlog, Backlog::Manual(42)); } - #[test] + #[test] fn override_field_max_connections() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.max_connections, MaxConnections::Default); @@ -1336,7 +1336,7 @@ assert_eq!(settings.actix.max_connections, MaxConnections::Manual(42)); } - #[test] + #[test] fn override_field_with_env_var_max_connections() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.max_connections, MaxConnections::Default); @@ -1349,7 +1349,7 @@ assert_eq!(settings.actix.max_connections, MaxConnections::Manual(42)); } - #[test] + #[test] fn override_field_max_connection_rate() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!( @@ -1363,7 +1363,7 @@ ); } - #[test] + #[test] fn override_field_with_env_var_max_connection_rate() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!( @@ -1382,7 +1382,7 @@ ); } - #[test] + #[test] fn override_field_keep_alive() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.keep_alive, KeepAlive::Default); @@ -1390,7 +1390,7 @@ assert_eq!(settings.actix.keep_alive, KeepAlive::Seconds(42)); } - #[test] + #[test] fn override_field_with_env_var_keep_alive() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.keep_alive, KeepAlive::Default); @@ -1403,7 +1403,7 @@ assert_eq!(settings.actix.keep_alive, KeepAlive::Seconds(42)); } - #[test] + #[test] fn override_field_client_timeout() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.client_timeout, Timeout::Default); @@ -1411,7 +1411,7 @@ assert_eq!(settings.actix.client_timeout, Timeout::Seconds(42)); } - #[test] + #[test] fn override_field_with_env_var_client_timeout() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.client_timeout, Timeout::Default); @@ -1424,7 +1424,7 @@ assert_eq!(settings.actix.client_timeout, Timeout::Seconds(42)); } - #[test] + #[test] fn override_field_client_shutdown() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.client_shutdown, Timeout::Default); @@ -1432,7 +1432,7 @@ assert_eq!(settings.actix.client_shutdown, Timeout::Seconds(42)); } - #[test] + #[test] fn override_field_with_env_var_client_shutdown() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.client_shutdown, Timeout::Default); @@ -1445,7 +1445,7 @@ assert_eq!(settings.actix.client_shutdown, Timeout::Seconds(42)); } - #[test] + #[test] fn override_field_shutdown_timeout() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.shutdown_timeout, Timeout::Default); @@ -1453,7 +1453,7 @@ assert_eq!(settings.actix.shutdown_timeout, Timeout::Seconds(42)); } - #[test] + #[test] fn override_field_with_env_var_shutdown_timeout() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!(settings.actix.shutdown_timeout, Timeout::Default); @@ -1466,7 +1466,7 @@ assert_eq!(settings.actix.shutdown_timeout, Timeout::Seconds(42)); } - #[test] + #[test] fn override_field_tls_enabled() { let mut settings = Settings::from_default_template().unwrap(); assert!(!settings.actix.tls.enabled); @@ -1474,7 +1474,7 @@ assert!(settings.actix.tls.enabled); } - #[test] + #[test] fn override_field_with_env_var_tls_enabled() { let mut settings = Settings::from_default_template().unwrap(); assert!(!settings.actix.tls.enabled); @@ -1487,7 +1487,7 @@ assert!(settings.actix.tls.enabled); } - #[test] + #[test] fn override_field_tls_certificate() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!( @@ -1505,7 +1505,7 @@ ); } - #[test] + #[test] fn override_field_with_env_var_tls_certificate() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!( @@ -1527,7 +1527,7 @@ ); } - #[test] + #[test] fn override_field_tls_private_key() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!( @@ -1545,7 +1545,7 @@ ); } - #[test] + #[test] fn override_field_with_env_var_tls_private_key() { let mut settings = Settings::from_default_template().unwrap(); assert_eq!( @@ -1567,15 +1567,15 @@ ); } - #[test] + #[test] fn override_extended_field_with_custom_type() { - #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] + #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] struct NestedSetting { foo: String, bar: bool, } - #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] + #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] #[serde(rename_all = "kebab-case")] struct AppSettings { example_name: String, @@ -1622,4 +1622,4 @@ } }
1 +parse.rs - source \ No newline at end of file + -1 2 3 4 @@ -80,4 +80,4 @@ } }
1 +address.rs - source \ No newline at end of file + -1 2 3 4 @@ -132,7 +132,7 @@ }); /// A host/port pair for the server to bind to. -#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize)] pub struct Address { /// Host part of address. pub host: String, @@ -186,4 +186,4 @@ } }
1 +backlog.rs - source \ No newline at end of file + -1 2 3 4 @@ -83,7 +83,7 @@ /// /// Generally set in the 64–2048 range. The default value is 2048. Takes a string value: Either /// "default", or an integer N > 0 e.g. "6". -#[derive(Debug, Clone, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum Backlog { /// The default number of connections. See struct docs. Default, @@ -140,4 +140,4 @@ } }
1 +keep_alive.rs - source \ No newline at end of file + -1 2 3 4 @@ -106,7 +106,7 @@ /// /// By default keep alive is set to 5 seconds. Takes a string value: Either "default", "disabled", /// "os", or a string of the format "N seconds" where N is an integer > 0 e.g. "6 seconds". -#[derive(Debug, Clone, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum KeepAlive { /// The default keep-alive as defined by Actix Web. Default, @@ -190,4 +190,4 @@ } }
1 +max_connection_rate.rs - source \ No newline at end of file + -1 2 3 4 @@ -77,7 +77,7 @@ /// All listeners will stop accepting connections when this limit is reached. It can be used to /// limit the global TLS CPU usage. By default max connections is set to a 256. Takes a string /// value: Either "default", or an integer N > 0 e.g. "6". -#[derive(Debug, Clone, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum MaxConnectionRate { /// The default connection limit. See struct docs. Default, @@ -134,4 +134,4 @@ } }
1 +max_connections.rs - source \ No newline at end of file + -1 2 3 4 @@ -77,7 +77,7 @@ /// All socket listeners will stop accepting connections when this limit is reached for each worker. /// By default max connections is set to a 25k. Takes a string value: Either "default", or an /// integer N > 0 e.g. "6". -#[derive(Debug, Clone, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum MaxConnections { /// The default number of connections. See struct docs. Default, @@ -134,4 +134,4 @@ } }
1 +mod.rs - source \ No newline at end of file + -1 2 3 4 @@ -79,7 +79,7 @@ }; /// Settings types for Actix Web. -#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize)] #[serde(rename_all = "kebab-case")] pub struct ActixSettings { /// List of addresses for the server to bind to. @@ -122,4 +122,4 @@ pub tls: Tls, }
1 +mode.rs - source \ No newline at end of file + -1 2 3 4 @@ -31,7 +31,7 @@ use crate::{AsResult, Parse}; /// Marker of intended deployment environment. -#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize)] #[serde(rename_all = "lowercase")] pub enum Mode { /// Marks development environment. @@ -54,4 +54,4 @@ } }
1 +num_workers.rs - source \ No newline at end of file + -1 2 3 4 @@ -75,7 +75,7 @@ /// /// By default the number of available logical cpu cores is used. Takes a string value: Either /// "default", or an integer N > 0 e.g. "6". -#[derive(Debug, Clone, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum NumWorkers { /// The default number of workers. See struct docs. Default, @@ -132,4 +132,4 @@ } }
1 +timeout.rs - source \ No newline at end of file + -1 2 3 4 @@ -106,7 +106,7 @@ use crate::{AsResult, Error, Parse}; /// A timeout duration in milliseconds or seconds. -#[derive(Debug, Clone, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum Timeout { /// The default timeout. Depends on context. Default, @@ -196,4 +196,4 @@ } }
1 +tls.rs - source \ No newline at end of file + -1 2 3 4 @@ -22,7 +22,7 @@ use serde::Deserialize; /// TLS (HTTPS) configuration. -#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize)] #[serde(rename_all = "kebab-case")] #[doc(alias = "ssl", alias = "https")] pub struct Tls { @@ -36,4 +36,4 @@ pub private_key: PathBuf, }
1 +basic.rs - source \ No newline at end of file + -1 2 3 4 @@ -126,7 +126,7 @@ /// [`BasicAuth`] extractor configuration used for [`WWW-Authenticate`] header later. /// /// [`WWW-Authenticate`]: crate::headers::www_authenticate::WwwAuthenticate -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default)] pub struct Config(Challenge); impl Config { @@ -186,7 +186,7 @@ /// ``` /// /// [app data]: https://docs.rs/actix-web/4/actix_web/struct.App.html#method.app_data -#[derive(Debug, Clone)] +#[derive(Debug, Clone)] pub struct BasicAuth(Basic); impl BasicAuth { @@ -223,4 +223,4 @@ } }
1 +bearer.rs - source \ No newline at end of file + -1 2 3 4 @@ -154,7 +154,7 @@ use crate::headers::{authorization, www_authenticate::bearer}; /// [`BearerAuth`] extractor configuration. -#[derive(Debug, Clone, Default)] +#[derive(Debug, Clone, Default)] pub struct Config(bearer::Bearer); impl Config { @@ -224,7 +224,7 @@ /// ) /// .service(web::resource("/index.html").route(web::get().to(index))); /// ``` -#[derive(Debug, Clone)] +#[derive(Debug, Clone)] pub struct BearerAuth(authorization::Bearer); impl BearerAuth { @@ -287,4 +287,4 @@ } }
1 +config.rs - source \ No newline at end of file + -1 2 3 4 @@ -41,4 +41,4 @@ } }
1 +errors.rs - source \ No newline at end of file + -1 2 3 4 @@ -87,7 +87,7 @@ /// /// Different extractors may extend `AuthenticationError` implementation in order to provide access /// inner challenge fields. -#[derive(Debug)] +#[derive(Debug)] pub struct AuthenticationError<C: Challenge> { challenge: C, status_code: StatusCode, @@ -138,14 +138,14 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use actix_web::Error; use super::*; use crate::headers::www_authenticate::basic::Basic; - #[test] + #[test] fn test_status_code_is_preserved_across_error_conversions() { let ae = AuthenticationError::new(Basic::default()); let expected = ae.status_code; @@ -157,4 +157,4 @@ } }
1 +mod.rs - source \ No newline at end of file + -1 2 3 4 @@ -15,4 +15,4 @@ pub use self::{config::AuthExtractorConfig, errors::AuthenticationError};
1 +errors.rs - source \ No newline at end of file + -1 2 3 4 @@ -78,7 +78,7 @@ /// /// Should not be used directly unless you are implementing your own /// [authentication scheme](super::Scheme). -#[derive(Debug)] +#[derive(Debug)] pub enum ParseError { /// Header value is malformed. Invalid, @@ -143,4 +143,4 @@ } }
1 +header.rs - source \ No newline at end of file + -1 2 3 4 @@ -111,7 +111,7 @@ /// Ok(format!("Hello, {}!", auth.as_ref().user_id())) /// } /// ``` -#[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct Authorization<S: Scheme>(S); impl<S: Scheme> Authorization<S> { @@ -146,7 +146,7 @@ } impl<S: Scheme> Header for Authorization<S> { - #[inline] + #[inline] fn name() -> HeaderName { AUTHORIZATION } @@ -167,4 +167,4 @@ } }
1 +mod.rs - source \ No newline at end of file + -1 2 3 4 @@ -21,4 +21,4 @@ scheme::{basic::Basic, bearer::Bearer, Scheme}, };
1 +basic.rs - source \ No newline at end of file + -1 2 3 4 @@ -203,7 +203,7 @@ use crate::headers::authorization::{errors::ParseError, Scheme}; /// Credentials for `Basic` authentication scheme, defined in [RFC 7617](https://tools.ietf.org/html/rfc7617) -#[derive(Clone, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Clone, PartialEq, Eq, PartialOrd, Ord)] pub struct Basic { user_id: Cow<'static, str>, password: Option<Cow<'static, str>>, @@ -315,11 +315,11 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use super::*; - #[test] + #[test] fn test_parse_header() { let value = HeaderValue::from_static("Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="); let scheme = Basic::parse(&value); @@ -330,7 +330,7 @@ assert_eq!(scheme.password, Some("open sesame".into())); } - #[test] + #[test] fn test_empty_password() { let value = HeaderValue::from_static("Basic QWxhZGRpbjo="); let scheme = Basic::parse(&value); @@ -341,7 +341,7 @@ assert_eq!(scheme.password, None); } - #[test] + #[test] fn test_empty_header() { let value = HeaderValue::from_static(""); let scheme = Basic::parse(&value); @@ -349,7 +349,7 @@ assert!(scheme.is_err()); } - #[test] + #[test] fn test_wrong_scheme() { let value = HeaderValue::from_static("THOUSHALLNOTPASS please?"); let scheme = Basic::parse(&value); @@ -357,7 +357,7 @@ assert!(scheme.is_err()); } - #[test] + #[test] fn test_missing_credentials() { let value = HeaderValue::from_static("Basic "); let scheme = Basic::parse(&value); @@ -365,7 +365,7 @@ assert!(scheme.is_err()); } - #[test] + #[test] fn test_missing_credentials_colon() { let value = HeaderValue::from_static("Basic QWxsYWRpbg=="); let scheme = Basic::parse(&value); @@ -373,7 +373,7 @@ assert!(scheme.is_err()); } - #[test] + #[test] fn test_into_header_value() { let basic = Basic { user_id: "Aladdin".into(), @@ -389,4 +389,4 @@ } }
1 +bearer.rs - source \ No newline at end of file + -1 2 3 4 @@ -150,7 +150,7 @@ /// Should be used in combination with [`Authorization`](super::Authorization) header. /// /// [RFC 6750]: https://tools.ietf.org/html/rfc6750 -#[derive(Clone, Eq, Ord, PartialEq, PartialOrd)] +#[derive(Clone, Eq, Ord, PartialEq, PartialOrd)] pub struct Bearer { token: Cow<'static, str>, } @@ -224,11 +224,11 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use super::*; - #[test] + #[test] fn test_parse_header() { let value = HeaderValue::from_static("Bearer mF_9.B5f-4.1JqM"); let scheme = Bearer::parse(&value); @@ -238,7 +238,7 @@ assert_eq!(scheme.token, "mF_9.B5f-4.1JqM"); } - #[test] + #[test] fn test_empty_header() { let value = HeaderValue::from_static(""); let scheme = Bearer::parse(&value); @@ -246,7 +246,7 @@ assert!(scheme.is_err()); } - #[test] + #[test] fn test_wrong_scheme() { let value = HeaderValue::from_static("OAuthToken foo"); let scheme = Bearer::parse(&value); @@ -254,7 +254,7 @@ assert!(scheme.is_err()); } - #[test] + #[test] fn test_missing_token() { let value = HeaderValue::from_static("Bearer "); let scheme = Bearer::parse(&value); @@ -262,7 +262,7 @@ assert!(scheme.is_err()); } - #[test] + #[test] fn test_into_header_value() { let bearer = Bearer::new("mF_9.B5f-4.1JqM"); @@ -275,4 +275,4 @@ } }
1 +mod.rs - source \ No newline at end of file + -1 2 3 4 @@ -27,4 +27,4 @@ fn parse(header: &HeaderValue) -> Result<Self, ParseError>; }
1 +mod.rs - source \ No newline at end of file + -1 2 3 4 @@ -7,4 +7,4 @@ pub mod authorization; pub mod www_authenticate;
1 +basic.rs - source \ No newline at end of file + -1 2 3 4 @@ -165,7 +165,7 @@ /// ``` /// /// [`WWW-Authenticate`]: ../struct.WwwAuthenticate.html -#[derive(Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default, Clone)] +#[derive(Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default, Clone)] pub struct Basic { // "realm" parameter is optional now: https://tools.ietf.org/html/rfc7235#appendix-A pub(crate) realm: Option<Cow<'static, str>>, @@ -207,7 +207,7 @@ } } -#[doc(hidden)] +#[doc(hidden)] impl Challenge for Basic { fn to_bytes(&self) -> Bytes { // 5 is for `"Basic"`, 9 is for `"realm=\"\""` @@ -244,11 +244,11 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use super::*; - #[test] + #[test] fn test_plain_into_header_value() { let challenge = Basic { realm: None }; @@ -258,7 +258,7 @@ assert_eq!(value, "Basic"); } - #[test] + #[test] fn test_with_realm_into_header_value() { let challenge = Basic { realm: Some("Restricted area".into()), @@ -271,4 +271,4 @@ } }
1 +builder.rs - source \ No newline at end of file + -1 2 3 4 @@ -77,7 +77,7 @@ /// /// It is up to implementor to fill all required fields, neither this `Builder` nor [`Bearer`] /// provide any validation. -#[derive(Debug, Default)] +#[derive(Debug, Default)] pub struct BearerBuilder(Bearer); impl BearerBuilder { @@ -141,4 +141,4 @@ } }
1 +challenge.rs - source \ No newline at end of file + -1 2 3 4 @@ -176,7 +176,7 @@ /// /// [`WWW-Authenticate`]: crate::headers::www_authenticate::WwwAuthenticate /// [RFC 6750]: https://tools.ietf.org/html/rfc6750#section-3 -#[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct Bearer { pub(crate) scope: Option<Cow<'static, str>>, pub(crate) realm: Option<Cow<'static, str>>, @@ -201,7 +201,7 @@ } } -#[doc(hidden)] +#[doc(hidden)] impl Challenge for Bearer { fn to_bytes(&self) -> Bytes { let desc_uri_required = self @@ -281,4 +281,4 @@ } }
1 +errors.rs - source \ No newline at end of file + -1 2 3 4 @@ -55,7 +55,7 @@ /// Bearer authorization error types, described in [RFC 6750]. /// /// [RFC 6750]: https://tools.ietf.org/html/rfc6750#section-3.1 -#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub enum Error { /// The request is missing a required parameter, includes an unsupported parameter or parameter /// value, repeats the same parameter, uses more than one method for including an access token, @@ -73,7 +73,7 @@ /// Returns [HTTP status code] suitable for current error type. /// /// [HTTP status code]: `actix_web::http::StatusCode` - #[allow(clippy::trivially_copy_pass_by_ref)] + #[allow(clippy::trivially_copy_pass_by_ref)] pub fn status_code(&self) -> StatusCode { match self { Error::InvalidRequest => StatusCode::BAD_REQUEST, @@ -82,7 +82,7 @@ } } - #[doc(hidden)] + #[doc(hidden)] #[allow(clippy::trivially_copy_pass_by_ref)] pub fn as_str(&self) -> &str { match self { @@ -99,4 +99,4 @@ } }
1 +mod.rs - source \ No newline at end of file + -1 2 3 4 @@ -31,11 +31,11 @@ pub use self::{builder::BearerBuilder, challenge::Bearer, errors::Error}; -#[cfg(test)] +#[cfg(test)] mod tests { use super::*; - #[test] + #[test] fn to_bytes() { let b = Bearer::build() .error(Error::InvalidToken) @@ -49,4 +49,4 @@ } }
1 +mod.rs - source \ No newline at end of file + -1 2 3 4 @@ -23,4 +23,4 @@ fn to_bytes(&self) -> Bytes; }
1 +header.rs - source \ No newline at end of file + -1 2 3 4 @@ -47,11 +47,11 @@ /// [`Bearer`](super::bearer::Bearer) challenges for details. /// /// [RFC 7235]: https://tools.ietf.org/html/rfc7235#section-4.1 -#[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct WwwAuthenticate<C: Challenge>(pub C); impl<C: Challenge> Header for WwwAuthenticate<C> { - #[inline] + #[inline] fn name() -> HeaderName { WWW_AUTHENTICATE } @@ -69,4 +69,4 @@ } }
1 +mod.rs - source \ No newline at end of file + -1 2 3 4 @@ -17,4 +17,4 @@ header::WwwAuthenticate, };
1 +lib.rs - source \ No newline at end of file + -1 2 3 4 @@ -38,7 +38,7 @@ //! [Extractors]: https://actix.rs/docs/extractors //! [Middleware]: self::middleware -#![forbid(unsafe_code)] +#![forbid(unsafe_code)] #![deny(rust_2018_idioms, nonstandard_style)] #![warn(future_incompatible, missing_docs)] @@ -47,4 +47,4 @@ pub mod middleware; mod utils;
1 +middleware.rs - source \ No newline at end of file + -1 2 3 4 @@ -443,7 +443,7 @@ /// /// Otherwise, it will pass both the request and the parsed credentials into it. In case of /// successful validation `F` callback is required to return the `ServiceRequest` back. -#[derive(Debug, Clone)] +#[derive(Debug, Clone)] pub struct HttpAuthentication<T, F> where T: FromRequest, @@ -558,7 +558,7 @@ } } -#[doc(hidden)] +#[doc(hidden)] pub struct AuthenticationMiddleware<S, F, T> where T: FromRequest, @@ -656,7 +656,7 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use actix_service::into_service; use actix_web::{ @@ -671,7 +671,7 @@ use crate::extractors::{basic::BasicAuth, bearer::BearerAuth}; /// This is a test for https://github.com/actix/actix-extras/issues/10 - #[actix_web::test] + #[actix_web::test] async fn test_middleware_panic() { let middleware = AuthenticationMiddleware { service: Rc::new(into_service(|_: ServiceRequest| async move { @@ -694,7 +694,7 @@ } /// This is a test for https://github.com/actix/actix-extras/issues/10 - #[actix_web::test] + #[actix_web::test] async fn test_middleware_panic_several_orders() { let middleware = AuthenticationMiddleware { service: Rc::new(into_service(|_: ServiceRequest| async move { @@ -730,7 +730,7 @@ assert!(f3.is_err()); } - #[actix_web::test] + #[actix_web::test] async fn test_middleware_opt_extractor() { let middleware = AuthenticationMiddleware { service: Rc::new(into_service(|req: ServiceRequest| async move { @@ -754,7 +754,7 @@ assert!(f.is_ok()); } - #[actix_web::test] + #[actix_web::test] async fn test_middleware_res_extractor() { let middleware = AuthenticationMiddleware { service: Rc::new(into_service(|req: ServiceRequest| async move { @@ -780,7 +780,7 @@ assert!(f.is_ok()); } - #[actix_web::test] + #[actix_web::test] async fn test_middleware_works_with_app() { async fn validator( req: ServiceRequest, @@ -805,7 +805,7 @@ assert_eq!(resp.status(), StatusCode::UNAUTHORIZED); } - #[actix_web::test] + #[actix_web::test] async fn test_middleware_works_with_scope() { async fn validator( req: ServiceRequest, @@ -833,4 +833,4 @@ } }
1 +utils.rs - source \ No newline at end of file + -1 2 3 4 @@ -164,7 +164,7 @@ } } -#[cfg(test)] +#[cfg(test)] mod tests { use std::str; @@ -172,7 +172,7 @@ use super::put_quoted; - #[test] + #[test] fn test_quote_str() { let input = "a \"quoted\" string"; let mut output = BytesMut::new(); @@ -182,7 +182,7 @@ assert_eq!(result, "a \\\"quoted\\\" string"); } - #[test] + #[test] fn test_without_quotes() { let input = "non-quoted string"; let mut output = BytesMut::new(); @@ -192,7 +192,7 @@ assert_eq!(result, "non-quoted string"); } - #[test] + #[test] fn test_starts_with_quote() { let input = "\"first-quoted string"; let mut output = BytesMut::new(); @@ -202,7 +202,7 @@ assert_eq!(result, "\\\"first-quoted string"); } - #[test] + #[test] fn test_ends_with_quote() { let input = "last-quoted string\""; let mut output = BytesMut::new(); @@ -212,7 +212,7 @@ assert_eq!(result, "last-quoted string\\\""); } - #[test] + #[test] fn test_double_quote() { let input = "quote\"\"string"; let mut output = BytesMut::new(); @@ -223,4 +223,4 @@ } }
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(x => "" + x + "
").join(""); + const div_infos = document.createElement("div"); + addClass(div_infos, "infos"); + div_infos.innerHTML = "