From 2f7afbd295a7d8af5badd41f995e880419269921 Mon Sep 17 00:00:00 2001 From: robjtede Date: Sun, 9 Jun 2024 04:19:36 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20actix/ac?= =?UTF-8?q?tix-extras@3ae4ef2706cdef834a49d7c76d3cc0f55ae383a3=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- actix_cors/all.html | 2 +- actix_cors/enum.CorsError.html | 4 ++-- actix_cors/index.html | 2 +- actix_cors/struct.Cors.html | 2 +- actix_identity/all.html | 2 +- .../config/enum.LogoutBehaviour.html | 2 +- actix_identity/config/index.html | 2 +- .../struct.IdentityMiddlewareBuilder.html | 2 +- .../error/enum.GetIdentityError.html | 4 ++-- actix_identity/error/index.html | 2 +- actix_identity/error/struct.LoginError.html | 4 ++-- .../error/struct.LostIdentityError.html | 4 ++-- .../error/struct.MissingIdentityError.html | 4 ++-- .../error/struct.SessionExpiryError.html | 4 ++-- actix_identity/index.html | 2 +- actix_identity/struct.Identity.html | 2 +- actix_identity/struct.IdentityMiddleware.html | 2 +- actix_identity/trait.IdentityExt.html | 2 +- actix_limitation/all.html | 2 +- .../constant.DEFAULT_COOKIE_NAME.html | 2 +- .../constant.DEFAULT_PERIOD_SECS.html | 2 +- .../constant.DEFAULT_REQUEST_LIMIT.html | 2 +- .../constant.DEFAULT_SESSION_KEY.html | 2 +- actix_limitation/enum.Error.html | 4 ++-- actix_limitation/index.html | 2 +- actix_limitation/struct.Builder.html | 6 ++--- actix_limitation/struct.Limiter.html | 2 +- actix_limitation/struct.RateLimiter.html | 2 +- actix_limitation/struct.Status.html | 2 +- actix_protobuf/all.html | 2 +- actix_protobuf/enum.ProtoBufPayloadError.html | 2 +- actix_protobuf/index.html | 2 +- actix_protobuf/struct.ProtoBuf.html | 6 ++--- actix_protobuf/struct.ProtoBufConfig.html | 2 +- actix_protobuf/struct.ProtoBufMessage.html | 6 ++--- .../trait.ProtoBufResponseBuilder.html | 2 +- actix_session/all.html | 2 +- .../config/enum.CookieContentSecurity.html | 2 +- .../config/enum.SessionLifecycle.html | 2 +- .../config/enum.TtlExtensionPolicy.html | 2 +- actix_session/config/index.html | 2 +- .../config/struct.BrowserSession.html | 4 ++-- .../config/struct.PersistentSession.html | 4 ++-- .../struct.SessionMiddlewareBuilder.html | 6 ++--- actix_session/enum.SessionStatus.html | 2 +- actix_session/index.html | 2 +- actix_session/storage/enum.LoadError.html | 4 ++-- actix_session/storage/enum.SaveError.html | 4 ++-- actix_session/storage/enum.UpdateError.html | 4 ++-- actix_session/storage/index.html | 2 +- .../storage/struct.CookieSessionStore.html | 10 ++++----- .../storage/struct.RedisSessionStore.html | 14 ++++++------ .../struct.RedisSessionStoreBuilder.html | 2 +- actix_session/storage/struct.SessionKey.html | 2 +- actix_session/storage/trait.SessionStore.html | 22 +++++++++---------- actix_session/struct.Session.html | 8 +++---- actix_session/struct.SessionGetError.html | 4 ++-- actix_session/struct.SessionInsertError.html | 4 ++-- actix_session/struct.SessionMiddleware.html | 2 +- actix_session/trait.SessionExt.html | 2 +- actix_settings/all.html | 2 +- actix_settings/enum.Backlog.html | 2 +- actix_settings/enum.Error.html | 4 ++-- actix_settings/enum.KeepAlive.html | 2 +- actix_settings/enum.MaxConnectionRate.html | 2 +- actix_settings/enum.MaxConnections.html | 2 +- actix_settings/enum.Mode.html | 2 +- actix_settings/enum.NumWorkers.html | 2 +- actix_settings/enum.Timeout.html | 2 +- actix_settings/index.html | 2 +- actix_settings/struct.ActixSettings.html | 2 +- actix_settings/struct.Address.html | 2 +- actix_settings/struct.BasicSettings.html | 4 ++-- actix_settings/struct.NoSettings.html | 2 +- actix_settings/struct.Tls.html | 2 +- actix_settings/trait.ApplySettings.html | 2 +- actix_settings/trait.Parse.html | 2 +- actix_settings/type.Settings.html | 2 +- actix_web_httpauth/all.html | 2 +- .../extractors/basic/index.html | 2 +- .../extractors/basic/struct.BasicAuth.html | 4 ++-- .../extractors/basic/struct.Config.html | 2 +- .../extractors/bearer/enum.Error.html | 4 ++-- .../extractors/bearer/index.html | 2 +- .../extractors/bearer/struct.BearerAuth.html | 4 ++-- .../extractors/bearer/struct.Config.html | 2 +- actix_web_httpauth/extractors/index.html | 2 +- .../struct.AuthenticationError.html | 4 ++-- .../extractors/trait.AuthExtractorConfig.html | 2 +- .../authorization/enum.ParseError.html | 4 ++-- .../headers/authorization/index.html | 2 +- .../authorization/struct.Authorization.html | 4 ++-- .../headers/authorization/struct.Basic.html | 4 ++-- .../headers/authorization/struct.Bearer.html | 4 ++-- .../headers/authorization/trait.Scheme.html | 2 +- actix_web_httpauth/headers/index.html | 2 +- .../headers/www_authenticate/basic/index.html | 2 +- .../www_authenticate/basic/struct.Basic.html | 2 +- .../www_authenticate/bearer/enum.Error.html | 4 ++-- .../www_authenticate/bearer/index.html | 2 +- .../bearer/struct.Bearer.html | 2 +- .../bearer/struct.BearerBuilder.html | 2 +- .../headers/www_authenticate/index.html | 2 +- .../struct.WwwAuthenticate.html | 4 ++-- .../www_authenticate/trait.Challenge.html | 2 +- actix_web_httpauth/index.html | 2 +- actix_web_httpauth/middleware/index.html | 2 +- .../middleware/struct.HttpAuthentication.html | 2 +- actix_ws/all.html | 2 +- actix_ws/enum.CloseCode.html | 2 +- actix_ws/enum.Item.html | 2 +- actix_ws/enum.Message.html | 2 +- actix_ws/enum.ProtocolError.html | 6 ++--- actix_ws/fn.handle.html | 4 ++-- actix_ws/index.html | 2 +- actix_ws/struct.CloseReason.html | 4 ++-- actix_ws/struct.Closed.html | 4 ++-- actix_ws/struct.MessageStream.html | 18 +++++++-------- actix_ws/struct.Session.html | 4 ++-- actix_ws/struct.StreamingBody.html | 18 +++++++-------- help.html | 2 +- search-index.js | 16 +++++++------- settings.html | 2 +- src/actix_cors/all_or_some.rs.html | 2 +- src/actix_cors/builder.rs.html | 2 +- src/actix_cors/error.rs.html | 2 +- src/actix_cors/inner.rs.html | 2 +- src/actix_cors/lib.rs.html | 2 +- src/actix_cors/middleware.rs.html | 2 +- src/actix_identity/config.rs.html | 2 +- src/actix_identity/error.rs.html | 2 +- src/actix_identity/identity.rs.html | 2 +- src/actix_identity/identity_ext.rs.html | 2 +- src/actix_identity/lib.rs.html | 2 +- src/actix_identity/middleware.rs.html | 2 +- src/actix_limitation/builder.rs.html | 2 +- src/actix_limitation/errors.rs.html | 2 +- src/actix_limitation/lib.rs.html | 2 +- src/actix_limitation/middleware.rs.html | 2 +- src/actix_limitation/status.rs.html | 2 +- src/actix_protobuf/lib.rs.html | 2 +- src/actix_session/config.rs.html | 2 +- src/actix_session/lib.rs.html | 2 +- src/actix_session/middleware.rs.html | 2 +- src/actix_session/session.rs.html | 2 +- src/actix_session/session_ext.rs.html | 2 +- src/actix_session/storage/cookie.rs.html | 2 +- src/actix_session/storage/interface.rs.html | 2 +- src/actix_session/storage/mod.rs.html | 2 +- src/actix_session/storage/redis_rs.rs.html | 2 +- src/actix_session/storage/session_key.rs.html | 4 ++-- src/actix_session/storage/utils.rs.html | 2 +- src/actix_settings/error.rs.html | 2 +- src/actix_settings/lib.rs.html | 2 +- src/actix_settings/parse.rs.html | 2 +- src/actix_settings/settings/address.rs.html | 2 +- src/actix_settings/settings/backlog.rs.html | 2 +- .../settings/keep_alive.rs.html | 2 +- .../settings/max_connection_rate.rs.html | 2 +- .../settings/max_connections.rs.html | 2 +- src/actix_settings/settings/mod.rs.html | 2 +- src/actix_settings/settings/mode.rs.html | 2 +- .../settings/num_workers.rs.html | 2 +- src/actix_settings/settings/timeout.rs.html | 2 +- src/actix_settings/settings/tls.rs.html | 2 +- .../extractors/basic.rs.html | 2 +- .../extractors/bearer.rs.html | 2 +- .../extractors/config.rs.html | 2 +- .../extractors/errors.rs.html | 2 +- src/actix_web_httpauth/extractors/mod.rs.html | 2 +- .../headers/authorization/errors.rs.html | 2 +- .../headers/authorization/header.rs.html | 2 +- .../headers/authorization/mod.rs.html | 2 +- .../authorization/scheme/basic.rs.html | 2 +- .../authorization/scheme/bearer.rs.html | 2 +- .../headers/authorization/scheme/mod.rs.html | 2 +- src/actix_web_httpauth/headers/mod.rs.html | 2 +- .../www_authenticate/challenge/basic.rs.html | 2 +- .../challenge/bearer/builder.rs.html | 2 +- .../challenge/bearer/challenge.rs.html | 2 +- .../challenge/bearer/errors.rs.html | 2 +- .../challenge/bearer/mod.rs.html | 2 +- .../www_authenticate/challenge/mod.rs.html | 2 +- .../headers/www_authenticate/header.rs.html | 2 +- .../headers/www_authenticate/mod.rs.html | 2 +- src/actix_web_httpauth/lib.rs.html | 2 +- src/actix_web_httpauth/middleware.rs.html | 2 +- src/actix_web_httpauth/utils.rs.html | 2 +- src/actix_ws/fut.rs.html | 4 ++-- src/actix_ws/lib.rs.html | 2 +- src/actix_ws/session.rs.html | 16 +++++++------- static.files/search-9d4fa2dd5e5a7e17.js | 5 +++++ static.files/search-d52510db62a78183.js | 5 ----- .../actix_settings/struct.BasicSettings.js | 2 +- 194 files changed, 292 insertions(+), 292 deletions(-) create mode 100644 static.files/search-9d4fa2dd5e5a7e17.js delete mode 100644 static.files/search-d52510db62a78183.js diff --git a/actix_cors/all.html b/actix_cors/all.html index cd2b63867..469c978a0 100644 --- a/actix_cors/all.html +++ b/actix_cors/all.html @@ -1 +1 @@ -List of all items in this crate

List of all items

Structs

Enums

\ No newline at end of file +List of all items in this crate

List of all items

Structs

Enums

\ No newline at end of file diff --git a/actix_cors/enum.CorsError.html b/actix_cors/enum.CorsError.html index 62b290936..b3d4edfba 100644 --- a/actix_cors/enum.CorsError.html +++ b/actix_cors/enum.CorsError.html @@ -1,4 +1,4 @@ -CorsError in actix_cors - Rust

Enum actix_cors::CorsError

source ·
#[non_exhaustive]
pub enum CorsError { +CorsError in actix_cors - Rust

Enum actix_cors::CorsError

source ·
#[non_exhaustive]
pub enum CorsError { WildcardOrigin, MissingOrigin, MissingRequestMethod, @@ -16,7 +16,7 @@
§

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§

source§

impl Clone for CorsError

source§

fn clone(&self) -> CorsError

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CorsError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for CorsError

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for CorsError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl ResponseError for CorsError

source§

fn status_code(&self) -> StatusCode

Returns appropriate status code for error. Read more
source§

fn error_response(&self) -> HttpResponse

Creates full response for error. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Clone for CorsError

source§

fn clone(&self) -> CorsError

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CorsError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for CorsError

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for CorsError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl ResponseError for CorsError

source§

fn status_code(&self) -> StatusCode

Returns appropriate status code for error. Read more
source§

fn error_response(&self) -> HttpResponse

Creates full response for error. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/actix_cors/index.html b/actix_cors/index.html index 629dcca1b..67b5c5f84 100644 --- a/actix_cors/index.html +++ b/actix_cors/index.html @@ -1,4 +1,4 @@ -actix_cors - Rust

Crate actix_cors

source ·
Expand description

Cross-Origin Resource Sharing (CORS) controls for Actix Web.

+actix_cors - Rust

Crate actix_cors

source ·
Expand description

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.

diff --git a/actix_cors/struct.Cors.html b/actix_cors/struct.Cors.html index 8fc6c698a..46e818a36 100644 --- a/actix_cors/struct.Cors.html +++ b/actix_cors/struct.Cors.html @@ -1,4 +1,4 @@ -Cors in actix_cors - Rust

Struct actix_cors::Cors

source ·
pub struct Cors { /* private fields */ }
Expand description

Builder for CORS middleware.

+Cors in actix_cors - Rust

Struct actix_cors::Cors

source ·
pub struct Cors { /* private fields */ }
Expand description

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 diff --git a/actix_identity/all.html b/actix_identity/all.html index db7fd162a..b12d9126e 100644 --- a/actix_identity/all.html +++ b/actix_identity/all.html @@ -1 +1 @@ -List of all items in this crate

\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/actix_identity/config/enum.LogoutBehaviour.html b/actix_identity/config/enum.LogoutBehaviour.html index d5d37baaf..3c83e6d13 100644 --- a/actix_identity/config/enum.LogoutBehaviour.html +++ b/actix_identity/config/enum.LogoutBehaviour.html @@ -1,4 +1,4 @@ -LogoutBehaviour in actix_identity::config - Rust

Enum actix_identity::config::LogoutBehaviour

source ·
#[non_exhaustive]
pub enum LogoutBehaviour { +LogoutBehaviour in actix_identity::config - Rust

Enum actix_identity::config::LogoutBehaviour

source ·
#[non_exhaustive]
pub enum LogoutBehaviour { PurgeSession, DeleteIdentityKeys, }
Expand description

LogoutBehaviour controls what actions are going to be performed when Identity::logout is diff --git a/actix_identity/config/index.html b/actix_identity/config/index.html index 9bf8723f4..1cf910885 100644 --- a/actix_identity/config/index.html +++ b/actix_identity/config/index.html @@ -1,4 +1,4 @@ -actix_identity::config - Rust

Module actix_identity::config

source ·
Expand description

Configuration options to tune the behaviour of IdentityMiddleware.

+actix_identity::config - Rust

Module actix_identity::config

source ·
Expand description

Configuration options to tune the behaviour of IdentityMiddleware.

Structs§

Enums§

\ No newline at end of file diff --git a/actix_identity/config/struct.IdentityMiddlewareBuilder.html b/actix_identity/config/struct.IdentityMiddlewareBuilder.html index 4372f6463..f69ab692a 100644 --- a/actix_identity/config/struct.IdentityMiddlewareBuilder.html +++ b/actix_identity/config/struct.IdentityMiddlewareBuilder.html @@ -1,4 +1,4 @@ -IdentityMiddlewareBuilder in actix_identity::config - Rust

Struct actix_identity::config::IdentityMiddlewareBuilder

source ·
pub struct IdentityMiddlewareBuilder { /* private fields */ }
Expand description

A fluent builder to construct an IdentityMiddleware instance with custom configuration +IdentityMiddlewareBuilder in actix_identity::config - Rust

Struct actix_identity::config::IdentityMiddlewareBuilder

source ·
pub struct IdentityMiddlewareBuilder { /* private fields */ }
Expand description

A fluent builder to construct an IdentityMiddleware instance with custom configuration parameters.

Use IdentityMiddleware::builder to get started!

Implementations§

source§

impl IdentityMiddlewareBuilder

source

pub fn id_key(self, key: &'static str) -> Self

Set a custom key to identify the user in the session.

diff --git a/actix_identity/error/enum.GetIdentityError.html b/actix_identity/error/enum.GetIdentityError.html index 1821a2bfa..016d3cd55 100644 --- a/actix_identity/error/enum.GetIdentityError.html +++ b/actix_identity/error/enum.GetIdentityError.html @@ -1,4 +1,4 @@ -GetIdentityError in actix_identity::error - Rust

Enum actix_identity::error::GetIdentityError

source ·
#[non_exhaustive]
pub enum GetIdentityError { +GetIdentityError in actix_identity::error - Rust

Enum actix_identity::error::GetIdentityError

source ·
#[non_exhaustive]
pub enum GetIdentityError { SessionExpiryError(SessionExpiryError), MissingIdentityError(MissingIdentityError), SessionGetError(SessionGetError), @@ -9,7 +9,7 @@
§

SessionGetError(SessionGetError)

Failed to accessing the session store.

§

LostIdentityError(LostIdentityError)

Identity info was lost after being validated.

Seeing this error indicates a bug in actix-identity.

-

Trait Implementations§

source§

impl Debug for GetIdentityError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for GetIdentityError

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for GetIdentityError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<LostIdentityError> for GetIdentityError

source§

fn from(original: LostIdentityError) -> GetIdentityError

Converts to this type from the input type.
source§

impl From<MissingIdentityError> for GetIdentityError

source§

fn from(original: MissingIdentityError) -> GetIdentityError

Converts to this type from the input type.
source§

impl From<SessionExpiryError> for GetIdentityError

source§

fn from(original: SessionExpiryError) -> GetIdentityError

Converts to this type from the input type.
source§

impl From<SessionGetError> for GetIdentityError

source§

fn from(original: SessionGetError) -> GetIdentityError

Converts to this type from the input type.
source§

impl ResponseError for GetIdentityError

source§

fn status_code(&self) -> StatusCode

Returns appropriate status code for error. Read more
§

fn error_response(&self) -> HttpResponse

Creates full response for error. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Debug for GetIdentityError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for GetIdentityError

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for GetIdentityError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<LostIdentityError> for GetIdentityError

source§

fn from(original: LostIdentityError) -> GetIdentityError

Converts to this type from the input type.
source§

impl From<MissingIdentityError> for GetIdentityError

source§

fn from(original: MissingIdentityError) -> GetIdentityError

Converts to this type from the input type.
source§

impl From<SessionExpiryError> for GetIdentityError

source§

fn from(original: SessionExpiryError) -> GetIdentityError

Converts to this type from the input type.
source§

impl From<SessionGetError> for GetIdentityError

source§

fn from(original: SessionGetError) -> GetIdentityError

Converts to this type from the input type.
source§

impl ResponseError for GetIdentityError

source§

fn status_code(&self) -> StatusCode

Returns appropriate status code for error. Read more
§

fn error_response(&self) -> HttpResponse

Creates full response for error. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/actix_identity/error/index.html b/actix_identity/error/index.html index 3ed6477bb..843e81c53 100644 --- a/actix_identity/error/index.html +++ b/actix_identity/error/index.html @@ -1,2 +1,2 @@ -actix_identity::error - Rust

Module actix_identity::error

source ·
Expand description

Failure modes of identity operations.

+actix_identity::error - Rust

Module actix_identity::error

source ·
Expand description

Failure modes of identity operations.

Structs§

Enums§

\ No newline at end of file diff --git a/actix_identity/error/struct.LoginError.html b/actix_identity/error/struct.LoginError.html index cddfd097d..5105b8af9 100644 --- a/actix_identity/error/struct.LoginError.html +++ b/actix_identity/error/struct.LoginError.html @@ -1,5 +1,5 @@ -LoginError in actix_identity::error - Rust

Struct actix_identity::error::LoginError

source ·
pub struct LoginError(/* private fields */);
Expand description

Error that can occur during login attempts.

-

Trait Implementations§

source§

impl Debug for LoginError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for LoginError

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for LoginError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<SessionInsertError> for LoginError

source§

fn from(original: SessionInsertError) -> LoginError

Converts to this type from the input type.
source§

impl ResponseError for LoginError

source§

fn status_code(&self) -> StatusCode

Returns appropriate status code for error. Read more
§

fn error_response(&self) -> HttpResponse

Creates full response for error. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +LoginError in actix_identity::error - Rust

Struct actix_identity::error::LoginError

source ·
pub struct LoginError(/* private fields */);
Expand description

Error that can occur during login attempts.

+

Trait Implementations§

source§

impl Debug for LoginError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for LoginError

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for LoginError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<SessionInsertError> for LoginError

source§

fn from(original: SessionInsertError) -> LoginError

Converts to this type from the input type.
source§

impl ResponseError for LoginError

source§

fn status_code(&self) -> StatusCode

Returns appropriate status code for error. Read more
§

fn error_response(&self) -> HttpResponse

Creates full response for error. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/actix_identity/error/struct.LostIdentityError.html b/actix_identity/error/struct.LostIdentityError.html index 36b707ea3..c93fb83f8 100644 --- a/actix_identity/error/struct.LostIdentityError.html +++ b/actix_identity/error/struct.LostIdentityError.html @@ -1,6 +1,6 @@ -LostIdentityError in actix_identity::error - Rust

Struct actix_identity::error::LostIdentityError

source ·
#[non_exhaustive]
pub struct LostIdentityError;
Expand description

The identity information has been lost.

+LostIdentityError in actix_identity::error - Rust

Struct actix_identity::error::LostIdentityError

source ·
#[non_exhaustive]
pub struct LostIdentityError;
Expand description

The identity information has been lost.

Seeing this error in user code indicates a bug in actix-identity.

-

Trait Implementations§

source§

impl Debug for LostIdentityError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for LostIdentityError

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for LostIdentityError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<LostIdentityError> for GetIdentityError

source§

fn from(original: LostIdentityError) -> GetIdentityError

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Debug for LostIdentityError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for LostIdentityError

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for LostIdentityError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<LostIdentityError> for GetIdentityError

source§

fn from(original: LostIdentityError) -> GetIdentityError

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/actix_identity/error/struct.MissingIdentityError.html b/actix_identity/error/struct.MissingIdentityError.html index 7feb8c9fe..e6819c3a4 100644 --- a/actix_identity/error/struct.MissingIdentityError.html +++ b/actix_identity/error/struct.MissingIdentityError.html @@ -1,5 +1,5 @@ -MissingIdentityError in actix_identity::error - Rust

Struct actix_identity::error::MissingIdentityError

source ·
#[non_exhaustive]
pub struct MissingIdentityError;
Expand description

There is no identity information attached to the current session.

-

Trait Implementations§

source§

impl Debug for MissingIdentityError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for MissingIdentityError

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for MissingIdentityError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<MissingIdentityError> for GetIdentityError

source§

fn from(original: MissingIdentityError) -> GetIdentityError

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +MissingIdentityError in actix_identity::error - Rust

Struct actix_identity::error::MissingIdentityError

source ·
#[non_exhaustive]
pub struct MissingIdentityError;
Expand description

There is no identity information attached to the current session.

+

Trait Implementations§

source§

impl Debug for MissingIdentityError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for MissingIdentityError

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for MissingIdentityError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<MissingIdentityError> for GetIdentityError

source§

fn from(original: MissingIdentityError) -> GetIdentityError

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/actix_identity/error/struct.SessionExpiryError.html b/actix_identity/error/struct.SessionExpiryError.html index 147d8ac29..0476d96eb 100644 --- a/actix_identity/error/struct.SessionExpiryError.html +++ b/actix_identity/error/struct.SessionExpiryError.html @@ -1,5 +1,5 @@ -SessionExpiryError in actix_identity::error - Rust

Struct actix_identity::error::SessionExpiryError

source ·
pub struct SessionExpiryError(/* private fields */);
Expand description

Error encountered when working with a session that has expired.

-

Trait Implementations§

source§

impl Debug for SessionExpiryError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for SessionExpiryError

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for SessionExpiryError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<SessionExpiryError> for GetIdentityError

source§

fn from(original: SessionExpiryError) -> GetIdentityError

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +SessionExpiryError in actix_identity::error - Rust

Struct actix_identity::error::SessionExpiryError

source ·
pub struct SessionExpiryError(/* private fields */);
Expand description

Error encountered when working with a session that has expired.

+

Trait Implementations§

source§

impl Debug for SessionExpiryError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for SessionExpiryError

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for SessionExpiryError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<SessionExpiryError> for GetIdentityError

source§

fn from(original: SessionExpiryError) -> GetIdentityError

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/actix_identity/index.html b/actix_identity/index.html index 7eb2da195..fdcc1b34d 100644 --- a/actix_identity/index.html +++ b/actix_identity/index.html @@ -1,4 +1,4 @@ -actix_identity - Rust

Crate actix_identity

source ·
Expand description

Identity management for Actix Web.

+actix_identity - Rust

Crate actix_identity

source ·
Expand description

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.

§Getting started

diff --git a/actix_identity/struct.Identity.html b/actix_identity/struct.Identity.html index 767e52c63..9bf4bfcb3 100644 --- a/actix_identity/struct.Identity.html +++ b/actix_identity/struct.Identity.html @@ -1,4 +1,4 @@ -Identity in actix_identity - Rust

Struct actix_identity::Identity

source ·
pub struct Identity(/* private fields */);
Expand description

A verified user identity. It can be used as a request extractor.

+Identity in actix_identity - Rust

Struct actix_identity::Identity

source ·
pub struct Identity(/* private fields */);
Expand description

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.

diff --git a/actix_identity/struct.IdentityMiddleware.html b/actix_identity/struct.IdentityMiddleware.html index a6c7d3abd..a3f12db27 100644 --- a/actix_identity/struct.IdentityMiddleware.html +++ b/actix_identity/struct.IdentityMiddleware.html @@ -1,4 +1,4 @@ -IdentityMiddleware in actix_identity - Rust

Struct actix_identity::IdentityMiddleware

source ·
pub struct IdentityMiddleware { /* private fields */ }
Expand description

Identity management middleware.

+IdentityMiddleware in actix_identity - Rust

Struct actix_identity::IdentityMiddleware

source ·
pub struct IdentityMiddleware { /* private fields */ }
Expand description

Identity management middleware.

use actix_web::{cookie::Key, App, HttpServer};
 use actix_session::storage::RedisSessionStore;
diff --git a/actix_identity/trait.IdentityExt.html b/actix_identity/trait.IdentityExt.html
index 257d902f2..1f6cd88f0 100644
--- a/actix_identity/trait.IdentityExt.html
+++ b/actix_identity/trait.IdentityExt.html
@@ -1,4 +1,4 @@
-IdentityExt in actix_identity - Rust

Trait actix_identity::IdentityExt

source ·
pub trait IdentityExt {
+IdentityExt in actix_identity - Rust

Trait actix_identity::IdentityExt

source ·
pub trait IdentityExt {
     // Required method
     fn get_identity(&self) -> Result<Identity, GetIdentityError>;
 }
Expand description

Helper trait to retrieve an Identity instance from various actix-web’s types.

diff --git a/actix_limitation/all.html b/actix_limitation/all.html index 193f59f2a..3c88e52dc 100644 --- a/actix_limitation/all.html +++ b/actix_limitation/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/actix_limitation/constant.DEFAULT_COOKIE_NAME.html b/actix_limitation/constant.DEFAULT_COOKIE_NAME.html index 5efddf3c8..1e35a70e0 100644 --- a/actix_limitation/constant.DEFAULT_COOKIE_NAME.html +++ b/actix_limitation/constant.DEFAULT_COOKIE_NAME.html @@ -1,2 +1,2 @@ -DEFAULT_COOKIE_NAME in actix_limitation - Rust

Constant actix_limitation::DEFAULT_COOKIE_NAME

source ·
pub const DEFAULT_COOKIE_NAME: &str = "sid";
Expand description

Default cookie name.

+DEFAULT_COOKIE_NAME in actix_limitation - Rust

Constant actix_limitation::DEFAULT_COOKIE_NAME

source ·
pub const DEFAULT_COOKIE_NAME: &str = "sid";
Expand description

Default cookie name.

\ No newline at end of file diff --git a/actix_limitation/constant.DEFAULT_PERIOD_SECS.html b/actix_limitation/constant.DEFAULT_PERIOD_SECS.html index a6b21355d..8a1e694ae 100644 --- a/actix_limitation/constant.DEFAULT_PERIOD_SECS.html +++ b/actix_limitation/constant.DEFAULT_PERIOD_SECS.html @@ -1,2 +1,2 @@ -DEFAULT_PERIOD_SECS in actix_limitation - Rust

Constant actix_limitation::DEFAULT_PERIOD_SECS

source ·
pub const DEFAULT_PERIOD_SECS: u64 = 3600;
Expand description

Default period (in seconds).

+DEFAULT_PERIOD_SECS in actix_limitation - Rust

Constant actix_limitation::DEFAULT_PERIOD_SECS

source ·
pub const DEFAULT_PERIOD_SECS: u64 = 3600;
Expand description

Default period (in seconds).

\ No newline at end of file diff --git a/actix_limitation/constant.DEFAULT_REQUEST_LIMIT.html b/actix_limitation/constant.DEFAULT_REQUEST_LIMIT.html index 7d110469e..e932f7d34 100644 --- a/actix_limitation/constant.DEFAULT_REQUEST_LIMIT.html +++ b/actix_limitation/constant.DEFAULT_REQUEST_LIMIT.html @@ -1,2 +1,2 @@ -DEFAULT_REQUEST_LIMIT in actix_limitation - Rust

Constant actix_limitation::DEFAULT_REQUEST_LIMIT

source ·
pub const DEFAULT_REQUEST_LIMIT: usize = 5000;
Expand description

Default request limit.

+DEFAULT_REQUEST_LIMIT in actix_limitation - Rust

Constant actix_limitation::DEFAULT_REQUEST_LIMIT

source ·
pub const DEFAULT_REQUEST_LIMIT: usize = 5000;
Expand description

Default request limit.

\ No newline at end of file diff --git a/actix_limitation/constant.DEFAULT_SESSION_KEY.html b/actix_limitation/constant.DEFAULT_SESSION_KEY.html index 8bcffdd51..579fe81bb 100644 --- a/actix_limitation/constant.DEFAULT_SESSION_KEY.html +++ b/actix_limitation/constant.DEFAULT_SESSION_KEY.html @@ -1,2 +1,2 @@ -DEFAULT_SESSION_KEY in actix_limitation - Rust

Constant actix_limitation::DEFAULT_SESSION_KEY

source ·
pub const DEFAULT_SESSION_KEY: &str = "rate-api-id";
Expand description

Default session key.

+DEFAULT_SESSION_KEY in actix_limitation - Rust

Constant actix_limitation::DEFAULT_SESSION_KEY

source ·
pub const DEFAULT_SESSION_KEY: &str = "rate-api-id";
Expand description

Default session key.

\ No newline at end of file diff --git a/actix_limitation/enum.Error.html b/actix_limitation/enum.Error.html index ab2f262ea..ea104bbb0 100644 --- a/actix_limitation/enum.Error.html +++ b/actix_limitation/enum.Error.html @@ -1,4 +1,4 @@ -Error in actix_limitation - Rust

Enum actix_limitation::Error

source ·
pub enum Error {
+Error in actix_limitation - Rust

Enum actix_limitation::Error

source ·
pub enum Error {
     Client(RedisError),
     LimitExceeded(Status),
     Time(ComponentRange),
@@ -8,7 +8,7 @@
 
§

LimitExceeded(Status)

Limit is exceeded for a key.

§

Time(ComponentRange)

Time conversion failed.

§

Other(String)

Generic error.

-

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<ComponentRange> for Error

source§

fn from(original: ComponentRange) -> Error

Converts to this type from the input type.
source§

impl From<RedisError> for Error

source§

fn from(original: RedisError) -> Error

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for Error

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<ComponentRange> for Error

source§

fn from(original: ComponentRange) -> Error

Converts to this type from the input type.
source§

impl From<RedisError> for Error

source§

fn from(original: RedisError) -> Error

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for Error

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/actix_limitation/index.html b/actix_limitation/index.html index b7de34a1e..0ad0b9ce2 100644 --- a/actix_limitation/index.html +++ b/actix_limitation/index.html @@ -1,4 +1,4 @@ -actix_limitation - Rust

Crate actix_limitation

source ·
Expand description

Rate limiter using a fixed window counter for arbitrary keys, backed by Redis for Actix Web.

+actix_limitation - Rust

Crate actix_limitation

source ·
Expand description

Rate limiter using a fixed window counter for arbitrary keys, backed by Redis for Actix Web.

[dependencies]
 actix-web = "4"
 actix-limitation = "0.5"
diff --git a/actix_limitation/struct.Builder.html b/actix_limitation/struct.Builder.html
index c96a351e4..279a91be4 100644
--- a/actix_limitation/struct.Builder.html
+++ b/actix_limitation/struct.Builder.html
@@ -1,4 +1,4 @@
-Builder in actix_limitation - Rust

Struct actix_limitation::Builder

source ·
pub struct Builder { /* private fields */ }
Expand description

Rate limiter builder.

+Builder in actix_limitation - Rust

Struct actix_limitation::Builder

source ·
pub struct Builder { /* private fields */ }
Expand description

Rate limiter builder.

Implementations§

source§

impl Builder

source

pub fn limit(&mut self, limit: usize) -> &mut Self

Set upper limit.

source

pub fn period(&mut self, period: Duration) -> &mut Self

Set limit window/period.

source

pub fn key_by<F>(&mut self, resolver: F) -> &mut Self
where @@ -6,12 +6,12 @@

Should not be used in combination with cookie_name or session_key as they conflict.

source

pub fn cookie_name( &mut self, - cookie_name: impl Into<Cow<'static, str>> + cookie_name: impl Into<Cow<'static, str>>, ) -> &mut Self

👎Deprecated: Prefer key_by.

Sets name of cookie to be sent.

This method should not be used in combination of key_by as they conflict.

source

pub fn session_key( &mut self, - session_key: impl Into<Cow<'static, str>> + session_key: impl Into<Cow<'static, str>>, ) -> &mut Self

👎Deprecated: Prefer key_by.

Sets session key to be used in backend.

This method should not be used in combination of key_by as they conflict.

source

pub fn build(&mut self) -> Result<Limiter, Error>

Finalizes and returns a Limiter.

diff --git a/actix_limitation/struct.Limiter.html b/actix_limitation/struct.Limiter.html index 55974e5f9..36fbdfb97 100644 --- a/actix_limitation/struct.Limiter.html +++ b/actix_limitation/struct.Limiter.html @@ -1,4 +1,4 @@ -Limiter in actix_limitation - Rust

Struct actix_limitation::Limiter

source ·
pub struct Limiter { /* private fields */ }
Expand description

Rate limiter.

+Limiter in actix_limitation - Rust

Struct actix_limitation::Limiter

source ·
pub struct Limiter { /* private fields */ }
Expand description

Rate limiter.

Implementations§

source§

impl Limiter

source

pub fn builder(redis_url: impl Into<String>) -> Builder

Construct rate limiter builder with defaults.

See redis-rs docs on connection parameters for how to set the Redis URL.

diff --git a/actix_limitation/struct.RateLimiter.html b/actix_limitation/struct.RateLimiter.html index 70f8dc166..d197fb2ca 100644 --- a/actix_limitation/struct.RateLimiter.html +++ b/actix_limitation/struct.RateLimiter.html @@ -1,4 +1,4 @@ -RateLimiter in actix_limitation - Rust

Struct actix_limitation::RateLimiter

source ·
#[non_exhaustive]
pub struct RateLimiter;
Expand description

Rate limit middleware.

+RateLimiter in actix_limitation - Rust

Struct actix_limitation::RateLimiter

source ·
#[non_exhaustive]
pub struct RateLimiter;
Expand description

Rate limit middleware.

Trait Implementations§

source§

impl Debug for RateLimiter

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for RateLimiter

source§

fn default() -> RateLimiter

Returns the “default value” for a type. Read more
source§

impl<S, B> Transform<S, ServiceRequest> for RateLimiter
where S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error> + 'static, S::Future: 'static, diff --git a/actix_limitation/struct.Status.html b/actix_limitation/struct.Status.html index bfbcf41e0..e024cc0f3 100644 --- a/actix_limitation/struct.Status.html +++ b/actix_limitation/struct.Status.html @@ -1,4 +1,4 @@ -Status in actix_limitation - Rust

Struct actix_limitation::Status

source ·
pub struct Status { /* private fields */ }
Expand description

A report for a given key containing the limit status.

+Status in actix_limitation - Rust

Struct actix_limitation::Status

source ·
pub struct Status { /* private fields */ }
Expand description

A report for a given key containing the limit status.

Implementations§

source§

impl Status

source

pub fn limit(&self) -> usize

Returns the maximum number of requests allowed in the current period.

source

pub fn remaining(&self) -> usize

Returns how many requests are left in the current period.

source

pub fn reset_epoch_utc(&self) -> usize

Returns a UNIX timestamp in UTC approximately when the next period will begin.

diff --git a/actix_protobuf/all.html b/actix_protobuf/all.html index 846c717aa..c4ffd6507 100644 --- a/actix_protobuf/all.html +++ b/actix_protobuf/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/actix_protobuf/enum.ProtoBufPayloadError.html b/actix_protobuf/enum.ProtoBufPayloadError.html index 2021d63fe..2cf2a3668 100644 --- a/actix_protobuf/enum.ProtoBufPayloadError.html +++ b/actix_protobuf/enum.ProtoBufPayloadError.html @@ -1,4 +1,4 @@ -ProtoBufPayloadError in actix_protobuf - Rust

Enum actix_protobuf::ProtoBufPayloadError

source ·
pub enum ProtoBufPayloadError {
+ProtoBufPayloadError in actix_protobuf - Rust

Enum actix_protobuf::ProtoBufPayloadError

source ·
pub enum ProtoBufPayloadError {
     Overflow,
     ContentType,
     Serialize(EncodeError),
diff --git a/actix_protobuf/index.html b/actix_protobuf/index.html
index ddf4a629d..5a912dff1 100644
--- a/actix_protobuf/index.html
+++ b/actix_protobuf/index.html
@@ -1,2 +1,2 @@
-actix_protobuf - Rust

Crate actix_protobuf

source ·
Expand description

Protobuf payload extractor for Actix Web.

+actix_protobuf - Rust

Crate actix_protobuf

source ·
Expand description

Protobuf payload extractor for Actix Web.

Structs§

Enums§

Traits§

\ No newline at end of file diff --git a/actix_protobuf/struct.ProtoBuf.html b/actix_protobuf/struct.ProtoBuf.html index b9ff0834d..4e042a73a 100644 --- a/actix_protobuf/struct.ProtoBuf.html +++ b/actix_protobuf/struct.ProtoBuf.html @@ -1,6 +1,6 @@ -ProtoBuf in actix_protobuf - Rust

Struct actix_protobuf::ProtoBuf

source ·
pub struct ProtoBuf<T: Message>(pub T);

Tuple Fields§

§0: T

Trait Implementations§

source§

impl<T> Debug for ProtoBuf<T>
where - T: Debug + Message,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: Message> Deref for ProtoBuf<T>

§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &T

Dereferences the value.
source§

impl<T: Message> DerefMut for ProtoBuf<T>

source§

fn deref_mut(&mut self) -> &mut T

Mutably dereferences the value.
source§

impl<T> Display for ProtoBuf<T>
where - T: Display + Message,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T> FromRequest for ProtoBuf<T>
where +ProtoBuf in actix_protobuf - Rust

Struct actix_protobuf::ProtoBuf

source ·
pub struct ProtoBuf<T: Message>(pub T);

Tuple Fields§

§0: T

Trait Implementations§

source§

impl<T> Debug for ProtoBuf<T>
where + T: Debug + Message,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: Message> Deref for ProtoBuf<T>

§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &T

Dereferences the value.
source§

impl<T: Message> DerefMut for ProtoBuf<T>

source§

fn deref_mut(&mut self) -> &mut T

Mutably dereferences the value.
source§

impl<T> Display for ProtoBuf<T>
where + T: Display + Message,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T> FromRequest for ProtoBuf<T>
where T: Message + Default + 'static,

§

type Error = Error

The associated error which can be returned.
§

type Future = Pin<Box<dyn Future<Output = Result<ProtoBuf<T>, Error>>>>

Future that resolves to a Self. Read more
source§

fn from_request(req: &HttpRequest, payload: &mut Payload) -> Self::Future

Create a Self from request parts asynchronously.
§

fn extract(req: &HttpRequest) -> Self::Future

Create a Self from request head asynchronously. Read more
source§

impl<T: Message + Default> Responder for ProtoBuf<T>

§

type Body = BoxBody

source§

fn respond_to(self, _: &HttpRequest) -> HttpResponse

Convert self to HttpResponse.
§

fn customize(self) -> CustomizeResponder<Self>
where Self: Sized,

Wraps responder to allow alteration of its response. Read more

Auto Trait Implementations§

§

impl<T> Freeze for ProtoBuf<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for ProtoBuf<T>
where diff --git a/actix_protobuf/struct.ProtoBufConfig.html b/actix_protobuf/struct.ProtoBufConfig.html index ca3fe412e..d6602ce42 100644 --- a/actix_protobuf/struct.ProtoBufConfig.html +++ b/actix_protobuf/struct.ProtoBufConfig.html @@ -1,4 +1,4 @@ -ProtoBufConfig in actix_protobuf - Rust

Struct actix_protobuf::ProtoBufConfig

source ·
pub struct ProtoBufConfig { /* private fields */ }

Implementations§

source§

impl ProtoBufConfig

source

pub fn limit(&mut self, limit: usize) -> &mut Self

Change max size of payload. By default max size is 256Kb

+ProtoBufConfig in actix_protobuf - Rust

Struct actix_protobuf::ProtoBufConfig

source ·
pub struct ProtoBufConfig { /* private fields */ }

Implementations§

source§

impl ProtoBufConfig

source

pub fn limit(&mut self, limit: usize) -> &mut Self

Change max size of payload. By default max size is 256Kb

Trait Implementations§

source§

impl Default for ProtoBufConfig

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/actix_protobuf/struct.ProtoBufMessage.html b/actix_protobuf/struct.ProtoBufMessage.html index 90717d28a..e99c7dad1 100644 --- a/actix_protobuf/struct.ProtoBufMessage.html +++ b/actix_protobuf/struct.ProtoBufMessage.html @@ -1,4 +1,4 @@ -ProtoBufMessage in actix_protobuf - Rust

Struct actix_protobuf::ProtoBufMessage

source ·
pub struct ProtoBufMessage<T: Message + Default> { /* private fields */ }

Implementations§

source§

impl<T: Message + Default> ProtoBufMessage<T>

source

pub fn new(req: &HttpRequest, payload: &mut Payload) -> Self

Create ProtoBufMessage for request.

+ProtoBufMessage in actix_protobuf - Rust

Struct actix_protobuf::ProtoBufMessage

source ·
pub struct ProtoBufMessage<T: Message + Default> { /* private fields */ }

Implementations§

source§

impl<T: Message + Default> ProtoBufMessage<T>

source

pub fn new(req: &HttpRequest, payload: &mut Payload) -> Self

Create ProtoBufMessage for request.

source

pub fn limit(self, limit: usize) -> Self

Change max size of payload. By default max size is 256Kb

Trait Implementations§

source§

impl<T: Message + Default + 'static> Future for ProtoBufMessage<T>

§

type Output = Result<T, ProtoBufPayloadError>

The type of value produced on completion.
source§

fn poll(self: Pin<&mut Self>, task: &mut Context<'_>) -> Poll<Self::Output>

Attempt to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more

Auto Trait Implementations§

§

impl<T> Freeze for ProtoBufMessage<T>

§

impl<T> !RefUnwindSafe for ProtoBufMessage<T>

§

impl<T> !Send for ProtoBufMessage<T>

§

impl<T> !Sync for ProtoBufMessage<T>

§

impl<T> Unpin for ProtoBufMessage<T>

§

impl<T> !UnwindSafe for ProtoBufMessage<T>

Blanket Implementations§

source§

impl<T> Any for T
where @@ -60,7 +60,7 @@ the future is ready after the first call to Future::poll. Read m U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<F, T, E> TryFuture for F
where F: Future<Output = Result<T, E>> + ?Sized,

§

type Ok = T

The type of successful values yielded by this future
§

type Error = E

The type of failures yielded by this future
§

fn try_poll( self: Pin<&mut F>, - cx: &mut Context<'_> + cx: &mut Context<'_>, ) -> Poll<<F as Future>::Output>

Poll this TryFuture as if it were a Future. Read more
§

impl<Fut> TryFutureExt for Fut
where Fut: TryFuture + ?Sized,

§

fn flatten_sink<Item>(self) -> FlattenSink<Self, Self::Ok>
where Self::Ok: Sink<Item, Error = Self::Error>, @@ -104,7 +104,7 @@ future is a stream. Read more

Sized,

Wraps a [TryFuture] into a type that implements Future. Read more
§

fn try_poll_unpin( &mut self, - cx: &mut Context<'_> + cx: &mut Context<'_>, ) -> Poll<Result<Self::Ok, Self::Error>>
where Self: Unpin,

A convenience method for calling [TryFuture::try_poll] on Unpin future types.
source§

impl<T, U> TryInto<U> for T
where diff --git a/actix_protobuf/trait.ProtoBufResponseBuilder.html b/actix_protobuf/trait.ProtoBufResponseBuilder.html index 0bfe69106..3d8f08eae 100644 --- a/actix_protobuf/trait.ProtoBufResponseBuilder.html +++ b/actix_protobuf/trait.ProtoBufResponseBuilder.html @@ -1,4 +1,4 @@ -ProtoBufResponseBuilder in actix_protobuf - Rust

Trait actix_protobuf::ProtoBufResponseBuilder

source ·
pub trait ProtoBufResponseBuilder {
+ProtoBufResponseBuilder in actix_protobuf - Rust

Trait actix_protobuf::ProtoBufResponseBuilder

source ·
pub trait ProtoBufResponseBuilder {
     // Required method
     fn protobuf<T: Message>(&mut self, value: T) -> Result<HttpResponse, Error>;
 }

Required Methods§

source

fn protobuf<T: Message>(&mut self, value: T) -> Result<HttpResponse, Error>

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl ProtoBufResponseBuilder for HttpResponseBuilder

source§

fn protobuf<T: Message>(&mut self, value: T) -> Result<HttpResponse, Error>

Implementors§

\ No newline at end of file diff --git a/actix_session/all.html b/actix_session/all.html index 8c5a27563..35e08b0a4 100644 --- a/actix_session/all.html +++ b/actix_session/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/actix_session/config/enum.CookieContentSecurity.html b/actix_session/config/enum.CookieContentSecurity.html index 419556e70..070d6c168 100644 --- a/actix_session/config/enum.CookieContentSecurity.html +++ b/actix_session/config/enum.CookieContentSecurity.html @@ -1,4 +1,4 @@ -CookieContentSecurity in actix_session::config - Rust

Enum actix_session::config::CookieContentSecurity

source ·
pub enum CookieContentSecurity {
+CookieContentSecurity in actix_session::config - Rust

Enum actix_session::config::CookieContentSecurity

source ·
pub enum CookieContentSecurity {
     Private,
     Signed,
 }
Expand description

Determines how to secure the content of the session cookie.

diff --git a/actix_session/config/enum.SessionLifecycle.html b/actix_session/config/enum.SessionLifecycle.html index 7fd0c3374..d5c5e6a62 100644 --- a/actix_session/config/enum.SessionLifecycle.html +++ b/actix_session/config/enum.SessionLifecycle.html @@ -1,4 +1,4 @@ -SessionLifecycle in actix_session::config - Rust

Enum actix_session::config::SessionLifecycle

source ·
#[non_exhaustive]
pub enum SessionLifecycle { +SessionLifecycle in actix_session::config - Rust

Enum actix_session::config::SessionLifecycle

source ·
#[non_exhaustive]
pub enum SessionLifecycle { BrowserSession(BrowserSession), PersistentSession(PersistentSession), }
Expand description

Determines what type of session cookie should be used and how its lifecycle should be managed.

diff --git a/actix_session/config/enum.TtlExtensionPolicy.html b/actix_session/config/enum.TtlExtensionPolicy.html index d5cfb608b..be95cd98f 100644 --- a/actix_session/config/enum.TtlExtensionPolicy.html +++ b/actix_session/config/enum.TtlExtensionPolicy.html @@ -1,4 +1,4 @@ -TtlExtensionPolicy in actix_session::config - Rust

Enum actix_session::config::TtlExtensionPolicy

source ·
#[non_exhaustive]
pub enum TtlExtensionPolicy { +TtlExtensionPolicy in actix_session::config - Rust

Enum actix_session::config::TtlExtensionPolicy

source ·
#[non_exhaustive]
pub enum TtlExtensionPolicy { OnEveryRequest, OnStateChanges, }
Expand description

Configuration for which events should trigger an extension of the time-to-live for your session.

diff --git a/actix_session/config/index.html b/actix_session/config/index.html index 247db8544..a60eb0744 100644 --- a/actix_session/config/index.html +++ b/actix_session/config/index.html @@ -1,3 +1,3 @@ -actix_session::config - Rust

Module actix_session::config

source ·
Expand description

Configuration options to tune the behaviour of SessionMiddleware.

+actix_session::config - Rust

Module actix_session::config

source ·
Expand description

Configuration options to tune the behaviour of SessionMiddleware.

Structs§

Enums§

  • Determines how to secure the content of the session cookie.
  • Determines what type of session cookie should be used and how its lifecycle should be managed.
  • Configuration for which events should trigger an extension of the time-to-live for your session.
\ No newline at end of file diff --git a/actix_session/config/struct.BrowserSession.html b/actix_session/config/struct.BrowserSession.html index 77e51fc46..6a8e8231e 100644 --- a/actix_session/config/struct.BrowserSession.html +++ b/actix_session/config/struct.BrowserSession.html @@ -1,4 +1,4 @@ -BrowserSession in actix_session::config - Rust

Struct actix_session::config::BrowserSession

source ·
pub struct BrowserSession { /* private fields */ }
Expand description

A session lifecycle strategy where the session cookie expires when the +BrowserSession in actix_session::config - Rust

Struct actix_session::config::BrowserSession

source ·
pub struct BrowserSession { /* private fields */ }
Expand description

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 @@ -24,7 +24,7 @@ specifying a more aggressive state TTL extension policy - check out BrowserSession::state_ttl_extension_policy for more details.

source

pub fn state_ttl_extension_policy( self, - ttl_extension_policy: TtlExtensionPolicy + ttl_extension_policy: TtlExtensionPolicy, ) -> Self

Determine under what circumstances the TTL of your session state should be extended.

Defaults to TtlExtensionPolicy::OnStateChanges if left unspecified.

See TtlExtensionPolicy for more details.

diff --git a/actix_session/config/struct.PersistentSession.html b/actix_session/config/struct.PersistentSession.html index 789fb6b64..c01147c94 100644 --- a/actix_session/config/struct.PersistentSession.html +++ b/actix_session/config/struct.PersistentSession.html @@ -1,4 +1,4 @@ -PersistentSession in actix_session::config - Rust

Struct actix_session::config::PersistentSession

source ·
pub struct PersistentSession { /* private fields */ }
Expand description

A session lifecycle strategy where the session cookie will be persistent.

+PersistentSession in actix_session::config - Rust

Struct actix_session::config::PersistentSession

source ·
pub struct PersistentSession { /* private fields */ }
Expand description

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 @@ -24,7 +24,7 @@ to session_ttl_extension_policy for more details.

source

pub fn session_ttl_extension_policy( self, - ttl_extension_policy: TtlExtensionPolicy + ttl_extension_policy: TtlExtensionPolicy, ) -> Self

Determines under what circumstances the TTL of your session should be extended. See TtlExtensionPolicy for more details.

Defaults to TtlExtensionPolicy::OnStateChanges.

diff --git a/actix_session/config/struct.SessionMiddlewareBuilder.html b/actix_session/config/struct.SessionMiddlewareBuilder.html index c803ae85e..49e42c864 100644 --- a/actix_session/config/struct.SessionMiddlewareBuilder.html +++ b/actix_session/config/struct.SessionMiddlewareBuilder.html @@ -1,4 +1,4 @@ -SessionMiddlewareBuilder in actix_session::config - Rust

Struct actix_session::config::SessionMiddlewareBuilder

source ·
pub struct SessionMiddlewareBuilder<Store: SessionStore> { /* private fields */ }
Expand description

A fluent, customized SessionMiddleware builder.

+SessionMiddlewareBuilder in actix_session::config - Rust

Struct actix_session::config::SessionMiddlewareBuilder

source ·
pub struct SessionMiddlewareBuilder<Store: SessionStore> { /* private fields */ }
Expand description

A fluent, customized SessionMiddleware builder.

Implementations§

source§

impl<Store: SessionStore> SessionMiddlewareBuilder<Store>

source

pub fn cookie_name(self, name: String) -> Self

Set the name of the cookie used to store the session ID.

Defaults to id.

source

pub fn cookie_secure(self, secure: bool) -> Self

Set the Secure attribute for the cookie used to store the session ID.

@@ -7,7 +7,7 @@

Default is true.

source

pub fn session_lifecycle<S: Into<SessionLifecycle>>( self, - session_lifecycle: S + session_lifecycle: S, ) -> Self

Determines what type of session cookie should be used and how its lifecycle should be managed. Check out SessionLifecycle’s documentation for more details on the available options.

Default is SessionLifecycle::BrowserSession.

@@ -34,7 +34,7 @@ to the same host that set the cookie, excluding subdomains.

By default, the attribute is left unspecified.

source

pub fn cookie_content_security( self, - content_security: CookieContentSecurity + content_security: CookieContentSecurity, ) -> Self

Choose how the session cookie content should be secured.

  • CookieContentSecurity::Private selects encrypted cookie content.
  • diff --git a/actix_session/enum.SessionStatus.html b/actix_session/enum.SessionStatus.html index e1c71ad99..6fab3135d 100644 --- a/actix_session/enum.SessionStatus.html +++ b/actix_session/enum.SessionStatus.html @@ -1,4 +1,4 @@ -SessionStatus in actix_session - Rust

    Enum actix_session::SessionStatus

    source ·
    pub enum SessionStatus {
    +SessionStatus in actix_session - Rust

    Enum actix_session::SessionStatus

    source ·
    pub enum SessionStatus {
         Changed,
         Purged,
         Renewed,
    diff --git a/actix_session/index.html b/actix_session/index.html
    index b327b3734..c487ac290 100644
    --- a/actix_session/index.html
    +++ b/actix_session/index.html
    @@ -1,4 +1,4 @@
    -actix_session - Rust

    Crate actix_session

    source ·
    Expand description

    Session management for Actix Web.

    +actix_session - Rust

    Crate actix_session

    source ·
    Expand description

    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 diff --git a/actix_session/storage/enum.LoadError.html b/actix_session/storage/enum.LoadError.html index 0de30c121..9dbcfa938 100644 --- a/actix_session/storage/enum.LoadError.html +++ b/actix_session/storage/enum.LoadError.html @@ -1,10 +1,10 @@ -LoadError in actix_session::storage - Rust

    Enum actix_session::storage::LoadError

    source ·
    pub enum LoadError {
    +LoadError in actix_session::storage - Rust

    Enum actix_session::storage::LoadError

    source ·
    pub enum LoadError {
         Deserialization(Error),
         Other(Error),
     }
    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§

    source§

    impl Debug for LoadError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for LoadError

    source§

    fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for LoadError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Debug for LoadError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for LoadError

    source§

    fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for LoadError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/actix_session/storage/enum.SaveError.html b/actix_session/storage/enum.SaveError.html index bc4f2c244..76818077a 100644 --- a/actix_session/storage/enum.SaveError.html +++ b/actix_session/storage/enum.SaveError.html @@ -1,10 +1,10 @@ -SaveError in actix_session::storage - Rust

    Enum actix_session::storage::SaveError

    source ·
    pub enum SaveError {
    +SaveError in actix_session::storage - Rust

    Enum actix_session::storage::SaveError

    source ·
    pub enum SaveError {
         Serialization(Error),
         Other(Error),
     }
    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§

    source§

    impl Debug for SaveError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SaveError

    source§

    fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for SaveError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Debug for SaveError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SaveError

    source§

    fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for SaveError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/actix_session/storage/enum.UpdateError.html b/actix_session/storage/enum.UpdateError.html index 28e934987..7af3bebda 100644 --- a/actix_session/storage/enum.UpdateError.html +++ b/actix_session/storage/enum.UpdateError.html @@ -1,10 +1,10 @@ -UpdateError in actix_session::storage - Rust

    Enum actix_session::storage::UpdateError

    source ·
    pub enum UpdateError {
    +UpdateError in actix_session::storage - Rust

    Enum actix_session::storage::UpdateError

    source ·
    pub enum UpdateError {
         Serialization(Error),
         Other(Error),
     }
    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§

    source§

    impl Debug for UpdateError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for UpdateError

    source§

    fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for UpdateError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Debug for UpdateError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for UpdateError

    source§

    fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for UpdateError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/actix_session/storage/index.html b/actix_session/storage/index.html index e50fce9c3..6c277ba6d 100644 --- a/actix_session/storage/index.html +++ b/actix_session/storage/index.html @@ -1,4 +1,4 @@ -actix_session::storage - Rust

    Module actix_session::storage

    source ·
    Expand description

    Pluggable storage backends for session state.

    +actix_session::storage - Rust

    Module actix_session::storage

    source ·
    Expand description

    Pluggable storage backends for session state.

    Structs§

    Enums§

    Traits§

    • The interface to retrieve and save the current session data from/to the chosen storage backend.
    \ No newline at end of file diff --git a/actix_session/storage/struct.CookieSessionStore.html b/actix_session/storage/struct.CookieSessionStore.html index d2ad68af6..e573674db 100644 --- a/actix_session/storage/struct.CookieSessionStore.html +++ b/actix_session/storage/struct.CookieSessionStore.html @@ -1,4 +1,4 @@ -CookieSessionStore in actix_session::storage - Rust

    Struct actix_session::storage::CookieSessionStore

    source ·
    #[non_exhaustive]
    pub struct CookieSessionStore;
    Expand description

    Use the session key, stored in the session cookie, as storage backend for the session state.

    +CookieSessionStore in actix_session::storage - Rust

    Struct actix_session::storage::CookieSessionStore

    source ·
    #[non_exhaustive]
    pub struct CookieSessionStore;
    Expand description

    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};
    @@ -30,20 +30,20 @@ using cookies as storage backend.

    storage backend.

    Trait Implementations§

    source§

    impl Default for CookieSessionStore

    source§

    fn default() -> CookieSessionStore

    Returns the “default value” for a type. Read more
    source§

    impl SessionStore for CookieSessionStore

    source§

    async fn load( &self, - session_key: &SessionKey + session_key: &SessionKey, ) -> Result<Option<HashMap<String, String>>, LoadError>

    Loads the session state associated to a session key.
    source§

    async fn save( &self, session_state: HashMap<String, String>, - _ttl: &Duration + _ttl: &Duration, ) -> Result<SessionKey, SaveError>

    Persist the session state for a newly created session. Read more
    source§

    async fn update( &self, _session_key: SessionKey, session_state: HashMap<String, String>, - ttl: &Duration + ttl: &Duration, ) -> Result<SessionKey, UpdateError>

    Updates the session state associated to a pre-existing session key.
    source§

    async fn update_ttl( &self, _session_key: &SessionKey, - _ttl: &Duration + _ttl: &Duration, ) -> Result<(), Error>

    Updates the TTL of the session state associated to a pre-existing session key.
    source§

    async fn delete(&self, _session_key: &SessionKey) -> Result<(), Error>

    Deletes a session from the store.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where diff --git a/actix_session/storage/struct.RedisSessionStore.html b/actix_session/storage/struct.RedisSessionStore.html index d4332b509..656374151 100644 --- a/actix_session/storage/struct.RedisSessionStore.html +++ b/actix_session/storage/struct.RedisSessionStore.html @@ -1,4 +1,4 @@ -RedisSessionStore in actix_session::storage - Rust

    Struct actix_session::storage::RedisSessionStore

    source ·
    pub struct RedisSessionStore { /* private fields */ }
    Expand description

    Use Redis as session storage backend.

    +RedisSessionStore in actix_session::storage - Rust

    Struct actix_session::storage::RedisSessionStore

    source ·
    pub struct RedisSessionStore { /* private fields */ }
    Expand description

    Use Redis as session storage backend.

    use actix_web::{web, App, HttpServer, HttpResponse, Error};
     use actix_session::{SessionMiddleware, storage::RedisSessionStore};
    @@ -37,31 +37,31 @@ connection to Redis using the rediss:// URL scheme:

    §Implementation notes

    RedisSessionStore leverages redis-rs as Redis client.

    Implementations§

    source§

    impl RedisSessionStore

    source

    pub fn builder<S: Into<String>>( - connection_string: S + connection_string: S, ) -> RedisSessionStoreBuilder

    A fluent API to configure RedisSessionStore. It takes as input the only required input to create a new instance of RedisSessionStore - a connection string for Redis.

    source

    pub async fn new<S: Into<String>>( - connection_string: S + connection_string: S, ) -> Result<RedisSessionStore, Error>

    Create a new instance of RedisSessionStore using the default configuration. It takes as input the only required input to create a new instance of RedisSessionStore - a connection string for Redis.

    Trait Implementations§

    source§

    impl Clone for RedisSessionStore

    source§

    fn clone(&self) -> RedisSessionStore

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl SessionStore for RedisSessionStore

    source§

    async fn load( &self, - session_key: &SessionKey + session_key: &SessionKey, ) -> Result<Option<HashMap<String, String>>, LoadError>

    Loads the session state associated to a session key.
    source§

    async fn save( &self, session_state: HashMap<String, String>, - ttl: &Duration + ttl: &Duration, ) -> Result<SessionKey, SaveError>

    Persist the session state for a newly created session. Read more
    source§

    async fn update( &self, session_key: SessionKey, session_state: HashMap<String, String>, - ttl: &Duration + ttl: &Duration, ) -> Result<SessionKey, UpdateError>

    Updates the session state associated to a pre-existing session key.
    source§

    async fn update_ttl( &self, session_key: &SessionKey, - ttl: &Duration + ttl: &Duration, ) -> Result<(), Error>

    Updates the TTL of the session state associated to a pre-existing session key.
    source§

    async fn delete(&self, session_key: &SessionKey) -> Result<(), Error>

    Deletes a session from the store.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where diff --git a/actix_session/storage/struct.RedisSessionStoreBuilder.html b/actix_session/storage/struct.RedisSessionStoreBuilder.html index 0c6c37932..9370923fa 100644 --- a/actix_session/storage/struct.RedisSessionStoreBuilder.html +++ b/actix_session/storage/struct.RedisSessionStoreBuilder.html @@ -1,4 +1,4 @@ -RedisSessionStoreBuilder in actix_session::storage - Rust

    Struct actix_session::storage::RedisSessionStoreBuilder

    source ·
    pub struct RedisSessionStoreBuilder { /* private fields */ }
    Expand description

    A fluent builder to construct a RedisSessionStore instance with custom configuration +RedisSessionStoreBuilder in actix_session::storage - Rust

    Struct actix_session::storage::RedisSessionStoreBuilder

    source ·
    pub struct RedisSessionStoreBuilder { /* private fields */ }
    Expand description

    A fluent builder to construct a RedisSessionStore instance with custom configuration parameters.

    Implementations§

    source§

    impl RedisSessionStoreBuilder

    source

    pub fn cache_keygen<F>(self, keygen: F) -> Self
    where F: Fn(&str) -> String + 'static + Send + Sync,

    Set a custom cache key generation strategy, expecting a session key as input.

    diff --git a/actix_session/storage/struct.SessionKey.html b/actix_session/storage/struct.SessionKey.html index 2ff252f4e..c9d29bd0b 100644 --- a/actix_session/storage/struct.SessionKey.html +++ b/actix_session/storage/struct.SessionKey.html @@ -1,4 +1,4 @@ -SessionKey in actix_session::storage - Rust

    Struct actix_session::storage::SessionKey

    source ·
    pub struct SessionKey(/* private fields */);
    Expand description

    A session key, the string stored in a client-side cookie to associate a user with its session +SessionKey in actix_session::storage - Rust

    Struct actix_session::storage::SessionKey

    source ·
    pub struct SessionKey(/* private fields */);
    Expand description

    A session key, the string stored in a client-side cookie to associate a user with its session state on the backend.

    §Validation

    Session keys are stored as cookies, therefore they cannot be arbitrary long. Session keys are diff --git a/actix_session/storage/trait.SessionStore.html b/actix_session/storage/trait.SessionStore.html index 9ac322174..170e4a813 100644 --- a/actix_session/storage/trait.SessionStore.html +++ b/actix_session/storage/trait.SessionStore.html @@ -1,54 +1,54 @@ -SessionStore in actix_session::storage - Rust

    Trait actix_session::storage::SessionStore

    source ·
    pub trait SessionStore {
    +SessionStore in actix_session::storage - Rust

    Trait actix_session::storage::SessionStore

    source ·
    pub trait SessionStore {
         // Required methods
         fn load(
             &self,
    -        session_key: &SessionKey
    +        session_key: &SessionKey,
         ) -> impl Future<Output = Result<Option<HashMap<String, String>>, LoadError>>;
         fn save(
             &self,
             session_state: HashMap<String, String>,
    -        ttl: &Duration
    +        ttl: &Duration,
         ) -> impl Future<Output = Result<SessionKey, SaveError>>;
         fn update(
             &self,
             session_key: SessionKey,
             session_state: HashMap<String, String>,
    -        ttl: &Duration
    +        ttl: &Duration,
         ) -> impl Future<Output = Result<SessionKey, UpdateError>>;
         fn update_ttl(
             &self,
             session_key: &SessionKey,
    -        ttl: &Duration
    +        ttl: &Duration,
         ) -> impl Future<Output = Result<(), Error>>;
         fn delete(
             &self,
    -        session_key: &SessionKey
    +        session_key: &SessionKey,
         ) -> impl Future<Output = Result<(), Error>>;
     }
    Expand description

    The interface to retrieve and save the current session data from/to the chosen storage backend.

    You can provide your own custom session store backend by implementing this trait.

    Required Methods§

    source

    fn load( &self, - session_key: &SessionKey + session_key: &SessionKey, ) -> impl Future<Output = Result<Option<HashMap<String, String>>, LoadError>>

    Loads the session state associated to a session key.

    source

    fn save( &self, session_state: HashMap<String, String>, - ttl: &Duration + ttl: &Duration, ) -> impl Future<Output = Result<SessionKey, SaveError>>

    Persist the session state for a newly created session.

    Returns the corresponding session key.

    source

    fn update( &self, session_key: SessionKey, session_state: HashMap<String, String>, - ttl: &Duration + ttl: &Duration, ) -> impl Future<Output = Result<SessionKey, UpdateError>>

    Updates the session state associated to a pre-existing session key.

    source

    fn update_ttl( &self, session_key: &SessionKey, - ttl: &Duration + ttl: &Duration, ) -> impl Future<Output = Result<(), Error>>

    Updates the TTL of the session state associated to a pre-existing session key.

    source

    fn delete( &self, - session_key: &SessionKey + session_key: &SessionKey, ) -> impl Future<Output = Result<(), Error>>

    Deletes a session from the store.

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/actix_session/struct.Session.html b/actix_session/struct.Session.html index 01d5c0b3a..890217ca0 100644 --- a/actix_session/struct.Session.html +++ b/actix_session/struct.Session.html @@ -1,4 +1,4 @@ -Session in actix_session - Rust

    Struct actix_session::Session

    source ·
    pub struct Session(/* private fields */);
    Expand description

    The primary interface to access and modify session state.

    +Session in actix_session - Rust

    Struct actix_session::Session

    source ·
    pub struct Session(/* private fields */);
    Expand description

    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.

    @@ -18,7 +18,7 @@ request handlers and it will be automatically extracted from the incoming reques SessionExt.

    Implementations§

    source§

    impl Session

    source

    pub fn get<T: DeserializeOwned>( &self, - key: &str + key: &str, ) -> Result<Option<T>, SessionGetError>

    Get a value from the session.

    It returns an error if it fails to deserialize as T the JSON value associated with key.

    source

    pub fn entries(&self) -> Ref<'_, HashMap<String, String>>

    Get all raw key-value data from the session.

    @@ -27,7 +27,7 @@ request handlers and it will be automatically extracted from the incoming reques
    source

    pub fn insert<T: Serialize>( &self, key: impl Into<String>, - value: T + value: T, ) -> Result<(), SessionInsertError>

    Inserts a key-value pair into the session.

    Any serializable value can be used and will be encoded as JSON in session data, hence why only a reference to the value is taken.

    @@ -36,7 +36,7 @@ only a reference to the value is taken.

    If present, the JSON encoded value is returned.

    source

    pub fn remove_as<T: DeserializeOwned>( &self, - key: &str + key: &str, ) -> Option<Result<T, String>>

    Remove value from the session and deserialize.

    Returns None if key was not present in session. Returns T if deserialization succeeds, otherwise returns un-deserialized JSON string.

    diff --git a/actix_session/struct.SessionGetError.html b/actix_session/struct.SessionGetError.html index 372d7767e..e576e486d 100644 --- a/actix_session/struct.SessionGetError.html +++ b/actix_session/struct.SessionGetError.html @@ -1,5 +1,5 @@ -SessionGetError in actix_session - Rust

    Struct actix_session::SessionGetError

    source ·
    pub struct SessionGetError(/* private fields */);
    Expand description

    Error returned by Session::get.

    -

    Trait Implementations§

    source§

    impl Debug for SessionGetError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SessionGetError

    source§

    fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for SessionGetError

    source§

    fn source(&self) -> Option<&(dyn StdError + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for SessionGetError

    source§

    fn from(original: Error) -> SessionGetError

    Converts to this type from the input type.
    source§

    impl ResponseError for SessionGetError

    source§

    fn error_response(&self) -> HttpResponse<BoxBody>

    Creates full response for error. Read more
    §

    fn status_code(&self) -> StatusCode

    Returns appropriate status code for error. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +SessionGetError in actix_session - Rust

    Struct actix_session::SessionGetError

    source ·
    pub struct SessionGetError(/* private fields */);
    Expand description

    Error returned by Session::get.

    +

    Trait Implementations§

    source§

    impl Debug for SessionGetError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SessionGetError

    source§

    fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for SessionGetError

    source§

    fn source(&self) -> Option<&(dyn StdError + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for SessionGetError

    source§

    fn from(original: Error) -> SessionGetError

    Converts to this type from the input type.
    source§

    impl ResponseError for SessionGetError

    source§

    fn error_response(&self) -> HttpResponse<BoxBody>

    Creates full response for error. Read more
    §

    fn status_code(&self) -> StatusCode

    Returns appropriate status code for error. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/actix_session/struct.SessionInsertError.html b/actix_session/struct.SessionInsertError.html index d5e4345a1..4e2fd0cb5 100644 --- a/actix_session/struct.SessionInsertError.html +++ b/actix_session/struct.SessionInsertError.html @@ -1,5 +1,5 @@ -SessionInsertError in actix_session - Rust

    Struct actix_session::SessionInsertError

    source ·
    pub struct SessionInsertError(/* private fields */);
    Expand description

    Error returned by Session::insert.

    -

    Trait Implementations§

    source§

    impl Debug for SessionInsertError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SessionInsertError

    source§

    fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for SessionInsertError

    source§

    fn source(&self) -> Option<&(dyn StdError + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for SessionInsertError

    source§

    fn from(original: Error) -> SessionInsertError

    Converts to this type from the input type.
    source§

    impl ResponseError for SessionInsertError

    source§

    fn error_response(&self) -> HttpResponse<BoxBody>

    Creates full response for error. Read more
    §

    fn status_code(&self) -> StatusCode

    Returns appropriate status code for error. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +SessionInsertError in actix_session - Rust

    Struct actix_session::SessionInsertError

    source ·
    pub struct SessionInsertError(/* private fields */);
    Expand description

    Error returned by Session::insert.

    +

    Trait Implementations§

    source§

    impl Debug for SessionInsertError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for SessionInsertError

    source§

    fn fmt(&self, _derive_more_display_formatter: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for SessionInsertError

    source§

    fn source(&self) -> Option<&(dyn StdError + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for SessionInsertError

    source§

    fn from(original: Error) -> SessionInsertError

    Converts to this type from the input type.
    source§

    impl ResponseError for SessionInsertError

    source§

    fn error_response(&self) -> HttpResponse<BoxBody>

    Creates full response for error. Read more
    §

    fn status_code(&self) -> StatusCode

    Returns appropriate status code for error. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/actix_session/struct.SessionMiddleware.html b/actix_session/struct.SessionMiddleware.html index e68ecc57d..d8231ec5c 100644 --- a/actix_session/struct.SessionMiddleware.html +++ b/actix_session/struct.SessionMiddleware.html @@ -1,4 +1,4 @@ -SessionMiddleware in actix_session - Rust

    Struct actix_session::SessionMiddleware

    source ·
    pub struct SessionMiddleware<Store: SessionStore> { /* private fields */ }
    Expand description

    A middleware for session management in Actix Web applications.

    +SessionMiddleware in actix_session - Rust

    Struct actix_session::SessionMiddleware

    source ·
    pub struct SessionMiddleware<Store: SessionStore> { /* private fields */ }
    Expand description

    A middleware for session management in Actix Web applications.

    SessionMiddleware takes care of a few jobs:

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<S, T, E> TryStream for S
    where S: Stream<Item = Result<T, E>> + ?Sized,

    §

    type Ok = T

    The type of successful values yielded by this future
    §

    type Error = E

    The type of failures yielded by this future
    §

    fn try_poll_next( self: Pin<&mut S>, - cx: &mut Context<'_> + cx: &mut Context<'_>, ) -> Poll<Option<Result<<S as TryStream>::Ok, <S as TryStream>::Error>>>

    Poll this TryStream as if it were a Stream. Read more
    §

    impl<S> TryStreamExt for S
    where S: TryStream + ?Sized,

    §

    fn err_into<E>(self) -> ErrInto<Self, E>
    where Self: Sized, @@ -189,7 +189,7 @@ resolves to true. Read more

    §

    fn try_for_each_concurrent<Fut, F>( self, limit: impl Into<Option<usize>>, - f: F + f: F, ) -> TryForEachConcurrent<Self, Fut, F>
    where F: FnMut(Self::Ok) -> Fut, Fut: Future<Output = Result<(), Self::Error>>, @@ -211,7 +211,7 @@ provided asynchronous closure. Read more

    §

    fn try_flatten_unordered( self, - limit: impl Into<Option<usize>> + limit: impl Into<Option<usize>>, ) -> TryFlattenUnordered<Self>
    where Self::Ok: TryStream + Unpin, <Self::Ok as TryStream>::Error: From<Self::Error>, @@ -233,7 +233,7 @@ extendable destination, returning a future representing the end result. Read Self::Ok: TryFuture<Error = Self::Error>, Self: Sized,

    Attempt to execute several futures from a stream concurrently. Read more
    §

    fn try_poll_next_unpin( &mut self, - cx: &mut Context<'_> + cx: &mut Context<'_>, ) -> Poll<Option<Result<Self::Ok, Self::Error>>>
    where Self: Unpin,

    A convenience method for calling [TryStream::try_poll_next] on Unpin stream types.
    §

    fn into_async_read(self) -> IntoAsyncRead<Self>
    where diff --git a/help.html b/help.html index a5f45fc3f..88cb3fc7c 100644 --- a/help.html +++ b/help.html @@ -1 +1 @@ -Help

    Rustdoc help

    Back
    \ No newline at end of file +Help

    Rustdoc help

    Back
    \ No newline at end of file diff --git a/search-index.js b/search-index.js index 8041da600..6bd527853 100644 --- a/search-index.js +++ b/search-index.js @@ -1,12 +1,12 @@ var searchIndex = new Map(JSON.parse('[\ -["actix_cors",{"t":"PPFGEPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["BadRequestHeaders","BadRequestMethod","Cors","CorsError","CorsMiddleware","HeadersNotAllowed","MethodNotAllowed","MissingOrigin","MissingRequestMethod","OriginNotAllowed","WildcardOrigin","allow_any_header","allow_any_method","allow_any_origin","allow_private_network_access","allowed_header","allowed_headers","allowed_methods","allowed_origin","allowed_origin_fn","block_on_origin_mismatch","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","default","disable_preflight","disable_vary_header","error_response","expose_any_header","expose_headers","fmt","fmt","fmt","from","from","into","into","max_age","new_transform","permissive","send_wildcard","status_code","supports_credentials","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip"],"q":[[0,"actix_cors"],[56,"actix_cors::builder"],[57,"http::header::name"],[58,"core::convert"],[59,"core::iter::traits::collect"],[60,"http::method"],[61,"http::header::value"],[62,"actix_http::requests::head"],[63,"core::ops::function"],[64,"actix_cors::error"],[65,"actix_web::response::response"],[66,"core::fmt"],[67,"core::option"],[68,"actix_http::body::message_body"],[69,"actix_web::service"],[70,"actix_web::error::error"],[71,"actix_service"],[72,"http::status"],[73,"alloc::string"],[74,"core::result"],[75,"core::any"],[76,"actix_cors::middleware"]],"i":[15,15,0,0,0,15,15,15,15,15,15,1,1,1,1,1,1,1,1,1,1,1,15,1,15,15,15,1,1,1,15,1,1,1,15,15,1,15,1,15,1,1,1,1,15,1,15,15,1,15,1,15,1,15,1,15],"f":"```````````{bb}000{{bc}b{{f{d}}}}{{be}b{{f{d}}}{{j{}{{h{c}}}}}}{{be}b{{f{l}}}{{j{}{{h{c}}}}}}{{b{A`{n}}}b}{{bc}b{{Aj{{A`{Ab}}{A`{Ad}}}{{Af{Ah}}}}}}{{bAh}b}{{{A`{c}}}{{A`{e}}}{}{}}0{{{A`{Alc}}}{{A`{Ale}}}{}{}}0{{{A`{An}}}An}{{{A`{c}}{A`{Ale}}}B`{}{}}{{}b};;{{{A`{An}}}Bb}<:{{{A`{b}}{A`{AlBd}}}Bf}{{{A`{An}}{A`{AlBd}}}Bf}0{cc{}}0{ce{}{}}0{{bc}b{{Bl{{Bj{Bh}}}}}}{{{A`{b}}e}gBn{{Cj{C`}{{Cb{{Cd{c}}}}{Cf{Ch}}}}}{}}7{bb}{{{A`{An}}}Cl}1{{{A`{c}}}e{}{}}{{{A`{c}}}Cn{}}{c{{D`{e}}}{}{}}000{{{A`{c}}}Db{}}088","D":"Dd","p":[[5,"Cors",0,56],[5,"HeaderName",57],[10,"TryInto",58],[17,"Item"],[10,"IntoIterator",59],[5,"Method",60],[1,"str"],[1,"reference"],[5,"HeaderValue",61],[5,"RequestHead",62],[17,"Output"],[1,"bool"],[10,"Fn",63],[0,"mut"],[6,"CorsError",0,64],[1,"unit"],[5,"HttpResponse",65],[5,"Formatter",66],[8,"Result",66],[1,"usize"],[6,"Option",67],[10,"Into",58],[10,"MessageBody",68],[5,"ServiceRequest",69],[17,"Response"],[5,"ServiceResponse",69],[17,"Error"],[5,"Error",70],[10,"Service",71],[5,"StatusCode",72],[5,"String",73],[6,"Result",74],[5,"TypeId",75]],"r":[[2,56],[3,64],[4,76]],"b":[[34,"impl-Debug-for-CorsError"],[35,"impl-Display-for-CorsError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABYABwAFAAAAFgAFAB8AAAAiAAIAKgAAAC0AAAAvAAkA"}],\ -["actix_identity",{"t":"FKFNNNNNNNCNCNNNMNNNNNNNNNNNNNNNPFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGFFPFPFPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Identity","IdentityExt","IdentityMiddleware","borrow","borrow","borrow_mut","borrow_mut","builder","clone","clone_into","config","default","error","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","id_key","into","into","last_visit_unix_timestamp_key","login_deadline","login_unix_timestamp_key","logout_behaviour","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","visit_deadline","vzip","vzip","GetIdentityError","LoginError","LostIdentityError","LostIdentityError","MissingIdentityError","MissingIdentityError","SessionExpiryError","SessionExpiryError","SessionGetError","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","into","into","into","into","into","source","source","status_code","status_code","to_string","to_string","to_string","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":[[0,"actix_identity"],[32,"actix_identity::config"],[67,"actix_identity::error"],[140,"actix_identity::middleware"],[141,"actix_web::request"],[142,"actix_http::payload"],[143,"actix_identity::identity_ext"],[144,"actix_identity::identity"],[145,"core::result"],[146,"alloc::string"],[147,"actix_http::extensions"],[148,"actix_http::body::message_body"],[149,"actix_web::service"],[150,"actix_web::error::error"],[151,"actix_service"],[152,"core::any"],[153,"core::fmt"],[154,"core::time"],[155,"core::option"],[156,"actix_session::session"],[157,"core::error"],[158,"http::status"]],"i":[0,0,0,9,4,9,4,4,4,4,0,4,0,9,4,9,8,9,9,4,9,9,4,4,9,4,9,4,9,4,9,4,23,0,0,23,23,3,23,3,3,23,3,23,3,23,3,23,3,3,23,3,3,3,3,3,23,3,23,3,23,3,23,3,3,23,3,0,0,0,10,0,10,0,10,10,14,29,30,31,10,14,29,30,31,10,14,14,29,29,30,30,31,31,10,10,14,14,29,30,31,10,10,10,10,10,14,29,30,31,10,14,10,14,10,14,29,30,31,10,14,29,30,31,10,14,29,30,31,10,14,29,30,31,10,14,29,30,31,10],"f":"```{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{}f}{{{b{h}}}h}{{{b{c}}{b{de}}}j{}{}}`{{}h}`{cc{}}0{{{b{l}}{b{dn}}}c{}}{{{b{A`}}}{{Af{AbAd}}}}{{{b{Ab}}}{{Af{AhAd}}}}{ce{}{}}0{{{b{Aj}}Ah}{{Af{AbAl}}}}{Abj}{{{b{h}}e}gAn{{Bj{B`}{{Bb{{Bd{c}}}}{Bf{Bh}}}}}{}}{{{b{c}}}e{}{}}{c{{Af{e}}}{}{}}000{{{b{c}}}Bl{}}066````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{fh}{{{b{Bn}}}Bn}{{{b{f}}}f}{{{b{c}}{b{de}}}j{}{}}0{{{b{Bn}}{b{dC`}}}Cb}{{{b{f}}{b{dC`}}}Cb}{cc{}}0{{f{b{Cd}}}f}{ce{}{}}01{{f{Ch{Cf}}}f}2{{fBn}f}??>>>>==122`````````<<<<<;;;;;{{{b{Al}}{b{dC`}}}Cb}0{{{b{Cj}}{b{dC`}}}Cb}0{{{b{Cl}}{b{dC`}}}Cb}0{{{b{Cn}}{b{dC`}}}Cb}0{{{b{Ad}}{b{dC`}}}Cb}09{D`Al}::::{CjAd}{DbAd}{CnAd}{ClAd}<<<<<{{{b{Al}}}{{Ch{{b{Dd}}}}}}{{{b{Ad}}}{{Ch{{b{Dd}}}}}}{{{b{Al}}}Df}{{{b{Ad}}}Df}{{{b{c}}}Ah{}}0000{c{{Af{e}}}{}{}}000000000{{{b{c}}}Bl{}}0000{ce{}{}}0000","D":"Fb","p":[[1,"reference"],[0,"mut"],[5,"IdentityMiddlewareBuilder",32],[5,"IdentityMiddleware",0,140],[1,"unit"],[5,"HttpRequest",141],[6,"Payload",142],[10,"IdentityExt",0,143],[5,"Identity",0,144],[6,"GetIdentityError",67],[6,"Result",145],[5,"String",146],[5,"Extensions",147],[5,"LoginError",67],[10,"MessageBody",148],[5,"ServiceRequest",149],[17,"Response"],[5,"ServiceResponse",149],[17,"Error"],[5,"Error",150],[10,"Service",151],[5,"TypeId",152],[6,"LogoutBehaviour",32],[5,"Formatter",153],[8,"Result",153],[1,"str"],[5,"Duration",154],[6,"Option",155],[5,"SessionExpiryError",67],[5,"LostIdentityError",67],[5,"MissingIdentityError",67],[5,"SessionInsertError",156],[5,"SessionGetError",156],[10,"Error",157],[5,"StatusCode",158]],"r":[[0,144],[1,143],[2,140]],"b":[[86,"impl-Debug-for-LoginError"],[87,"impl-Display-for-LoginError"],[88,"impl-Display-for-SessionExpiryError"],[89,"impl-Debug-for-SessionExpiryError"],[90,"impl-Debug-for-LostIdentityError"],[91,"impl-Display-for-LostIdentityError"],[92,"impl-Debug-for-MissingIdentityError"],[93,"impl-Display-for-MissingIdentityError"],[94,"impl-Display-for-GetIdentityError"],[95,"impl-Debug-for-GetIdentityError"],[102,"impl-From%3CSessionExpiryError%3E-for-GetIdentityError"],[103,"impl-From%3CSessionGetError%3E-for-GetIdentityError"],[104,"impl-From%3CMissingIdentityError%3E-for-GetIdentityError"],[105,"impl-From%3CLostIdentityError%3E-for-GetIdentityError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAFsADQAEAAMACQABAAwAAAAQAAAAFwAJACUAAwAqAAUAOQAHAEIAAQBNABMAYgAAAGcAAwBwABwA"}],\ -["actix_limitation",{"t":"FPSSSSGPFPFFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","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","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":[[0,"actix_limitation"],[82,"actix_limitation::builder"],[83,"actix_limitation::errors"],[84,"core::result"],[85,"alloc::string"],[86,"core::convert"],[87,"actix_limitation::status"],[88,"alloc::borrow"],[89,"actix_limitation::middleware"],[90,"core::fmt"],[91,"redis::types"],[92,"time::error::component_range"],[93,"actix_web::service"],[94,"core::option"],[95,"core::ops::function"],[96,"core::marker"],[97,"actix_web::error::error"],[98,"actix_service"],[99,"core::time"],[100,"core::error"],[101,"core::any"]],"i":[0,5,0,0,0,0,0,5,0,5,0,0,5,3,5,13,9,4,3,5,13,9,4,3,4,9,4,9,4,3,4,13,3,5,5,13,9,4,3,5,5,5,13,9,4,3,5,13,9,4,3,3,9,13,3,9,9,3,5,9,4,5,3,5,13,9,4,3,5,13,9,4,3,5,13,9,4,3,5,13,9,4],"f":"`````````````{{{b{c}}}{{b{e}}}{}{}}0000{{{b{dc}}}{{b{de}}}{}{}}0000{{{b{df}}}{{l{hj}}}}{cf{{A`{n}}}}{{{b{Ab}}}Ab}{{{b{h}}}h}{{{b{c}}{b{de}}}Ad{}{}}0{{{b{df}}c}{{b{df}}}{{A`{{Ah{Af}}}}}}{{{b{h}}c}{{l{Abj}}}{{A`{n}}}}{{}Aj}{{{b{f}}{b{dAl}}}An}{{{b{j}}{b{dAl}}}An}0{{{b{Aj}}{b{dAl}}}An}{{{b{Ab}}{b{dAl}}}An}{{{b{h}}{b{dAl}}}An}{cc{}}{B`j}{Bbj}2222{ce{}{}}0000{{{b{df}}c}{{b{df}}}{{Bj{{b{Bd}}}{{Bf{{Bh{n}}}}}}BlBn}}{{{b{df}}C`}{{b{df}}}}{{{b{Ab}}}C`}{{{b{Aj}}e}g{}{{Cj{Bd}{{Cb{{Cd{c}}}}{Cf{Ch}}}}}{}}{{{b{df}}Cl}{{b{df}}}}22{{{b{df}}c}{{b{df}}}{{A`{{Ah{Af}}}}}}{{{b{j}}}{{Bh{{b{Cn}}}}}}{{{b{c}}}e{}{}}0{{{b{c}}}n{}}{c{{l{e}}}{}{}}000000000{{{b{c}}}D`{}}0000;;;;;","D":"Df","p":[[1,"reference"],[0,"mut"],[5,"Builder",0,82],[5,"Limiter",0],[6,"Error",0,83],[6,"Result",84],[5,"String",85],[10,"Into",86],[5,"Status",0,87],[1,"unit"],[1,"str"],[6,"Cow",88],[5,"RateLimiter",0,89],[5,"Formatter",90],[8,"Result",90],[5,"RedisError",91],[5,"ComponentRange",92],[5,"ServiceRequest",93],[17,"Output"],[6,"Option",94],[10,"Fn",95],[10,"Send",96],[10,"Sync",96],[1,"usize"],[17,"Response"],[5,"ServiceResponse",93],[17,"Error"],[5,"Error",97],[10,"Service",98],[5,"Duration",99],[10,"Error",100],[5,"TypeId",101]],"r":[[0,82],[6,83],[10,89],[11,87]],"b":[[33,"impl-Debug-for-Error"],[34,"impl-Display-for-Error"],[39,"impl-From%3CRedisError%3E-for-Error"],[40,"impl-From%3CComponentRange%3E-for-Error"]],"c":"OjAAAAEAAAAAAAEAEAAAAB4AOgA=","e":"OzAAAAEAAC8ABgAOAAkAGgADACAABgAoAAEANgAAADsAFwA="}],\ -["actix_protobuf",{"t":"PPPPFFFGKPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNN","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","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":[[0,"actix_protobuf"],[63,"prost::message"],[64,"actix_web::response::response"],[65,"core::fmt"],[66,"actix_http::error"],[67,"prost::error"],[68,"actix_web::request"],[69,"actix_http::payload"],[70,"core::default"],[71,"core::pin"],[72,"core::task::wake"],[73,"core::task::poll"],[74,"actix_web::error::error"],[75,"core::result"],[76,"alloc::string"],[77,"core::any"]],"i":[6,6,6,6,0,0,0,0,0,6,4,3,17,6,4,3,17,6,3,4,4,6,4,4,6,6,4,3,17,6,6,6,4,4,3,17,6,17,3,17,17,17,22,4,4,6,4,3,17,6,4,3,17,6,17,4,3,17,6,4,3,17,6],"f":"``````````{{{b{c}}}{{b{e}}}{}{}}000{{{b{dc}}}{{b{de}}}{}{}}000{{}f}{{{b{{h{c}}}}}{{b{c}}}j}{{{b{d{h{c}}}}}{{b{dc}}}j}{{{b{l}}}n}{{{b{{h{c}}}}{b{dA`}}}Ab{Adj}}{{{b{{h{c}}}}{b{dA`}}}Ab{Afj}}{{{b{l}}{b{dA`}}}Ab}0{cc{}}000{Ahl}{Ajl}{{{b{Al}}{b{dAn}}}c{}}{ce{}{}}000{c{}{}}{{{b{df}}B`}{{b{df}}}}{{{Bb{c}}B`}{{Bb{c}}}{jBd}}{{{b{Al}}{b{dAn}}}{{Bb{c}}}{jBd}}{{{Bf{{b{d{Bb{c}}}}}}{b{dBh}}}{{Bj{e}}}{jBd}{}}{{{b{dBl}}c}{{C`{nBn}}}j}{{{h{c}}{b{Al}}}n{jBd}}{{{b{c}}}Cb{}}0{c{{C`{e}}}{}{}}0000000{{{Bf{{b{dc}}}}{b{dBh}}}Bj{}}{{{b{c}}}Cd{}}000;;;;","D":"Bb","p":[[1,"reference"],[0,"mut"],[5,"ProtoBufConfig",0],[5,"ProtoBuf",0],[10,"Message",63],[6,"ProtoBufPayloadError",0],[5,"HttpResponse",64],[5,"Formatter",65],[8,"Result",65],[10,"Debug",65],[10,"Display",65],[6,"PayloadError",66],[5,"DecodeError",67],[5,"HttpRequest",68],[6,"Payload",69],[1,"usize"],[5,"ProtoBufMessage",0],[10,"Default",70],[5,"Pin",71],[5,"Context",72],[6,"Poll",73],[10,"ProtoBufResponseBuilder",0],[5,"Error",74],[6,"Result",75],[5,"String",76],[5,"TypeId",77]],"r":[],"b":[[22,"impl-Debug-for-ProtoBuf%3CT%3E"],[23,"impl-Display-for-ProtoBuf%3CT%3E"],[24,"impl-Display-for-ProtoBufPayloadError"],[25,"impl-Debug-for-ProtoBufPayloadError"],[30,"impl-From%3CPayloadError%3E-for-ProtoBufPayloadError"],[31,"impl-From%3CDecodeError%3E-for-ProtoBufPayloadError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAC4ABQAFAAQACwAPAB8AAgAmAAAAKgAVAA=="}],\ -["actix_session",{"t":"PPPFKFFFGPNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNFPGPPFPPGFPGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFPGPPPFFGPPFKGNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNMNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNNNNNNNNN","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","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","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","RedisSessionStore","RedisSessionStoreBuilder","SaveError","Serialization","Serialization","SessionKey","SessionStore","UpdateError","as_ref","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","builder","cache_keygen","clone","clone_into","default","delete","delete","delete","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","into","into","into","into","into","into","into","load","load","load","new","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_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","update","update","update","update_ttl","update_ttl","update_ttl","vzip","vzip","vzip","vzip","vzip","vzip","vzip"],"q":[[0,"actix_session"],[90,"actix_session::config"],[187,"actix_session::storage"],[296,"cookie::secure::key"],[297,"actix_session::storage::interface"],[298,"actix_session::session"],[299,"actix_session::middleware"],[300,"core::clone"],[301,"alloc::string"],[302,"std::collections::hash::map"],[303,"core::cell"],[304,"actix_http::body::boxed"],[305,"actix_web::response::response"],[306,"core::fmt"],[307,"anyhow"],[308,"actix_web::request"],[309,"actix_http::payload"],[310,"core::option"],[311,"core::result"],[312,"serde::de"],[313,"actix_session::session_ext"],[314,"core::convert"],[315,"serde::ser"],[316,"actix_http::body::message_body"],[317,"actix_web::service"],[318,"actix_web::error::error"],[319,"actix_service"],[320,"core::error"],[321,"core::any"],[322,"cookie::draft"],[323,"time::duration"],[324,"actix_session::storage::session_key"],[325,"actix_session::storage::redis_rs"],[326,"core::ops::function"],[327,"core::marker"],[328,"actix_session::storage::cookie"],[329,"core::future::future"]],"i":[10,10,10,0,0,0,0,0,0,10,8,6,10,15,18,8,6,10,15,18,8,6,8,6,10,8,6,10,0,10,6,10,15,18,10,15,15,18,18,8,6,10,15,15,18,18,6,6,28,6,8,6,10,15,18,8,8,6,6,6,6,15,18,6,0,8,6,10,15,18,8,6,10,15,18,8,6,10,15,18,8,6,10,15,18,8,6,10,15,18,0,40,0,43,43,0,40,44,0,0,44,0,4,40,41,42,43,44,4,40,41,42,43,44,4,40,41,42,43,44,40,41,42,43,44,4,4,4,4,4,4,4,41,42,40,41,42,43,44,4,40,40,40,41,42,43,44,4,40,41,42,43,44,4,42,42,41,41,40,41,42,43,44,4,40,41,42,43,44,4,40,41,42,43,44,4,40,41,42,43,44,4,40,41,42,43,44,0,56,0,56,57,58,0,0,0,57,58,0,0,0,47,48,56,57,58,47,54,49,48,56,57,58,47,54,49,48,49,48,49,49,54,5,54,49,47,56,56,57,57,58,58,47,48,56,57,58,47,54,49,48,56,57,58,47,54,49,5,54,49,49,5,54,49,56,57,58,49,56,57,58,48,56,57,58,47,47,54,49,48,56,57,58,47,54,49,48,56,57,58,47,54,49,5,54,49,5,54,49,48,56,57,58,47,54,49],"f":"``````````{{{b{c}}}{{b{e}}}{}{}}0000{{{b{dc}}}{{b{de}}}{}{}}0000{{cf}{{h{c}}}j}{{{b{l}}}n}{{{b{{A`{c}}}}}{{A`{c}}}{Abj}}{{{b{l}}}l}{{{b{Ad}}}Ad}{{{b{c}}{b{de}}}n{}{}}00`{{}Ad}{{{b{l}}}{{Aj{{Ah{AfAf}}}}}}{{{b{Ad}}{b{Ad}}}Al}{{{b{An}}}{{Bb{B`}}}}{{{b{Bd}}}{{Bb{B`}}}}{{{b{Ad}}{b{dBf}}}Bh}{{{b{An}}{b{dBf}}}Bh}0{{{b{Bd}}{b{dBf}}}Bh}0{cc{}}00{BjAn}1{BjBd}2{{{b{Bl}}{b{dBn}}}c{}}{{{b{l}}{b{C`}}}{{Cd{{Cb{c}}An}}}Cf}{{{b{Ch}}}l}{{{b{l}}ce}{{Cd{nBd}}}{{Cj{Af}}}Cl}{ce{}{}}0000{{cf}{{A`{c}}}j}{{{b{{A`{c}}}}g}ijCn{{Dj{D`}{{Db{{Dd{e}}}}{Df{Dh}}}}}{}}{{{b{l}}}n}{{{b{l}}{b{C`}}}{{Cb{Af}}}}{{{b{l}}{b{C`}}}{{Cb{{Cd{cAf}}}}}Cf}2{{{b{An}}}{{Cb{{b{Dl}}}}}}{{{b{Bd}}}{{Cb{{b{Dl}}}}}}{{{b{l}}}Ad}`{{{b{c}}}e{}{}}00{{{b{c}}}Af{}}0{c{{Cd{e}}}{}{}}000000000{{{b{c}}}Dn{}}0000<<<<<````````````{{{b{c}}}{{b{e}}}{}{}}00000{{{b{dc}}}{{b{de}}}{}{}}00000{{{h{c}}}{{A`{c}}}j}{{{b{E`}}}E`}{{{b{Eb}}}Eb}{{{b{Ed}}}Ed}{{{b{Ef}}}Ef}{{{b{Eh}}}Eh}{{{b{c}}{b{de}}}n{}{}}0000{{{h{c}}Eh}{{h{c}}}j}{{{h{c}}{Cb{Af}}}{{h{c}}}j}{{{h{c}}Al}{{h{c}}}j}{{{h{c}}Af}{{h{c}}}j}0{{{h{c}}Ej}{{h{c}}}j}2{{}Eb}{{}Ed}{{{b{E`}}{b{dBf}}}Bh}{{{b{Eb}}{b{dBf}}}Bh}{{{b{Ed}}{b{dBf}}}Bh}{{{b{Ef}}{b{dBf}}}Bh}{{{b{Eh}}{b{dBf}}}Bh}{cc{}}{EbE`}1{EdE`}2222{ce{}{}}00000{{{h{c}}e}{{h{c}}}j{{Cj{E`}}}}{{EdEl}Ed}{{EdEf}Ed}{{EbEl}Eb}{{EbEf}Eb}{{{b{c}}}e{}{}}0000{c{{Cd{e}}}{}{}}00000000000{{{b{c}}}Dn{}}00000888888``````````````{{{b{En}}}{{b{C`}}}}{{{b{c}}}{{b{e}}}{}{}}000000{{{b{dc}}}{{b{de}}}{}{}}000000{F`{{Cd{FbBj}}}}{cF`{{Cj{Af}}}}{{F`c}F`{{Ff{{b{C`}}}{{Fd{Af}}}}FhFj}}{{{b{Fb}}}Fb}{{{b{c}}{b{de}}}n{}{}}{{}Fl}{{{b{j}}{b{En}}}{{`{{Fn{}{{Fd{{Cd{nBj}}}}}}}}}}{{{b{Fl}}{b{En}}}{{Cd{nBj}}}}{{{b{Fb}}{b{En}}}{{Cd{nBj}}}}{{{b{En}}{b{En}}}Al}{{{b{G`}}{b{dBf}}}Bh}0{{{b{Gb}}{b{dBf}}}Bh}0{{{b{Gd}}{b{dBf}}}Bh}0{{{b{En}}{b{dBf}}}Bh}{cc{}}000000{ce{}{}}000000{{{b{j}}{b{En}}}{{`{{Fn{}{{Fd{{Cd{{Cb{{Ah{AfAf}}}}G`}}}}}}}}}}{{{b{Fl}}{b{En}}}{{Cd{{Cb{{Ah{AfAf}}}}G`}}}}{{{b{Fb}}{b{En}}}{{Cd{{Cb{{Ah{AfAf}}}}G`}}}}{c{{Cd{FbBj}}}{{Cj{Af}}}}{{{b{j}}{Ah{AfAf}}{b{El}}}{{`{{Fn{}{{Fd{{Cd{EnGb}}}}}}}}}}{{{b{Fl}}{Ah{AfAf}}{b{El}}}{{Cd{EnGb}}}}{{{b{Fb}}{Ah{AfAf}}{b{El}}}{{Cd{EnGb}}}}{{{b{G`}}}{{Cb{{b{Dl}}}}}}{{{b{Gb}}}{{Cb{{b{Dl}}}}}}{{{b{Gd}}}{{Cb{{b{Dl}}}}}}{{{b{c}}}e{}{}}{{{b{c}}}Af{}}00{c{{Cd{e}}}{}{}}000{Af{{Cd{Enc}}}{}}1111111111{{{b{c}}}Dn{}}000000{{{b{j}}En{Ah{AfAf}}{b{El}}}{{`{{Fn{}{{Fd{{Cd{EnGd}}}}}}}}}}{{{b{Fl}}En{Ah{AfAf}}{b{El}}}{{Cd{EnGd}}}}{{{b{Fb}}En{Ah{AfAf}}{b{El}}}{{Cd{EnGd}}}}{{{b{j}}{b{En}}{b{El}}}{{`{{Fn{}{{Fd{{Cd{nBj}}}}}}}}}}{{{b{Fl}}{b{En}}{b{El}}}{{Cd{nBj}}}}{{{b{Fb}}{b{En}}{b{El}}}{{Cd{nBj}}}}{ce{}{}}000000","D":"Mj","p":[[1,"reference"],[0,"mut"],[5,"Key",296],[5,"SessionMiddlewareBuilder",90],[10,"SessionStore",187,297],[5,"Session",0,298],[1,"unit"],[5,"SessionMiddleware",0,299],[10,"Clone",300],[6,"SessionStatus",0,298],[5,"String",301],[5,"HashMap",302],[5,"Ref",303],[1,"bool"],[5,"SessionGetError",0,298],[5,"BoxBody",304],[5,"HttpResponse",305],[5,"SessionInsertError",0,298],[5,"Formatter",306],[8,"Result",306],[5,"Error",307],[5,"HttpRequest",308],[6,"Payload",309],[1,"str"],[6,"Option",310],[6,"Result",311],[10,"DeserializeOwned",312],[10,"SessionExt",0,313],[10,"Into",314],[10,"Serialize",315],[10,"MessageBody",316],[5,"ServiceRequest",317],[17,"Response"],[5,"ServiceResponse",317],[17,"Error"],[5,"Error",318],[10,"Service",319],[10,"Error",320],[5,"TypeId",321],[6,"SessionLifecycle",90],[5,"BrowserSession",90],[5,"PersistentSession",90],[6,"TtlExtensionPolicy",90],[6,"CookieContentSecurity",90],[6,"SameSite",322],[5,"Duration",323],[5,"SessionKey",187,324],[5,"RedisSessionStoreBuilder",187,325],[5,"RedisSessionStore",187,325],[17,"Output"],[10,"Fn",326],[10,"Send",327],[10,"Sync",327],[5,"CookieSessionStore",187,328],[10,"Future",329],[6,"LoadError",187,297],[6,"SaveError",187,297],[6,"UpdateError",187,297]],"r":[[3,298],[4,313],[5,298],[6,298],[7,299],[8,298],[187,328],[189,297],[193,325],[194,325],[195,297],[198,324],[199,297],[200,297]],"b":[[35,"impl-Display-for-SessionGetError"],[36,"impl-Debug-for-SessionGetError"],[37,"impl-Debug-for-SessionInsertError"],[38,"impl-Display-for-SessionInsertError"],[140,"impl-From%3CBrowserSession%3E-for-SessionLifecycle"],[142,"impl-From%3CPersistentSession%3E-for-SessionLifecycle"],[226,"impl-Debug-for-LoadError"],[227,"impl-Display-for-LoadError"],[228,"impl-Debug-for-SaveError"],[229,"impl-Display-for-SaveError"],[230,"impl-Display-for-UpdateError"],[231,"impl-Debug-for-UpdateError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAALsAFwALAAkAFwAFAB4AAAAgAAcAKwAAAC0AAAAvAAAAOQAAAD4AAQBCABgAZwALAHQACQCFAAYAjQAAAI8AAACfABwAygAOANwAAgDgAAkA+QABAP0AHgAdAQEAIAEIAA==","a":{"expires":[154],"max age":[154],"max_age":[154]}}],\ -["actix_settings",{"t":"FFKGFPPPPPPPPPGPPPGPPPPGGPGFGPKPPPPPPIGFPOOOOMONNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNOOOOONNMNNNNNNNNNOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOO","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","actix","application","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_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","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","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","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_default_template","from_template","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","source","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_string","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":[[0,"actix_settings"],[312,"actix_settings::Error"],[317,"actix_settings::settings::address"],[318,"actix_settings::settings::backlog"],[319,"actix_settings::settings::keep_alive"],[320,"actix_settings::settings::max_connection_rate"],[321,"actix_settings::settings::max_connections"],[322,"actix_settings::settings::mode"],[323,"actix_settings::settings::num_workers"],[324,"actix_settings::settings::timeout"],[325,"actix_settings::settings::tls"],[326,"actix_settings::settings"],[327,"core::clone"],[328,"core::result"],[329,"serde::de"],[330,"core::cmp"],[331,"actix_settings::error"],[332,"core::fmt"],[333,"toml::de"],[334,"std::env"],[335,"std::io::error"],[336,"core::str::error"],[337,"core::num::error"],[338,"core::hash"],[339,"actix_settings::parse"],[340,"core::convert"],[341,"std::path"],[342,"core::error"],[343,"core::option"],[344,"alloc::string"],[345,"core::any"]],"i":[0,0,0,0,0,5,6,7,8,10,11,9,6,23,0,23,23,23,0,5,7,8,10,0,0,11,0,0,0,6,0,23,23,23,9,6,11,0,0,0,23,43,14,43,14,1,13,23,4,5,6,7,8,9,10,11,12,13,14,16,23,4,5,6,7,8,9,10,11,12,13,14,16,12,13,13,4,5,6,7,8,9,10,11,12,13,14,16,4,5,6,7,8,9,10,11,12,13,14,16,4,5,6,7,8,9,10,11,12,13,14,16,13,13,12,4,5,6,7,8,9,10,11,12,13,14,16,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,11,11,11,12,12,12,13,13,13,14,14,14,16,16,16,23,23,4,5,6,7,8,9,10,11,12,13,14,16,23,23,23,23,23,23,4,5,6,7,8,9,10,11,12,13,14,16,14,14,4,5,6,7,8,9,10,11,12,13,14,16,4,13,23,4,5,6,7,8,9,10,11,12,13,14,16,13,13,13,13,13,14,14,36,4,5,6,7,8,9,10,11,14,4,12,13,23,13,4,5,6,7,8,9,10,11,12,13,14,16,23,23,4,5,6,7,8,9,10,11,12,13,14,16,23,4,5,6,7,8,9,10,11,12,13,14,16,23,4,5,6,7,8,9,10,11,12,13,14,16,23,4,5,6,7,8,9,10,11,12,13,14,16,14,44,44,44,44,44],"f":"`````````````````````````````````````````````{{b{d{c}}}b{}}`{{{d{c}}}{{d{e}}}{}{}}000000000000{{{d{fc}}}{{d{fe}}}{}{}}000000000000```{{{d{h}}}h}{{{d{j}}}j}{{{d{l}}}l}{{{d{n}}}n}{{{d{A`}}}A`}{{{d{Ab}}}Ab}{{{d{Ad}}}Ad}{{{d{Af}}}Af}{{{d{Ah}}}Ah}{{{d{Aj}}}Aj}{{{d{{Al{c}}}}}{{Al{c}}}An}{{{d{B`}}}B`}{{{d{c}}{d{fe}}}Bb{}{}}00000000000{c{{Bd{h}}}Bf}{c{{Bd{j}}}Bf}{c{{Bd{l}}}Bf}{c{{Bd{n}}}Bf}{c{{Bd{A`}}}Bf}{c{{Bd{Ab}}}Bf}{c{{Bd{Ad}}}Bf}{c{{Bd{Af}}}Bf}{c{{Bd{Ah}}}Bf}{c{{Bd{Aj}}}Bf}{c{{Bd{{Al{e}}}}}BfBh}{c{{Bd{B`}}}Bf}```{{{d{h}}{d{h}}}Bj}{{{d{j}}{d{j}}}Bj}{{{d{l}}{d{l}}}Bj}{{{d{n}}{d{n}}}Bj}{{{d{A`}}{d{A`}}}Bj}{{{d{Ab}}{d{Ab}}}Bj}{{{d{Ad}}{d{Ad}}}Bj}{{{d{Af}}{d{Af}}}Bj}{{{d{Ah}}{d{Ah}}}Bj}{{{d{Aj}}{d{Aj}}}Bj}{{{d{{Al{c}}}}{d{{Al{c}}}}}BjBl}{{{d{B`}}{d{B`}}}Bj}{{{d{c}}{d{e}}}Bj{}{}}00000000000000000000000000000000000{{{d{Bn}}{d{fC`}}}Cb}0{{{d{h}}{d{fC`}}}Cb}{{{d{j}}{d{fC`}}}Cb}{{{d{l}}{d{fC`}}}Cb}{{{d{n}}{d{fC`}}}Cb}{{{d{A`}}{d{fC`}}}Cb}{{{d{Ab}}{d{fC`}}}Cb}{{{d{Ad}}{d{fC`}}}Cb}{{{d{Af}}{d{fC`}}}Cb}{{{d{Ah}}{d{fC`}}}Cb}{{{d{Aj}}{d{fC`}}}Cb}{{{d{{Al{c}}}}{d{fC`}}}CbCd}{{{d{B`}}{d{fC`}}}Cb}{cc{}}{CfBn}{ChBn}{CjBn}{ClBn}{CnBn}555555555555{{}{{Al{c}}}D`}{{{d{Db}}}{{Bd{{Al{c}}Bn}}}D`}{{{d{h}}{d{fc}}}BbDd}{{{d{j}}{d{fc}}}BbDd}{{{d{l}}{d{fc}}}BbDd}{{{d{n}}{d{fc}}}BbDd}{{{d{A`}}{d{fc}}}BbDd}{{{d{Ab}}{d{fc}}}BbDd}{{{d{Ad}}{d{fc}}}BbDd}{{{d{Af}}{d{fc}}}BbDd}{{{d{Ah}}{d{fc}}}BbDd}{{{d{Aj}}{d{fc}}}BbDd}{{{d{{Al{c}}}}{d{fe}}}BbDfDd}{{{d{B`}}{d{fc}}}BbDd}``{ce{}{}}000000000000`````{{{d{fc}}e}{{Bd{BbBn}}}Dh{{Dj{Db}}}}0{{{d{Db}}}{{Bd{DhBn}}}}{{{d{Db}}}{{Bd{hBn}}}}{{{d{Db}}}{{Bd{jBn}}}}{{{d{Db}}}{{Bd{lBn}}}}{{{d{Db}}}{{Bd{nBn}}}}{{{d{Db}}}{{Bd{A`Bn}}}}{{{d{Db}}}{{Bd{AbBn}}}}{{{d{Db}}}{{Bd{AdBn}}}}{{{d{Db}}}{{Bd{AfBn}}}}{c{{Bd{{Al{e}}Bn}}}{{Dj{Dl}}}D`}```{{{d{Bn}}}{{E`{{d{Dn}}}}}}`{{{d{c}}}e{}{}}00000000000{{{d{c}}}Eb{}}{c{{Bd{e}}}{}{}}0000000000000000000000000{{{d{c}}}Ed{}}000000000000{ce{}{}}000000000000{c{{Bd{BbBn}}}{{Dj{Dl}}}}`````","D":"Ld","p":[[10,"ApplySettings",0],[1,"reference"],[0,"mut"],[5,"Address",0,317],[6,"Backlog",0,318],[6,"KeepAlive",0,319],[6,"MaxConnectionRate",0,320],[6,"MaxConnections",0,321],[6,"Mode",0,322],[6,"NumWorkers",0,323],[6,"Timeout",0,324],[5,"Tls",0,325],[5,"ActixSettings",0,326],[5,"BasicSettings",0],[10,"Clone",327],[5,"NoSettings",0],[1,"unit"],[6,"Result",328],[10,"Deserializer",329],[10,"Deserialize",329],[1,"bool"],[10,"PartialEq",330],[6,"Error",0,331],[5,"Formatter",332],[8,"Result",332],[10,"Debug",332],[5,"Error",333],[6,"VarError",334],[5,"Error",335],[5,"ParseBoolError",336],[5,"ParseIntError",337],[10,"DeserializeOwned",329],[1,"str"],[10,"Hasher",338],[10,"Hash",338],[10,"Parse",0,339],[10,"AsRef",340],[5,"Path",341],[10,"Error",342],[6,"Option",343],[5,"String",344],[5,"TypeId",345],[8,"Settings",0],[15,"InvalidValue",312]],"r":[[0,326],[1,317],[3,318],[14,331],[18,319],[23,320],[24,321],[26,322],[28,323],[30,339],[38,324],[39,325]],"b":[[163,"impl-Display-for-Error"],[164,"impl-Debug-for-Error"],[178,"impl-From%3CError%3E-for-Error"],[179,"impl-From%3CVarError%3E-for-Error"],[180,"impl-From%3CError%3E-for-Error"],[181,"impl-From%3CParseBoolError%3E-for-Error"],[182,"impl-From%3CParseIntError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAANsACQAwABkATQAjAHQAPQCzAAQAxgALAOkABwD1AAAA9wBAADkBBAA=","a":{"https":[39],"ssl":[39]}}],\ -["actix_web_httpauth",{"t":"CCCKFRCCNNNNNNNNNMNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCFPFFPPPGKPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKFCCNNNNNNNNNNNNNNMNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNFFGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNN","n":["extractors","headers","middleware","AuthExtractorConfig","AuthenticationError","Inner","basic","bearer","borrow","borrow_mut","challenge_mut","error_response","fmt","fmt","from","from","into","into_inner","new","status_code","status_code_mut","to_string","try_from","try_into","type_id","vzip","with_error","with_error_description","with_error_uri","BasicAuth","Config","as_ref","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","default","fmt","fmt","from","from","from","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","fmt","fmt","fmt","fmt","from","from","from","from_request","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","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","hash","into","into","into","into","into_scheme","name","new","new","parse","parse","parse","parse","partial_cmp","partial_cmp","partial_cmp","password","source","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","token","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into_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","fmt","from","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","fmt","fmt","from","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","error","error_description","error_uri","finish","fmt","fmt","fmt","from","from","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":[[0,"actix_web_httpauth"],[3,"actix_web_httpauth::extractors"],[29,"actix_web_httpauth::extractors::basic"],[63,"actix_web_httpauth::extractors::bearer"],[119,"actix_web_httpauth::headers"],[121,"actix_web_httpauth::headers::authorization"],[218,"actix_web_httpauth::headers::www_authenticate"],[244,"actix_web_httpauth::headers::www_authenticate::basic"],[267,"actix_web_httpauth::headers::www_authenticate::bearer"],[310,"actix_web_httpauth::middleware"],[327,"actix_web_httpauth::extractors::errors"],[328,"actix_web_httpauth::headers::www_authenticate::challenge"],[329,"actix_web::response::response"],[330,"core::fmt"],[331,"actix_web_httpauth::extractors::config"],[332,"http::status"],[333,"alloc::string"],[334,"core::result"],[335,"core::any"],[336,"actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge"],[337,"actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors"],[338,"alloc::borrow"],[339,"core::convert"],[340,"actix_web_httpauth::headers::www_authenticate::challenge::basic"],[341,"actix_web_httpauth::headers::authorization::scheme::basic"],[342,"actix_web::request"],[343,"actix_http::payload"],[344,"core::option"],[345,"core::cmp"],[346,"core::hash"],[347,"actix_web_httpauth::headers::authorization::header"],[348,"actix_web_httpauth::headers::authorization::scheme"],[349,"core::clone"],[350,"actix_web_httpauth::headers::authorization::scheme::bearer"],[351,"core::default"],[352,"actix_web_httpauth::headers::authorization::errors"],[353,"core::str::error"],[354,"base64::decode"],[355,"http::header::value"],[356,"http::header::name"],[357,"actix_http::error"],[358,"actix_http::http_message"],[359,"core::error"],[360,"actix_web_httpauth::headers::www_authenticate::header"],[361,"bytes::bytes"],[362,"actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder"],[363,"actix_web::service"],[364,"actix_web::error::error"],[365,"core::future::future"],[366,"core::ops::function"],[367,"actix_web::extract"],[368,"actix_http::body::message_body"],[369,"actix_service"]],"i":[0,0,0,0,0,9,0,0,3,3,3,3,3,3,3,3,3,9,3,3,3,3,3,3,3,3,3,3,3,0,0,20,20,22,20,22,20,22,20,22,20,20,22,20,22,22,22,20,22,20,22,20,20,22,20,22,20,22,20,22,22,20,22,0,0,0,16,16,16,28,28,29,16,28,29,16,28,29,16,28,29,16,16,28,16,28,29,16,16,28,29,16,29,16,28,29,16,28,16,28,28,16,28,29,16,16,29,28,29,16,28,29,16,28,29,16,28,29,16,0,0,0,40,0,0,40,40,40,0,0,40,40,33,33,40,33,24,36,40,33,24,36,33,24,36,33,24,36,33,24,36,33,33,24,36,40,40,33,33,24,24,36,36,40,40,40,40,33,33,24,36,33,40,33,24,36,33,33,24,36,34,33,24,36,33,24,36,24,40,33,24,36,40,33,24,36,36,40,33,24,36,40,33,24,36,33,33,24,36,40,33,24,36,24,40,33,24,36,0,0,0,0,52,52,52,52,52,52,52,52,52,52,52,52,52,52,4,52,52,52,52,52,52,52,0,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,0,0,0,16,16,16,55,15,55,15,15,15,15,15,55,15,15,55,55,55,55,55,15,15,55,15,15,55,15,15,55,55,15,15,55,15,55,15,15,55,15,55,15,0,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56],"f":"````````{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{d{f{c}}}}}{{b{dc}}}h}{{{b{{f{c}}}}}jh}{{{b{{f{c}}}}{b{dl}}}n{A`h}}{{{b{{f{c}}}}{b{dl}}}nh}{cfAb}{cc{}}{ce{}{}}{{{Ab{}{{Ad{c}}}}}ch}{c{{f{c}}}h}{{{b{{f{c}}}}}Afh}{{{b{d{f{c}}}}}{{b{dAf}}}h}{{{b{c}}}Ah{}}{c{{Aj{e}}}{}{}}0{{{b{c}}}Al{}}7{{{f{An}}B`}{{f{An}}}}{{{f{An}}c}{{f{An}}}{{Bf{{Bd{Bb}}}}}}0``{{{b{Bh}}}{{b{Bj}}}}{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{Bh}}}Bh}{{{b{Bl}}}Bl}{{{b{c}}{b{de}}}Bn{}{}}0{{}Bh}{{{b{Bh}}{b{dl}}}n}{{{b{Bl}}{b{dl}}}n}{cc{}}0{C`Bl}{{{b{Cb}}{b{dCd}}}c{}}{ce{}{}}0{Bhc{}}{{{b{Bl}}}{{Cf{{b{Bb}}}}}}{{Bhc}Bh{{Bf{{Bd{Bb}}}}}}{{{b{c}}}e{}{}}0{c{{Aj{e}}}{}{}}000{{{b{c}}}Al{}}0{{{b{Bl}}}{{b{Bb}}}}77``````{{{b{Ch}}}{{b{An}}}}{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{Ch}}}Ch}{{{b{Cj}}}Cj}{{{b{B`}}}B`}{{{b{c}}{b{de}}}Bn{}{}}00{{{b{B`}}{b{B`}}}Cl}{{}Ch}{{{b{B`}}{b{B`}}}Cn}{{{b{Ch}}{b{dl}}}n}{{{b{Cj}}{b{dl}}}n}{{{b{B`}}{b{dl}}}n}0{cc{}}00{{{b{Cb}}{b{dCd}}}c{}}{{{b{B`}}{b{dc}}}BnD`}{ce{}{}}00{Chc{}}{{{b{B`}}{b{B`}}}{{Cf{Cl}}}}{{Chc}Ch{{Bf{{Bd{Bb}}}}}}0{{{b{B`}}}Af}{{{b{c}}}e{}{}}00{{{b{c}}}Ah{}}{{{b{Cj}}}{{b{Bb}}}}{c{{Aj{e}}}{}{}}00000{{{b{c}}}Al{}}00999`````````````{{{b{d{Db{c}}}}}{{b{dc}}}Dd}{{{b{{Db{c}}}}}{{b{c}}}Dd}{{{b{c}}}{{b{e}}}{}{}}000{{{b{dc}}}{{b{de}}}{}{}}000{{{b{{Db{c}}}}}{{Db{c}}}{DfDd}}{{{b{C`}}}C`}{{{b{Dh}}}Dh}{{{b{c}}{b{de}}}Bn{}{}}00{{{b{{Db{c}}}}{b{{Db{c}}}}}Cl{DjDd}}{{{b{C`}}{b{C`}}}Cl}{{{b{Dh}}{b{Dh}}}Cl}{{}{{Db{c}}}{DlDd}}{{{b{{Db{c}}}}{b{{Db{c}}}}}Cn{DnDd}}{{{b{C`}}{b{C`}}}Cn}{{{b{Dh}}{b{Dh}}}Cn}{{{b{E`}}{b{dl}}}n}0{{{b{{Db{c}}}}{b{dl}}}n{A`Dd}}{{{b{{Db{c}}}}{b{dl}}}nDd}{{{b{C`}}{b{dl}}}n}0{{{b{Dh}}{b{dl}}}n}0{EbE`}{cc{}}{EdE`}{EfE`}2{c{{Db{c}}}Dd}33{{{b{{Db{c}}}}{b{de}}}Bn{EhDd}D`}{ce{}{}}000{{{Db{c}}}cDd}{{}Ej}{{c{Cf{e}}}C`{{Bf{{Bd{Bb}}}}}{{Bf{{Bd{Bb}}}}}}{cDh{{Bf{{Bd{Bb}}}}}}{{{b{El}}}{{Aj{DdE`}}}}{{{b{c}}}{{Aj{{Db{e}}En}}}F`Dd}{{{b{El}}}{{Aj{C`E`}}}}{{{b{El}}}{{Aj{DhE`}}}}{{{b{{Db{c}}}}{b{{Db{c}}}}}{{Cf{Cl}}}{FbDd}}{{{b{C`}}{b{C`}}}{{Cf{Cl}}}}{{{b{Dh}}{b{Dh}}}{{Cf{Cl}}}}{{{b{C`}}}{{Cf{{b{Bb}}}}}}{{{b{E`}}}{{Cf{{b{Fd}}}}}}{{{b{c}}}e{}{}}00{{{b{c}}}Ah{}}000{{{b{Dh}}}{{b{Bb}}}}{c{{Aj{e}}}{}{}}0000000{c{{Aj{{Ff{EjEl}}}}}{}}{{{Db{c}}}{{Aj{Ele}}}Dd{}}{C`{{Aj{Elc}}}{}}{Dh{{Aj{Elc}}}{}}{{{b{c}}}Al{}}000{{{b{C`}}}{{b{Bb}}}}{ce{}{}}000````{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{{Fh{c}}}}}{{Fh{c}}}{Dfh}}{{{b{c}}{b{de}}}Bn{}{}}{{{b{{Fh{c}}}}{b{{Fh{c}}}}}Cl{Djh}}{{}{{Fh{c}}}{Dlh}}{{{b{{Fh{c}}}}{b{{Fh{c}}}}}Cn{Dnh}}{{{b{{Fh{c}}}}{b{dl}}}n{A`h}}{cc{}}{{{b{{Fh{c}}}}{b{de}}}Bn{Ehh}D`}:{{}Ej}{{{b{c}}}{{Aj{{Fh{e}}En}}}F`h}{{{b{{Fh{c}}}}{b{{Fh{c}}}}}{{Cf{Cl}}}{Fbh}}{{{b{h}}}Fj}{{{b{c}}}e{}{}}{c{{Aj{e}}}{}{}}0{c{{Aj{{Ff{EjEl}}}}}{}}{{{Fh{c}}}{{Aj{Ele}}}h{}}{{{b{c}}}Al{}}{ce{}{}}`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{Bj}}}Bj}{{{b{c}}{b{de}}}Bn{}{}}{{{b{Bj}}{b{Bj}}}Cl}{{}Bj}{{{b{Bj}}{b{Bj}}}Cn}{{{b{Bj}}{b{dl}}}{{Aj{BnFl}}}}{{{b{Bj}}{b{dl}}}n}{cc{}}{{{b{Bj}}{b{dc}}}BnD`};5{{{b{Bj}}{b{Bj}}}{{Cf{Cl}}}}{{{b{c}}}e{}{}}{{{b{c}}}Ah{}}{c{{Aj{e}}}{}{}}0{Bj{{Aj{Elc}}}{}}{{{b{c}}}Al{}}{ce{}{}}{cBj{{Bf{{Bd{Bb}}}}}}``````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{}Fn}{{{b{An}}}An}{{{b{c}}{b{de}}}Bn{}{}}{{{b{An}}{b{An}}}Cl}3{{}An}{{{b{An}}{b{An}}}Cn}{{FnB`}Fn}{{Fnc}Fn{{Bf{{Bd{Bb}}}}}}0{FnAn}{{{b{Fn}}{b{dl}}}n}{{{b{An}}{b{dl}}}n}{{{b{An}}{b{dl}}}{{Aj{BnFl}}}}{cc{}}0{{{b{An}}{b{dc}}}BnD`}{ce{}{}}0{{{b{An}}{b{An}}}{{Cf{Cl}}}}88{{{b{c}}}e{}{}}{{{b{c}}}Ah{}}{c{{Aj{e}}}{}{}}000{An{{Aj{Elc}}}{}}{{{b{c}}}Al{}}066`{e{{G`{Ble}}}{{Gh{}{{Gb{{Aj{Gd{Ff{GfGd}}}}}}}}}{{Gj{GdBl}{{Gb{c}}}}}}{e{{G`{Cje}}}{{Gh{}{{Gb{{Aj{Gd{Ff{GfGd}}}}}}}}}{{Gj{GdCj}{{Gb{c}}}}}}{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{{G`{ce}}}}}{{G`{ce}}}{GlDf}Df}{{{b{c}}{b{de}}}Bn{}{}}{{{b{{G`{ce}}}}{b{dl}}}n{GlA`}A`}?={{{b{{G`{cg}}}}k}mGl{{Gh{}{{Gb{{Aj{GdFf}}}}}}}{{Gj{Gdc}{{Gb{e}}}}}Gn{{Hf{Gd}{{H`{{Hb{i}}}}{Hd{Gf}}}}}{}}<::8>{g{{G`{cg}}}Gl{{Gh{}{{Gb{{Aj{Gd{Ff{GfGd}}}}}}}}}{{Gj{Gdc}{{Gb{e}}}}}}","D":"Md","p":[[1,"reference"],[0,"mut"],[5,"AuthenticationError",3,327],[10,"Challenge",218,328],[5,"HttpResponse",329],[5,"Formatter",330],[8,"Result",330],[10,"Debug",330],[10,"AuthExtractorConfig",3,331],[17,"Inner"],[5,"StatusCode",332],[5,"String",333],[6,"Result",334],[5,"TypeId",335],[5,"Bearer",267,336],[6,"Error",63,337],[1,"str"],[6,"Cow",338],[10,"Into",339],[5,"Config",29],[5,"Basic",244,340],[5,"BasicAuth",29],[1,"unit"],[5,"Basic",121,341],[5,"HttpRequest",342],[6,"Payload",343],[6,"Option",344],[5,"Config",63],[5,"BearerAuth",63],[6,"Ordering",345],[1,"bool"],[10,"Hasher",346],[5,"Authorization",121,347],[10,"Scheme",121,348],[10,"Clone",349],[5,"Bearer",121,350],[10,"Ord",345],[10,"Default",351],[10,"PartialEq",345],[6,"ParseError",121,352],[5,"Utf8Error",353],[6,"DecodeError",354],[5,"ToStrError",355],[10,"Hash",346],[5,"HeaderName",356],[5,"HeaderValue",355],[6,"ParseError",357],[10,"HttpMessage",358],[10,"PartialOrd",345],[10,"Error",359],[1,"tuple"],[5,"WwwAuthenticate",218,360],[5,"Bytes",361],[5,"Error",330],[5,"BearerBuilder",267,362],[5,"HttpAuthentication",310],[17,"Output"],[5,"ServiceRequest",363],[5,"Error",364],[10,"Future",365],[10,"Fn",366],[10,"FromRequest",367],[10,"MessageBody",368],[17,"Response"],[5,"ServiceResponse",363],[17,"Error"],[10,"Service",369]],"r":[[3,331],[4,327],[65,337],[121,347],[123,341],[124,350],[128,352],[129,348],[218,328],[219,360],[220,328],[221,328],[244,340],[267,336],[268,362],[269,337]],"b":[[12,"impl-Debug-for-AuthenticationError%3CC%3E"],[13,"impl-Display-for-AuthenticationError%3CC%3E"],[87,"impl-Debug-for-Error"],[88,"impl-Display-for-Error"],[155,"impl-Debug-for-ParseError"],[156,"impl-Display-for-ParseError"],[157,"impl-Debug-for-Authorization%3CS%3E"],[158,"impl-Display-for-Authorization%3CS%3E"],[159,"impl-Debug-for-Basic"],[160,"impl-Display-for-Basic"],[161,"impl-Debug-for-Bearer"],[162,"impl-Display-for-Bearer"],[163,"impl-From%3CUtf8Error%3E-for-ParseError"],[165,"impl-From%3CDecodeError%3E-for-ParseError"],[166,"impl-From%3CToStrError%3E-for-ParseError"],[252,"impl-Display-for-Basic"],[253,"impl-Debug-for-Basic"],[289,"impl-Debug-for-Bearer"],[290,"impl-Display-for-Bearer"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAN0AJgAJAAEADAADABQAAAAWAAQAIAALAC4AAQAyAAAANQAHAD4AAQBGABMAXQABAGIAAQBnAAMAbAALAIUAHwCmAAEAqQAAAKwAAACyAAAAtgAFAL0ABwDGAA8A1wADAN8ABwDoAAAA6gACAO4ABgD2AAgAAAEAAAMBBwASAQMAFwEFACEBAgAmAQAAKQEAACwBCgA6AQQAQQEFAA=="}],\ -["actix_ws",{"t":"PPPPPPGFFPPPPPPPPPPPPPGPPGFPPPPPPPGPFPFPPPNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Abnormal","Again","Away","BadOpCode","Binary","Close","CloseCode","CloseReason","Closed","Continuation","ContinuationFragment","ContinuationNotStarted","ContinuationStarted","Continue","Error","Extension","FirstBinary","FirstText","Invalid","InvalidLength","InvalidOpcode","Io","Item","Last","MaskedFrame","Message","MessageStream","Nop","Normal","Overflow","Ping","Policy","Pong","Protocol","ProtocolError","Restart","Session","Size","StreamingBody","Text","UnmaskedFrame","Unsupported","binary","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","clone","clone","clone","clone_into","clone_into","clone_into","close","code","continuation","description","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","handle","into","into","into","into","into","into","into","into","into","ping","poll_next","poll_next","pong","recv","source","text","to_owned","to_owned","to_owned","to_string","to_string","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_poll_next","try_poll_next","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"],"q":[[0,"actix_ws"],[159,"actix_ws::session"],[160,"core::result"],[161,"bytes::bytes"],[162,"core::convert"],[163,"actix_http::ws::proto"],[164,"core::option"],[165,"actix_http::ws::codec"],[166,"core::fmt"],[167,"actix_http::ws"],[168,"alloc::string"],[169,"std::io::error"],[170,"actix_web::request"],[171,"actix_web::types::payload"],[172,"actix_web::response::response"],[173,"actix_ws::fut"],[174,"actix_web::error::error"],[175,"core::pin"],[176,"core::task::wake"],[177,"core::task::poll"],[178,"core::error"],[179,"bytestring"],[180,"core::any"]],"i":[9,9,9,18,13,13,0,0,0,13,18,18,18,12,9,9,12,12,9,18,18,18,0,12,18,0,0,13,9,18,13,9,13,9,0,9,0,9,0,13,18,9,2,32,29,2,5,13,12,9,10,18,32,29,2,5,13,12,9,10,18,2,9,10,2,9,10,2,10,2,10,13,12,9,10,5,5,13,12,9,10,18,18,32,29,2,5,13,12,9,9,10,10,10,18,18,18,18,18,0,32,29,2,5,13,12,9,10,18,2,32,29,2,29,18,2,2,9,10,5,18,32,29,2,5,13,12,9,10,18,32,29,2,5,13,12,9,10,18,32,29,32,29,2,5,13,12,9,10,18,32,29,2,5,13,12,9,10,18],"f":"``````````````````````````````````````````{{{f{bd}}c}{{l{hj}}}{{A`{n}}}}{{{f{c}}}{{f{e}}}{}{}}00000000{{{f{bc}}}{{f{be}}}{}{}}00000000{{{f{d}}}d}{{{f{Ab}}}Ab}{{{f{Ad}}}Ad}{{{f{c}}{f{be}}}h{}{}}00{{d{Af{Ad}}}{{l{hj}}}}`{{{f{bd}}Ah}{{l{hj}}}}`{{{f{Aj}}{f{Aj}}}Al}{{{f{Ah}}{f{Ah}}}Al}{{{f{Ab}}{f{Ab}}}Al}{{{f{Ad}}{f{Ad}}}Al}{{{f{j}}{f{bAn}}}B`}0{{{f{Aj}}{f{bAn}}}{{l{hBb}}}}{{{f{Ah}}{f{bAn}}}{{l{hBb}}}}{{{f{Ab}}{f{bAn}}}{{l{hBb}}}}{{{f{Ad}}{f{bAn}}}{{l{hBb}}}}{{{f{Bd}}{f{bAn}}}{{l{hBb}}}}0{cc{}}000000{BfAb}{{{Bh{Abc}}}Ad{{A`{Bj}}}}{AbAd}3{BlBd}{BnBd}{C`Bd}{CbBd}7{{{f{Cd}}Cf}{{l{{Bh{ChdCj}}Cl}}}}{ce{}{}}00000000{{{f{bd}}{f{{Cn{Bn}}}}}{{l{hj}}}}{{{Db{{f{bD`}}}}{f{bDd}}}{{Df{{Af{c}}}}}{}}{{{Db{{f{bCj}}}}{f{bDd}}}{{Df{{Af{c}}}}}{}}2{{{f{bCj}}}{{Af{{l{AjBd}}}}}}{{{f{Bd}}}{{Af{{f{Dh}}}}}}{{{f{bd}}c}{{l{hj}}}{{A`{Dj}}}}{{{f{c}}}e{}{}}00{{{f{c}}}Bj{}}0{c{{l{e}}}{}{}}00000000000000000{{{Db{{f{bc}}}}{f{bDd}}}{{Df{{Af{l}}}}}{}}0{{{f{c}}}Dl{}}00000000;;;;;;;;;","D":"Hf","p":[[0,"mut"],[5,"Session",0,159],[1,"reference"],[1,"unit"],[5,"Closed",0,159],[6,"Result",160],[5,"Bytes",161],[10,"Into",162],[6,"CloseCode",0,163],[5,"CloseReason",0,163],[6,"Option",164],[6,"Item",0,165],[6,"Message",0,165],[1,"bool"],[5,"Formatter",166],[8,"Result",166],[5,"Error",166],[6,"ProtocolError",0,167],[1,"u16"],[1,"tuple"],[5,"String",168],[5,"Error",169],[1,"u8"],[6,"OpCode",163],[1,"usize"],[5,"HttpRequest",170],[5,"Payload",171],[5,"HttpResponse",172],[5,"MessageStream",0,173],[5,"Error",174],[1,"slice"],[5,"StreamingBody",0,173],[5,"Pin",175],[5,"Context",176],[6,"Poll",177],[10,"Error",178],[5,"ByteString",179],[5,"TypeId",180]],"r":[[6,163],[7,163],[8,159],[22,165],[25,165],[26,173],[34,167],[36,159],[38,173]],"b":[[75,"impl-Debug-for-Closed"],[76,"impl-Display-for-Closed"],[81,"impl-Debug-for-ProtocolError"],[82,"impl-Display-for-ProtocolError"],[91,"impl-From%3C(CloseCode,+T)%3E-for-CloseReason"],[92,"impl-From%3CCloseCode%3E-for-CloseReason"],[94,"impl-From%3CError%3E-for-ProtocolError"],[95,"impl-From%3Cu8%3E-for-ProtocolError"],[96,"impl-From%3COpCode%3E-for-ProtocolError"],[97,"impl-From%3Cusize%3E-for-ProtocolError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAFwACgAOAAAAEQABABgAAAAsABcASAALAFsAAgBfAAMAbwABAHMAAAB1ACoA"}]\ +["actix_cors",{"t":"PPFGEPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["BadRequestHeaders","BadRequestMethod","Cors","CorsError","CorsMiddleware","HeadersNotAllowed","MethodNotAllowed","MissingOrigin","MissingRequestMethod","OriginNotAllowed","WildcardOrigin","allow_any_header","allow_any_method","allow_any_origin","allow_private_network_access","allowed_header","allowed_headers","allowed_methods","allowed_origin","allowed_origin_fn","block_on_origin_mismatch","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","default","disable_preflight","disable_vary_header","error_response","expose_any_header","expose_headers","fmt","fmt","fmt","from","from","into","into","max_age","new_transform","permissive","send_wildcard","status_code","supports_credentials","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip"],"q":[[0,"actix_cors"],[56,"actix_cors::builder"],[57,"http::header::name"],[58,"core::convert"],[59,"core::iter::traits::collect"],[60,"http::method"],[61,"http::header::value"],[62,"actix_http::requests::head"],[63,"core::ops::function"],[64,"actix_cors::error"],[65,"actix_web::response::response"],[66,"core::fmt"],[67,"core::option"],[68,"actix_http::body::message_body"],[69,"actix_web::service"],[70,"actix_web::error::error"],[71,"actix_service"],[72,"http::status"],[73,"alloc::string"],[74,"core::result"],[75,"core::any"],[76,"actix_cors::middleware"]],"i":[15,15,0,0,0,15,15,15,15,15,15,1,1,1,1,1,1,1,1,1,1,1,15,1,15,15,15,1,1,1,15,1,1,1,15,15,1,15,1,15,1,1,1,1,15,1,15,15,1,15,1,15,1,15,1,15],"f":"```````````{bb}000{{bc}b{{f{d}}}}{{be}b{{f{d}}}{{j{}{{h{c}}}}}}{{be}b{{f{l}}}{{j{}{{h{c}}}}}}{{b{A`{n}}}b}{{bc}b{{Aj{{A`{Ab}}{A`{Ad}}}{{Af{Ah}}}}}}{{bAh}b}{{{A`{c}}}{{A`{e}}}{}{}}0{{{A`{Alc}}}{{A`{Ale}}}{}{}}0{{{A`{An}}}An}{{{A`{c}}{A`{Ale}}}B`{}{}}{{}b};;{{{A`{An}}}Bb}<:{{{A`{b}}{A`{AlBd}}}Bf}{{{A`{An}}{A`{AlBd}}}Bf}0{cc{}}0{ce{}{}}0{{bc}b{{Bl{{Bj{Bh}}}}}}{{{A`{b}}e}gBn{{Cj{C`}{{Cb{{Cd{c}}}}{Cf{Ch}}}}}{}}7{bb}{{{A`{An}}}Cl}1{{{A`{c}}}e{}{}}{{{A`{c}}}Cn{}}{c{{D`{e}}}{}{}}000{{{A`{c}}}Db{}}088","D":"Dd","p":[[5,"Cors",0,56],[5,"HeaderName",57],[10,"TryInto",58],[17,"Item"],[10,"IntoIterator",59],[5,"Method",60],[1,"str"],[1,"reference"],[5,"HeaderValue",61],[5,"RequestHead",62],[17,"Output"],[1,"bool"],[10,"Fn",63],[0,"mut"],[6,"CorsError",0,64],[1,"unit"],[5,"HttpResponse",65],[5,"Formatter",66],[8,"Result",66],[1,"usize"],[6,"Option",67],[10,"Into",58],[10,"MessageBody",68],[5,"ServiceRequest",69],[17,"Response"],[5,"ServiceResponse",69],[17,"Error"],[5,"Error",70],[10,"Service",71],[5,"StatusCode",72],[5,"String",73],[6,"Result",74],[5,"TypeId",75]],"r":[[2,56],[3,64],[4,76]],"b":[[34,"impl-Display-for-CorsError"],[35,"impl-Debug-for-CorsError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABYABwAFAAAAFgAFAB8AAAAiAAIAKgAAAC0AAAAvAAkA"}],\ +["actix_identity",{"t":"FKFNNNNNNNCNCNNNMNNNNNNNNNNNNNNNPFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGFFPFPFPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Identity","IdentityExt","IdentityMiddleware","borrow","borrow","borrow_mut","borrow_mut","builder","clone","clone_into","config","default","error","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","id_key","into","into","last_visit_unix_timestamp_key","login_deadline","login_unix_timestamp_key","logout_behaviour","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","visit_deadline","vzip","vzip","GetIdentityError","LoginError","LostIdentityError","LostIdentityError","MissingIdentityError","MissingIdentityError","SessionExpiryError","SessionExpiryError","SessionGetError","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","into","into","into","into","into","source","source","status_code","status_code","to_string","to_string","to_string","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":[[0,"actix_identity"],[32,"actix_identity::config"],[67,"actix_identity::error"],[140,"actix_identity::middleware"],[141,"actix_web::request"],[142,"actix_http::payload"],[143,"actix_identity::identity_ext"],[144,"actix_identity::identity"],[145,"core::result"],[146,"alloc::string"],[147,"actix_http::extensions"],[148,"actix_http::body::message_body"],[149,"actix_web::service"],[150,"actix_web::error::error"],[151,"actix_service"],[152,"core::any"],[153,"core::fmt"],[154,"core::time"],[155,"core::option"],[156,"actix_session::session"],[157,"core::error"],[158,"http::status"]],"i":[0,0,0,9,4,9,4,4,4,4,0,4,0,9,4,9,8,9,9,4,9,9,4,4,9,4,9,4,9,4,9,4,23,0,0,23,23,3,23,3,3,23,3,23,3,23,3,23,3,3,23,3,3,3,3,3,23,3,23,3,23,3,23,3,3,23,3,0,0,0,10,0,10,0,10,10,14,29,30,31,10,14,29,30,31,10,14,14,29,29,30,30,31,31,10,10,14,14,29,30,31,10,10,10,10,10,14,29,30,31,10,14,10,14,10,14,29,30,31,10,14,29,30,31,10,14,29,30,31,10,14,29,30,31,10,14,29,30,31,10],"f":"```{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{}f}{{{b{h}}}h}{{{b{c}}{b{de}}}j{}{}}`{{}h}`{cc{}}0{{{b{l}}{b{dn}}}c{}}{{{b{A`}}}{{Af{AbAd}}}}{{{b{Ab}}}{{Af{AhAd}}}}{ce{}{}}0{{{b{Aj}}Ah}{{Af{AbAl}}}}{Abj}{{{b{h}}e}gAn{{Bj{B`}{{Bb{{Bd{c}}}}{Bf{Bh}}}}}{}}{{{b{c}}}e{}{}}{c{{Af{e}}}{}{}}000{{{b{c}}}Bl{}}066````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{fh}{{{b{Bn}}}Bn}{{{b{f}}}f}{{{b{c}}{b{de}}}j{}{}}0{{{b{Bn}}{b{dC`}}}Cb}{{{b{f}}{b{dC`}}}Cb}{cc{}}0{{f{b{Cd}}}f}{ce{}{}}01{{f{Ch{Cf}}}f}2{{fBn}f}??>>>>==122`````````<<<<<;;;;;{{{b{Al}}{b{dC`}}}Cb}0{{{b{Cj}}{b{dC`}}}Cb}0{{{b{Cl}}{b{dC`}}}Cb}0{{{b{Cn}}{b{dC`}}}Cb}0{{{b{Ad}}{b{dC`}}}Cb}09{D`Al}::::{DbAd}{ClAd}{CnAd}{CjAd}<<<<<{{{b{Al}}}{{Ch{{b{Dd}}}}}}{{{b{Ad}}}{{Ch{{b{Dd}}}}}}{{{b{Al}}}Df}{{{b{Ad}}}Df}{{{b{c}}}Ah{}}0000{c{{Af{e}}}{}{}}000000000{{{b{c}}}Bl{}}0000{ce{}{}}0000","D":"Fb","p":[[1,"reference"],[0,"mut"],[5,"IdentityMiddlewareBuilder",32],[5,"IdentityMiddleware",0,140],[1,"unit"],[5,"HttpRequest",141],[6,"Payload",142],[10,"IdentityExt",0,143],[5,"Identity",0,144],[6,"GetIdentityError",67],[6,"Result",145],[5,"String",146],[5,"Extensions",147],[5,"LoginError",67],[10,"MessageBody",148],[5,"ServiceRequest",149],[17,"Response"],[5,"ServiceResponse",149],[17,"Error"],[5,"Error",150],[10,"Service",151],[5,"TypeId",152],[6,"LogoutBehaviour",32],[5,"Formatter",153],[8,"Result",153],[1,"str"],[5,"Duration",154],[6,"Option",155],[5,"SessionExpiryError",67],[5,"LostIdentityError",67],[5,"MissingIdentityError",67],[5,"SessionInsertError",156],[5,"SessionGetError",156],[10,"Error",157],[5,"StatusCode",158]],"r":[[0,144],[1,143],[2,140]],"b":[[86,"impl-Display-for-LoginError"],[87,"impl-Debug-for-LoginError"],[88,"impl-Debug-for-SessionExpiryError"],[89,"impl-Display-for-SessionExpiryError"],[90,"impl-Display-for-LostIdentityError"],[91,"impl-Debug-for-LostIdentityError"],[92,"impl-Debug-for-MissingIdentityError"],[93,"impl-Display-for-MissingIdentityError"],[94,"impl-Display-for-GetIdentityError"],[95,"impl-Debug-for-GetIdentityError"],[102,"impl-From%3CSessionGetError%3E-for-GetIdentityError"],[103,"impl-From%3CLostIdentityError%3E-for-GetIdentityError"],[104,"impl-From%3CMissingIdentityError%3E-for-GetIdentityError"],[105,"impl-From%3CSessionExpiryError%3E-for-GetIdentityError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAFsADQAEAAMACQABAAwAAAAQAAAAFwAJACUAAwAqAAUAOQAHAEIAAQBNABMAYgAAAGcAAwBwABwA"}],\ +["actix_limitation",{"t":"FPSSSSGPFPFFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","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","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":[[0,"actix_limitation"],[82,"actix_limitation::builder"],[83,"actix_limitation::errors"],[84,"core::result"],[85,"alloc::string"],[86,"core::convert"],[87,"actix_limitation::status"],[88,"alloc::borrow"],[89,"actix_limitation::middleware"],[90,"core::fmt"],[91,"time::error::component_range"],[92,"redis::types"],[93,"actix_web::service"],[94,"core::option"],[95,"core::ops::function"],[96,"core::marker"],[97,"actix_web::error::error"],[98,"actix_service"],[99,"core::time"],[100,"core::error"],[101,"core::any"]],"i":[0,5,0,0,0,0,0,5,0,5,0,0,5,3,5,13,9,4,3,5,13,9,4,3,4,9,4,9,4,3,4,13,3,5,5,13,9,4,3,5,5,5,13,9,4,3,5,13,9,4,3,3,9,13,3,9,9,3,5,9,4,5,3,5,13,9,4,3,5,13,9,4,3,5,13,9,4,3,5,13,9,4],"f":"`````````````{{{b{c}}}{{b{e}}}{}{}}0000{{{b{dc}}}{{b{de}}}{}{}}0000{{{b{df}}}{{l{hj}}}}{cf{{A`{n}}}}{{{b{Ab}}}Ab}{{{b{h}}}h}{{{b{c}}{b{de}}}Ad{}{}}0{{{b{df}}c}{{b{df}}}{{A`{{Ah{Af}}}}}}{{{b{h}}c}{{l{Abj}}}{{A`{n}}}}{{}Aj}{{{b{f}}{b{dAl}}}An}{{{b{j}}{b{dAl}}}An}0{{{b{Aj}}{b{dAl}}}An}{{{b{Ab}}{b{dAl}}}An}{{{b{h}}{b{dAl}}}An}{cc{}}{B`j}1{Bbj}222{ce{}{}}0000{{{b{df}}c}{{b{df}}}{{Bj{{b{Bd}}}{{Bf{{Bh{n}}}}}}BlBn}}{{{b{df}}C`}{{b{df}}}}{{{b{Ab}}}C`}{{{b{Aj}}e}g{}{{Cj{Bd}{{Cb{{Cd{c}}}}{Cf{Ch}}}}}{}}{{{b{df}}Cl}{{b{df}}}}22{{{b{df}}c}{{b{df}}}{{A`{{Ah{Af}}}}}}{{{b{j}}}{{Bh{{b{Cn}}}}}}{{{b{c}}}e{}{}}0{{{b{c}}}n{}}{c{{l{e}}}{}{}}000000000{{{b{c}}}D`{}}0000;;;;;","D":"Df","p":[[1,"reference"],[0,"mut"],[5,"Builder",0,82],[5,"Limiter",0],[6,"Error",0,83],[6,"Result",84],[5,"String",85],[10,"Into",86],[5,"Status",0,87],[1,"unit"],[1,"str"],[6,"Cow",88],[5,"RateLimiter",0,89],[5,"Formatter",90],[8,"Result",90],[5,"ComponentRange",91],[5,"RedisError",92],[5,"ServiceRequest",93],[17,"Output"],[6,"Option",94],[10,"Fn",95],[10,"Send",96],[10,"Sync",96],[1,"usize"],[17,"Response"],[5,"ServiceResponse",93],[17,"Error"],[5,"Error",97],[10,"Service",98],[5,"Duration",99],[10,"Error",100],[5,"TypeId",101]],"r":[[0,82],[6,83],[10,89],[11,87]],"b":[[33,"impl-Debug-for-Error"],[34,"impl-Display-for-Error"],[39,"impl-From%3CComponentRange%3E-for-Error"],[41,"impl-From%3CRedisError%3E-for-Error"]],"c":"OjAAAAEAAAAAAAEAEAAAAB4AOgA=","e":"OzAAAAEAAC8ABwAOAAkAGgADACAABgAoAAAAKgAAADYAAAA7ABcA"}],\ +["actix_protobuf",{"t":"PPPPFFFGKPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNN","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","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":[[0,"actix_protobuf"],[63,"prost::message"],[64,"actix_web::response::response"],[65,"core::fmt"],[66,"actix_http::error"],[67,"prost::error"],[68,"actix_web::request"],[69,"actix_http::payload"],[70,"core::default"],[71,"core::pin"],[72,"core::task::wake"],[73,"core::task::poll"],[74,"actix_web::error::error"],[75,"core::result"],[76,"alloc::string"],[77,"core::any"]],"i":[6,6,6,6,0,0,0,0,0,6,4,3,17,6,4,3,17,6,3,4,4,6,4,4,6,6,4,3,17,6,6,6,4,4,3,17,6,17,3,17,17,17,22,4,4,6,4,3,17,6,4,3,17,6,17,4,3,17,6,4,3,17,6],"f":"``````````{{{b{c}}}{{b{e}}}{}{}}000{{{b{dc}}}{{b{de}}}{}{}}000{{}f}{{{b{{h{c}}}}}{{b{c}}}j}{{{b{d{h{c}}}}}{{b{dc}}}j}{{{b{l}}}n}{{{b{{h{c}}}}{b{dA`}}}Ab{Adj}}{{{b{{h{c}}}}{b{dA`}}}Ab{Afj}}{{{b{l}}{b{dA`}}}Ab}0{cc{}}000{Ahl}{Ajl}{{{b{Al}}{b{dAn}}}c{}}{ce{}{}}000{c{}{}}{{{b{df}}B`}{{b{df}}}}{{{Bb{c}}B`}{{Bb{c}}}{jBd}}{{{b{Al}}{b{dAn}}}{{Bb{c}}}{jBd}}{{{Bf{{b{d{Bb{c}}}}}}{b{dBh}}}{{Bj{e}}}{jBd}{}}{{{b{dBl}}c}{{C`{nBn}}}j}{{{h{c}}{b{Al}}}n{jBd}}{{{b{c}}}Cb{}}0{c{{C`{e}}}{}{}}0000000{{{Bf{{b{dc}}}}{b{dBh}}}Bj{}}{{{b{c}}}Cd{}}000;;;;","D":"Bb","p":[[1,"reference"],[0,"mut"],[5,"ProtoBufConfig",0],[5,"ProtoBuf",0],[10,"Message",63],[6,"ProtoBufPayloadError",0],[5,"HttpResponse",64],[5,"Formatter",65],[8,"Result",65],[10,"Debug",65],[10,"Display",65],[6,"PayloadError",66],[5,"DecodeError",67],[5,"HttpRequest",68],[6,"Payload",69],[1,"usize"],[5,"ProtoBufMessage",0],[10,"Default",70],[5,"Pin",71],[5,"Context",72],[6,"Poll",73],[10,"ProtoBufResponseBuilder",0],[5,"Error",74],[6,"Result",75],[5,"String",76],[5,"TypeId",77]],"r":[],"b":[[22,"impl-Debug-for-ProtoBuf%3CT%3E"],[23,"impl-Display-for-ProtoBuf%3CT%3E"],[24,"impl-Debug-for-ProtoBufPayloadError"],[25,"impl-Display-for-ProtoBufPayloadError"],[30,"impl-From%3CPayloadError%3E-for-ProtoBufPayloadError"],[31,"impl-From%3CDecodeError%3E-for-ProtoBufPayloadError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAC4ABQAFAAQACwAPAB8AAgAmAAAAKgAVAA=="}],\ +["actix_session",{"t":"PPPFKFFFGPNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNFPGPPFPPGFPGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFPGPPPFFGPPFKGNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNMNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNNNNNNNNN","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","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","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","RedisSessionStore","RedisSessionStoreBuilder","SaveError","Serialization","Serialization","SessionKey","SessionStore","UpdateError","as_ref","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","builder","cache_keygen","clone","clone_into","default","delete","delete","delete","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","into","into","into","into","into","into","into","load","load","load","new","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_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","update","update","update","update_ttl","update_ttl","update_ttl","vzip","vzip","vzip","vzip","vzip","vzip","vzip"],"q":[[0,"actix_session"],[90,"actix_session::config"],[187,"actix_session::storage"],[296,"cookie::secure::key"],[297,"actix_session::storage::interface"],[298,"actix_session::session"],[299,"actix_session::middleware"],[300,"core::clone"],[301,"alloc::string"],[302,"std::collections::hash::map"],[303,"core::cell"],[304,"actix_http::body::boxed"],[305,"actix_web::response::response"],[306,"core::fmt"],[307,"anyhow"],[308,"actix_web::request"],[309,"actix_http::payload"],[310,"core::option"],[311,"core::result"],[312,"serde::de"],[313,"actix_session::session_ext"],[314,"core::convert"],[315,"serde::ser"],[316,"actix_http::body::message_body"],[317,"actix_web::service"],[318,"actix_web::error::error"],[319,"actix_service"],[320,"core::error"],[321,"core::any"],[322,"cookie::draft"],[323,"time::duration"],[324,"actix_session::storage::session_key"],[325,"actix_session::storage::redis_rs"],[326,"core::ops::function"],[327,"core::marker"],[328,"actix_session::storage::cookie"],[329,"core::future::future"]],"i":[10,10,10,0,0,0,0,0,0,10,8,6,10,15,18,8,6,10,15,18,8,6,8,6,10,8,6,10,0,10,6,10,15,18,10,15,15,18,18,8,6,10,15,15,18,18,6,6,28,6,8,6,10,15,18,8,8,6,6,6,6,15,18,6,0,8,6,10,15,18,8,6,10,15,18,8,6,10,15,18,8,6,10,15,18,8,6,10,15,18,0,40,0,43,43,0,40,44,0,0,44,0,4,40,41,42,43,44,4,40,41,42,43,44,4,40,41,42,43,44,40,41,42,43,44,4,4,4,4,4,4,4,41,42,40,41,42,43,44,4,40,40,40,41,42,43,44,4,40,41,42,43,44,4,42,42,41,41,40,41,42,43,44,4,40,41,42,43,44,4,40,41,42,43,44,4,40,41,42,43,44,4,40,41,42,43,44,0,56,0,56,57,58,0,0,0,57,58,0,0,0,47,48,56,57,58,47,54,49,48,56,57,58,47,54,49,48,49,48,49,49,54,5,54,49,47,56,56,57,57,58,58,47,48,56,57,58,47,54,49,48,56,57,58,47,54,49,5,54,49,49,5,54,49,56,57,58,49,56,57,58,48,56,57,58,47,47,54,49,48,56,57,58,47,54,49,48,56,57,58,47,54,49,5,54,49,5,54,49,48,56,57,58,47,54,49],"f":"``````````{{{b{c}}}{{b{e}}}{}{}}0000{{{b{dc}}}{{b{de}}}{}{}}0000{{cf}{{h{c}}}j}{{{b{l}}}n}{{{b{{A`{c}}}}}{{A`{c}}}{Abj}}{{{b{l}}}l}{{{b{Ad}}}Ad}{{{b{c}}{b{de}}}n{}{}}00`{{}Ad}{{{b{l}}}{{Aj{{Ah{AfAf}}}}}}{{{b{Ad}}{b{Ad}}}Al}{{{b{An}}}{{Bb{B`}}}}{{{b{Bd}}}{{Bb{B`}}}}{{{b{Ad}}{b{dBf}}}Bh}{{{b{An}}{b{dBf}}}Bh}0{{{b{Bd}}{b{dBf}}}Bh}0{cc{}}00{BjAn}11{BjBd}{{{b{Bl}}{b{dBn}}}c{}}{{{b{l}}{b{C`}}}{{Cd{{Cb{c}}An}}}Cf}{{{b{Ch}}}l}{{{b{l}}ce}{{Cd{nBd}}}{{Cj{Af}}}Cl}{ce{}{}}0000{{cf}{{A`{c}}}j}{{{b{{A`{c}}}}g}ijCn{{Dj{D`}{{Db{{Dd{e}}}}{Df{Dh}}}}}{}}{{{b{l}}}n}{{{b{l}}{b{C`}}}{{Cb{Af}}}}{{{b{l}}{b{C`}}}{{Cb{{Cd{cAf}}}}}Cf}2{{{b{An}}}{{Cb{{b{Dl}}}}}}{{{b{Bd}}}{{Cb{{b{Dl}}}}}}{{{b{l}}}Ad}`{{{b{c}}}e{}{}}00{{{b{c}}}Af{}}0{c{{Cd{e}}}{}{}}000000000{{{b{c}}}Dn{}}0000<<<<<````````````{{{b{c}}}{{b{e}}}{}{}}00000{{{b{dc}}}{{b{de}}}{}{}}00000{{{h{c}}}{{A`{c}}}j}{{{b{E`}}}E`}{{{b{Eb}}}Eb}{{{b{Ed}}}Ed}{{{b{Ef}}}Ef}{{{b{Eh}}}Eh}{{{b{c}}{b{de}}}n{}{}}0000{{{h{c}}Eh}{{h{c}}}j}{{{h{c}}{Cb{Af}}}{{h{c}}}j}{{{h{c}}Al}{{h{c}}}j}{{{h{c}}Af}{{h{c}}}j}0{{{h{c}}Ej}{{h{c}}}j}2{{}Eb}{{}Ed}{{{b{E`}}{b{dBf}}}Bh}{{{b{Eb}}{b{dBf}}}Bh}{{{b{Ed}}{b{dBf}}}Bh}{{{b{Ef}}{b{dBf}}}Bh}{{{b{Eh}}{b{dBf}}}Bh}{cc{}}0{EdE`}{EbE`}2222{ce{}{}}00000{{{h{c}}e}{{h{c}}}j{{Cj{E`}}}}{{EdEl}Ed}{{EdEf}Ed}{{EbEl}Eb}{{EbEf}Eb}{{{b{c}}}e{}{}}0000{c{{Cd{e}}}{}{}}00000000000{{{b{c}}}Dn{}}00000888888``````````````{{{b{En}}}{{b{C`}}}}{{{b{c}}}{{b{e}}}{}{}}000000{{{b{dc}}}{{b{de}}}{}{}}000000{F`{{Cd{FbBj}}}}{cF`{{Cj{Af}}}}{{F`c}F`{{Ff{{b{C`}}}{{Fd{Af}}}}FhFj}}{{{b{Fb}}}Fb}{{{b{c}}{b{de}}}n{}{}}{{}Fl}{{{b{j}}{b{En}}}{{`{{Fn{}{{Fd{{Cd{nBj}}}}}}}}}}{{{b{Fl}}{b{En}}}{{Cd{nBj}}}}{{{b{Fb}}{b{En}}}{{Cd{nBj}}}}{{{b{En}}{b{En}}}Al}{{{b{G`}}{b{dBf}}}Bh}0{{{b{Gb}}{b{dBf}}}Bh}0{{{b{Gd}}{b{dBf}}}Bh}0{{{b{En}}{b{dBf}}}Bh}{cc{}}000000{ce{}{}}000000{{{b{j}}{b{En}}}{{`{{Fn{}{{Fd{{Cd{{Cb{{Ah{AfAf}}}}G`}}}}}}}}}}{{{b{Fl}}{b{En}}}{{Cd{{Cb{{Ah{AfAf}}}}G`}}}}{{{b{Fb}}{b{En}}}{{Cd{{Cb{{Ah{AfAf}}}}G`}}}}{c{{Cd{FbBj}}}{{Cj{Af}}}}{{{b{j}}{Ah{AfAf}}{b{El}}}{{`{{Fn{}{{Fd{{Cd{EnGb}}}}}}}}}}{{{b{Fl}}{Ah{AfAf}}{b{El}}}{{Cd{EnGb}}}}{{{b{Fb}}{Ah{AfAf}}{b{El}}}{{Cd{EnGb}}}}{{{b{G`}}}{{Cb{{b{Dl}}}}}}{{{b{Gb}}}{{Cb{{b{Dl}}}}}}{{{b{Gd}}}{{Cb{{b{Dl}}}}}}{{{b{c}}}e{}{}}{{{b{c}}}Af{}}00{c{{Cd{e}}}{}{}}000{Af{{Cd{Enc}}}{}}1111111111{{{b{c}}}Dn{}}000000{{{b{j}}En{Ah{AfAf}}{b{El}}}{{`{{Fn{}{{Fd{{Cd{EnGd}}}}}}}}}}{{{b{Fl}}En{Ah{AfAf}}{b{El}}}{{Cd{EnGd}}}}{{{b{Fb}}En{Ah{AfAf}}{b{El}}}{{Cd{EnGd}}}}{{{b{j}}{b{En}}{b{El}}}{{`{{Fn{}{{Fd{{Cd{nBj}}}}}}}}}}{{{b{Fl}}{b{En}}{b{El}}}{{Cd{nBj}}}}{{{b{Fb}}{b{En}}{b{El}}}{{Cd{nBj}}}}{ce{}{}}000000","D":"Mj","p":[[1,"reference"],[0,"mut"],[5,"Key",296],[5,"SessionMiddlewareBuilder",90],[10,"SessionStore",187,297],[5,"Session",0,298],[1,"unit"],[5,"SessionMiddleware",0,299],[10,"Clone",300],[6,"SessionStatus",0,298],[5,"String",301],[5,"HashMap",302],[5,"Ref",303],[1,"bool"],[5,"SessionGetError",0,298],[5,"BoxBody",304],[5,"HttpResponse",305],[5,"SessionInsertError",0,298],[5,"Formatter",306],[8,"Result",306],[5,"Error",307],[5,"HttpRequest",308],[6,"Payload",309],[1,"str"],[6,"Option",310],[6,"Result",311],[10,"DeserializeOwned",312],[10,"SessionExt",0,313],[10,"Into",314],[10,"Serialize",315],[10,"MessageBody",316],[5,"ServiceRequest",317],[17,"Response"],[5,"ServiceResponse",317],[17,"Error"],[5,"Error",318],[10,"Service",319],[10,"Error",320],[5,"TypeId",321],[6,"SessionLifecycle",90],[5,"BrowserSession",90],[5,"PersistentSession",90],[6,"TtlExtensionPolicy",90],[6,"CookieContentSecurity",90],[6,"SameSite",322],[5,"Duration",323],[5,"SessionKey",187,324],[5,"RedisSessionStoreBuilder",187,325],[5,"RedisSessionStore",187,325],[17,"Output"],[10,"Fn",326],[10,"Send",327],[10,"Sync",327],[5,"CookieSessionStore",187,328],[10,"Future",329],[6,"LoadError",187,297],[6,"SaveError",187,297],[6,"UpdateError",187,297]],"r":[[3,298],[4,313],[5,298],[6,298],[7,299],[8,298],[187,328],[189,297],[193,325],[194,325],[195,297],[198,324],[199,297],[200,297]],"b":[[35,"impl-Debug-for-SessionGetError"],[36,"impl-Display-for-SessionGetError"],[37,"impl-Display-for-SessionInsertError"],[38,"impl-Debug-for-SessionInsertError"],[141,"impl-From%3CPersistentSession%3E-for-SessionLifecycle"],[142,"impl-From%3CBrowserSession%3E-for-SessionLifecycle"],[226,"impl-Display-for-LoadError"],[227,"impl-Debug-for-LoadError"],[228,"impl-Display-for-SaveError"],[229,"impl-Debug-for-SaveError"],[230,"impl-Debug-for-UpdateError"],[231,"impl-Display-for-UpdateError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAALsAFQALAAkAFwAFAB4AAAAgAAcAKwAAAC4AAQA5AAAAPgABAEIAGABnAAsAdAAJAIUABgCOAAEAnwAcAMoADgDcAAIA4AAJAPkAAQD9AB4AHQEBACABCAA=","a":{"expires":[154],"max age":[154],"max_age":[154]}}],\ +["actix_settings",{"t":"FFKGFPPPPPPPPPGPPPGPPPPGGPGFGPKPPPPPPIGFPOOOOMONNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNOOOOONNMNNNNNNNNNOOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOO","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","actix","application","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_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","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","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","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_default_template","from_template","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","source","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_string","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":[[0,"actix_settings"],[312,"actix_settings::Error"],[317,"actix_settings::settings::address"],[318,"actix_settings::settings::backlog"],[319,"actix_settings::settings::keep_alive"],[320,"actix_settings::settings::max_connection_rate"],[321,"actix_settings::settings::max_connections"],[322,"actix_settings::settings::mode"],[323,"actix_settings::settings::num_workers"],[324,"actix_settings::settings::timeout"],[325,"actix_settings::settings::tls"],[326,"actix_settings::settings"],[327,"core::clone"],[328,"core::result"],[329,"serde::de"],[330,"core::cmp"],[331,"actix_settings::error"],[332,"core::fmt"],[333,"std::io::error"],[334,"core::str::error"],[335,"std::env"],[336,"core::num::error"],[337,"toml::de"],[338,"core::hash"],[339,"actix_settings::parse"],[340,"core::convert"],[341,"std::path"],[342,"core::error"],[343,"core::option"],[344,"alloc::string"],[345,"core::any"]],"i":[0,0,0,0,0,5,6,7,8,10,11,9,6,23,0,23,23,23,0,5,7,8,10,0,0,11,0,0,0,6,0,23,23,23,9,6,11,0,0,0,23,43,14,43,14,1,13,23,4,5,6,7,8,9,10,11,12,13,14,16,23,4,5,6,7,8,9,10,11,12,13,14,16,12,13,13,4,5,6,7,8,9,10,11,12,13,14,16,4,5,6,7,8,9,10,11,12,13,14,16,4,5,6,7,8,9,10,11,12,13,14,16,13,13,12,4,5,6,7,8,9,10,11,12,13,14,16,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,11,11,11,12,12,12,13,13,13,14,14,14,16,16,16,23,23,4,5,6,7,8,9,10,11,12,13,14,16,23,23,23,23,23,23,4,5,6,7,8,9,10,11,12,13,14,16,14,14,4,5,6,7,8,9,10,11,12,13,14,16,4,13,23,4,5,6,7,8,9,10,11,12,13,14,16,13,13,13,13,13,14,14,36,4,5,6,7,8,9,10,11,14,4,12,13,23,13,4,5,6,7,8,9,10,11,12,13,14,16,23,23,4,5,6,7,8,9,10,11,12,13,14,16,23,4,5,6,7,8,9,10,11,12,13,14,16,23,4,5,6,7,8,9,10,11,12,13,14,16,23,4,5,6,7,8,9,10,11,12,13,14,16,14,44,44,44,44,44],"f":"`````````````````````````````````````````````{{b{d{c}}}b{}}`{{{d{c}}}{{d{e}}}{}{}}000000000000{{{d{fc}}}{{d{fe}}}{}{}}000000000000```{{{d{h}}}h}{{{d{j}}}j}{{{d{l}}}l}{{{d{n}}}n}{{{d{A`}}}A`}{{{d{Ab}}}Ab}{{{d{Ad}}}Ad}{{{d{Af}}}Af}{{{d{Ah}}}Ah}{{{d{Aj}}}Aj}{{{d{{Al{c}}}}}{{Al{c}}}An}{{{d{B`}}}B`}{{{d{c}}{d{fe}}}Bb{}{}}00000000000{c{{Bd{h}}}Bf}{c{{Bd{j}}}Bf}{c{{Bd{l}}}Bf}{c{{Bd{n}}}Bf}{c{{Bd{A`}}}Bf}{c{{Bd{Ab}}}Bf}{c{{Bd{Ad}}}Bf}{c{{Bd{Af}}}Bf}{c{{Bd{Ah}}}Bf}{c{{Bd{Aj}}}Bf}{c{{Bd{{Al{e}}}}}BfBh}{c{{Bd{B`}}}Bf}```{{{d{h}}{d{h}}}Bj}{{{d{j}}{d{j}}}Bj}{{{d{l}}{d{l}}}Bj}{{{d{n}}{d{n}}}Bj}{{{d{A`}}{d{A`}}}Bj}{{{d{Ab}}{d{Ab}}}Bj}{{{d{Ad}}{d{Ad}}}Bj}{{{d{Af}}{d{Af}}}Bj}{{{d{Ah}}{d{Ah}}}Bj}{{{d{Aj}}{d{Aj}}}Bj}{{{d{{Al{c}}}}{d{{Al{c}}}}}BjBl}{{{d{B`}}{d{B`}}}Bj}{{{d{c}}{d{e}}}Bj{}{}}00000000000000000000000000000000000{{{d{Bn}}{d{fC`}}}Cb}0{{{d{h}}{d{fC`}}}Cb}{{{d{j}}{d{fC`}}}Cb}{{{d{l}}{d{fC`}}}Cb}{{{d{n}}{d{fC`}}}Cb}{{{d{A`}}{d{fC`}}}Cb}{{{d{Ab}}{d{fC`}}}Cb}{{{d{Ad}}{d{fC`}}}Cb}{{{d{Af}}{d{fC`}}}Cb}{{{d{Ah}}{d{fC`}}}Cb}{{{d{Aj}}{d{fC`}}}Cb}{{{d{{Al{c}}}}{d{fC`}}}CbCd}{{{d{B`}}{d{fC`}}}Cb}{cc{}}{CfBn}{ChBn}{CjBn}{ClBn}{CnBn}555555555555{{}{{Al{c}}}D`}{{{d{Db}}}{{Bd{{Al{c}}Bn}}}D`}{{{d{h}}{d{fc}}}BbDd}{{{d{j}}{d{fc}}}BbDd}{{{d{l}}{d{fc}}}BbDd}{{{d{n}}{d{fc}}}BbDd}{{{d{A`}}{d{fc}}}BbDd}{{{d{Ab}}{d{fc}}}BbDd}{{{d{Ad}}{d{fc}}}BbDd}{{{d{Af}}{d{fc}}}BbDd}{{{d{Ah}}{d{fc}}}BbDd}{{{d{Aj}}{d{fc}}}BbDd}{{{d{{Al{c}}}}{d{fe}}}BbDfDd}{{{d{B`}}{d{fc}}}BbDd}``{ce{}{}}000000000000`````{{{d{fc}}e}{{Bd{BbBn}}}Dh{{Dj{Db}}}}0{{{d{Db}}}{{Bd{DhBn}}}}{{{d{Db}}}{{Bd{hBn}}}}{{{d{Db}}}{{Bd{jBn}}}}{{{d{Db}}}{{Bd{lBn}}}}{{{d{Db}}}{{Bd{nBn}}}}{{{d{Db}}}{{Bd{A`Bn}}}}{{{d{Db}}}{{Bd{AbBn}}}}{{{d{Db}}}{{Bd{AdBn}}}}{{{d{Db}}}{{Bd{AfBn}}}}{c{{Bd{{Al{e}}Bn}}}{{Dj{Dl}}}D`}```{{{d{Bn}}}{{E`{{d{Dn}}}}}}`{{{d{c}}}e{}{}}00000000000{{{d{c}}}Eb{}}{c{{Bd{e}}}{}{}}0000000000000000000000000{{{d{c}}}Ed{}}000000000000{ce{}{}}000000000000{c{{Bd{BbBn}}}{{Dj{Dl}}}}`````","D":"Ld","p":[[10,"ApplySettings",0],[1,"reference"],[0,"mut"],[5,"Address",0,317],[6,"Backlog",0,318],[6,"KeepAlive",0,319],[6,"MaxConnectionRate",0,320],[6,"MaxConnections",0,321],[6,"Mode",0,322],[6,"NumWorkers",0,323],[6,"Timeout",0,324],[5,"Tls",0,325],[5,"ActixSettings",0,326],[5,"BasicSettings",0],[10,"Clone",327],[5,"NoSettings",0],[1,"unit"],[6,"Result",328],[10,"Deserializer",329],[10,"Deserialize",329],[1,"bool"],[10,"PartialEq",330],[6,"Error",0,331],[5,"Formatter",332],[8,"Result",332],[10,"Debug",332],[5,"Error",333],[5,"ParseBoolError",334],[6,"VarError",335],[5,"ParseIntError",336],[5,"Error",337],[10,"DeserializeOwned",329],[1,"str"],[10,"Hasher",338],[10,"Hash",338],[10,"Parse",0,339],[10,"AsRef",340],[5,"Path",341],[10,"Error",342],[6,"Option",343],[5,"String",344],[5,"TypeId",345],[8,"Settings",0],[15,"InvalidValue",312]],"r":[[0,326],[1,317],[3,318],[14,331],[18,319],[23,320],[24,321],[26,322],[28,323],[30,339],[38,324],[39,325]],"b":[[163,"impl-Debug-for-Error"],[164,"impl-Display-for-Error"],[178,"impl-From%3CError%3E-for-Error"],[179,"impl-From%3CParseBoolError%3E-for-Error"],[180,"impl-From%3CVarError%3E-for-Error"],[181,"impl-From%3CParseIntError%3E-for-Error"],[182,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAANsACQAwABkATQAjAHQAPQCzAAQAxgALAOkABwD1AAAA9wBAADkBBAA=","a":{"https":[39],"ssl":[39]}}],\ +["actix_web_httpauth",{"t":"CCCKFRCCNNNNNNNNNMNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCFPFFPPPGKPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKFCCNNNNNNNNNNNNNNMNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNFFGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNN","n":["extractors","headers","middleware","AuthExtractorConfig","AuthenticationError","Inner","basic","bearer","borrow","borrow_mut","challenge_mut","error_response","fmt","fmt","from","from","into","into_inner","new","status_code","status_code_mut","to_string","try_from","try_into","type_id","vzip","with_error","with_error_description","with_error_uri","BasicAuth","Config","as_ref","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","default","fmt","fmt","from","from","from","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","fmt","fmt","fmt","fmt","from","from","from","from_request","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","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","hash","into","into","into","into","into_scheme","name","new","new","parse","parse","parse","parse","partial_cmp","partial_cmp","partial_cmp","password","source","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","token","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into_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","fmt","from","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","fmt","fmt","from","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","error","error_description","error_uri","finish","fmt","fmt","fmt","from","from","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":[[0,"actix_web_httpauth"],[3,"actix_web_httpauth::extractors"],[29,"actix_web_httpauth::extractors::basic"],[63,"actix_web_httpauth::extractors::bearer"],[119,"actix_web_httpauth::headers"],[121,"actix_web_httpauth::headers::authorization"],[218,"actix_web_httpauth::headers::www_authenticate"],[244,"actix_web_httpauth::headers::www_authenticate::basic"],[267,"actix_web_httpauth::headers::www_authenticate::bearer"],[310,"actix_web_httpauth::middleware"],[327,"actix_web_httpauth::extractors::errors"],[328,"actix_web_httpauth::headers::www_authenticate::challenge"],[329,"actix_web::response::response"],[330,"core::fmt"],[331,"actix_web_httpauth::extractors::config"],[332,"http::status"],[333,"alloc::string"],[334,"core::result"],[335,"core::any"],[336,"actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge"],[337,"actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors"],[338,"alloc::borrow"],[339,"core::convert"],[340,"actix_web_httpauth::headers::www_authenticate::challenge::basic"],[341,"actix_web_httpauth::headers::authorization::scheme::basic"],[342,"actix_web::request"],[343,"actix_http::payload"],[344,"core::option"],[345,"core::cmp"],[346,"core::hash"],[347,"actix_web_httpauth::headers::authorization::header"],[348,"actix_web_httpauth::headers::authorization::scheme"],[349,"core::clone"],[350,"actix_web_httpauth::headers::authorization::scheme::bearer"],[351,"core::default"],[352,"actix_web_httpauth::headers::authorization::errors"],[353,"base64::decode"],[354,"core::str::error"],[355,"http::header::value"],[356,"http::header::name"],[357,"actix_http::error"],[358,"actix_http::http_message"],[359,"core::error"],[360,"actix_web_httpauth::headers::www_authenticate::header"],[361,"bytes::bytes"],[362,"actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder"],[363,"actix_web::service"],[364,"actix_web::error::error"],[365,"core::future::future"],[366,"core::ops::function"],[367,"actix_web::extract"],[368,"actix_http::body::message_body"],[369,"actix_service"]],"i":[0,0,0,0,0,9,0,0,3,3,3,3,3,3,3,3,3,9,3,3,3,3,3,3,3,3,3,3,3,0,0,20,20,22,20,22,20,22,20,22,20,20,22,20,22,22,22,20,22,20,22,20,20,22,20,22,20,22,20,22,22,20,22,0,0,0,16,16,16,28,28,29,16,28,29,16,28,29,16,28,29,16,16,28,16,28,29,16,16,28,29,16,29,16,28,29,16,28,16,28,28,16,28,29,16,16,29,28,29,16,28,29,16,28,29,16,28,29,16,0,0,0,40,0,0,40,40,40,0,0,40,40,33,33,40,33,24,36,40,33,24,36,33,24,36,33,24,36,33,24,36,33,33,24,36,40,40,33,33,24,24,36,36,40,40,40,40,33,33,24,36,33,40,33,24,36,33,33,24,36,34,33,24,36,33,24,36,24,40,33,24,36,40,33,24,36,36,40,33,24,36,40,33,24,36,33,33,24,36,40,33,24,36,24,40,33,24,36,0,0,0,0,52,52,52,52,52,52,52,52,52,52,52,52,52,52,4,52,52,52,52,52,52,52,0,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,0,0,0,16,16,16,55,15,55,15,15,15,15,15,55,15,15,55,55,55,55,55,15,15,55,15,15,55,15,15,55,55,15,15,55,15,55,15,15,55,15,55,15,0,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56],"f":"````````{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{d{f{c}}}}}{{b{dc}}}h}{{{b{{f{c}}}}}jh}{{{b{{f{c}}}}{b{dl}}}nh}{{{b{{f{c}}}}{b{dl}}}n{A`h}}{cfAb}{cc{}}{ce{}{}}{{{Ab{}{{Ad{c}}}}}ch}{c{{f{c}}}h}{{{b{{f{c}}}}}Afh}{{{b{d{f{c}}}}}{{b{dAf}}}h}{{{b{c}}}Ah{}}{c{{Aj{e}}}{}{}}0{{{b{c}}}Al{}}7{{{f{An}}B`}{{f{An}}}}{{{f{An}}c}{{f{An}}}{{Bf{{Bd{Bb}}}}}}0``{{{b{Bh}}}{{b{Bj}}}}{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{Bh}}}Bh}{{{b{Bl}}}Bl}{{{b{c}}{b{de}}}Bn{}{}}0{{}Bh}{{{b{Bh}}{b{dl}}}n}{{{b{Bl}}{b{dl}}}n}{cc{}}0{C`Bl}{{{b{Cb}}{b{dCd}}}c{}}{ce{}{}}0{Bhc{}}{{{b{Bl}}}{{Cf{{b{Bb}}}}}}{{Bhc}Bh{{Bf{{Bd{Bb}}}}}}{{{b{c}}}e{}{}}0{c{{Aj{e}}}{}{}}000{{{b{c}}}Al{}}0{{{b{Bl}}}{{b{Bb}}}}77``````{{{b{Ch}}}{{b{An}}}}{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{{b{Ch}}}Ch}{{{b{Cj}}}Cj}{{{b{B`}}}B`}{{{b{c}}{b{de}}}Bn{}{}}00{{{b{B`}}{b{B`}}}Cl}{{}Ch}{{{b{B`}}{b{B`}}}Cn}{{{b{Ch}}{b{dl}}}n}{{{b{Cj}}{b{dl}}}n}{{{b{B`}}{b{dl}}}n}0{cc{}}00{{{b{Cb}}{b{dCd}}}c{}}{{{b{B`}}{b{dc}}}BnD`}{ce{}{}}00{Chc{}}{{{b{B`}}{b{B`}}}{{Cf{Cl}}}}{{Chc}Ch{{Bf{{Bd{Bb}}}}}}0{{{b{B`}}}Af}{{{b{c}}}e{}{}}00{{{b{c}}}Ah{}}{{{b{Cj}}}{{b{Bb}}}}{c{{Aj{e}}}{}{}}00000{{{b{c}}}Al{}}00999`````````````{{{b{d{Db{c}}}}}{{b{dc}}}Dd}{{{b{{Db{c}}}}}{{b{c}}}Dd}{{{b{c}}}{{b{e}}}{}{}}000{{{b{dc}}}{{b{de}}}{}{}}000{{{b{{Db{c}}}}}{{Db{c}}}{DfDd}}{{{b{C`}}}C`}{{{b{Dh}}}Dh}{{{b{c}}{b{de}}}Bn{}{}}00{{{b{{Db{c}}}}{b{{Db{c}}}}}Cl{DjDd}}{{{b{C`}}{b{C`}}}Cl}{{{b{Dh}}{b{Dh}}}Cl}{{}{{Db{c}}}{DlDd}}{{{b{{Db{c}}}}{b{{Db{c}}}}}Cn{DnDd}}{{{b{C`}}{b{C`}}}Cn}{{{b{Dh}}{b{Dh}}}Cn}{{{b{E`}}{b{dl}}}n}0{{{b{{Db{c}}}}{b{dl}}}nDd}{{{b{{Db{c}}}}{b{dl}}}n{A`Dd}}{{{b{C`}}{b{dl}}}n}0{{{b{Dh}}{b{dl}}}n}0{EbE`}{cc{}}{EdE`}{EfE`}{c{{Db{c}}}Dd}333{{{b{{Db{c}}}}{b{de}}}Bn{EhDd}D`}{ce{}{}}000{{{Db{c}}}cDd}{{}Ej}{{c{Cf{e}}}C`{{Bf{{Bd{Bb}}}}}{{Bf{{Bd{Bb}}}}}}{cDh{{Bf{{Bd{Bb}}}}}}{{{b{El}}}{{Aj{DdE`}}}}{{{b{c}}}{{Aj{{Db{e}}En}}}F`Dd}{{{b{El}}}{{Aj{C`E`}}}}{{{b{El}}}{{Aj{DhE`}}}}{{{b{{Db{c}}}}{b{{Db{c}}}}}{{Cf{Cl}}}{FbDd}}{{{b{C`}}{b{C`}}}{{Cf{Cl}}}}{{{b{Dh}}{b{Dh}}}{{Cf{Cl}}}}{{{b{C`}}}{{Cf{{b{Bb}}}}}}{{{b{E`}}}{{Cf{{b{Fd}}}}}}{{{b{c}}}e{}{}}00{{{b{c}}}Ah{}}000{{{b{Dh}}}{{b{Bb}}}}{c{{Aj{e}}}{}{}}0000000{c{{Aj{{Ff{EjEl}}}}}{}}{{{Db{c}}}{{Aj{Ele}}}Dd{}}{C`{{Aj{Elc}}}{}}{Dh{{Aj{Elc}}}{}}{{{b{c}}}Al{}}000{{{b{C`}}}{{b{Bb}}}}{ce{}{}}000````{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{{Fh{c}}}}}{{Fh{c}}}{Dfh}}{{{b{c}}{b{de}}}Bn{}{}}{{{b{{Fh{c}}}}{b{{Fh{c}}}}}Cl{Djh}}{{}{{Fh{c}}}{Dlh}}{{{b{{Fh{c}}}}{b{{Fh{c}}}}}Cn{Dnh}}{{{b{{Fh{c}}}}{b{dl}}}n{A`h}}{cc{}}{{{b{{Fh{c}}}}{b{de}}}Bn{Ehh}D`}:{{}Ej}{{{b{c}}}{{Aj{{Fh{e}}En}}}F`h}{{{b{{Fh{c}}}}{b{{Fh{c}}}}}{{Cf{Cl}}}{Fbh}}{{{b{h}}}Fj}{{{b{c}}}e{}{}}{c{{Aj{e}}}{}{}}0{c{{Aj{{Ff{EjEl}}}}}{}}{{{Fh{c}}}{{Aj{Ele}}}h{}}{{{b{c}}}Al{}}{ce{}{}}`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{Bj}}}Bj}{{{b{c}}{b{de}}}Bn{}{}}{{{b{Bj}}{b{Bj}}}Cl}{{}Bj}{{{b{Bj}}{b{Bj}}}Cn}{{{b{Bj}}{b{dl}}}n}{{{b{Bj}}{b{dl}}}{{Aj{BnFl}}}}{cc{}}{{{b{Bj}}{b{dc}}}BnD`};5{{{b{Bj}}{b{Bj}}}{{Cf{Cl}}}}{{{b{c}}}e{}{}}{{{b{c}}}Ah{}}{c{{Aj{e}}}{}{}}0{Bj{{Aj{Elc}}}{}}{{{b{c}}}Al{}}{ce{}{}}{cBj{{Bf{{Bd{Bb}}}}}}``````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{}Fn}{{{b{An}}}An}{{{b{c}}{b{de}}}Bn{}{}}{{{b{An}}{b{An}}}Cl}3{{}An}{{{b{An}}{b{An}}}Cn}{{FnB`}Fn}{{Fnc}Fn{{Bf{{Bd{Bb}}}}}}0{FnAn}{{{b{Fn}}{b{dl}}}n}{{{b{An}}{b{dl}}}{{Aj{BnFl}}}}{{{b{An}}{b{dl}}}n}{cc{}}0{{{b{An}}{b{dc}}}BnD`}{ce{}{}}0{{{b{An}}{b{An}}}{{Cf{Cl}}}}88{{{b{c}}}e{}{}}{{{b{c}}}Ah{}}{c{{Aj{e}}}{}{}}000{An{{Aj{Elc}}}{}}{{{b{c}}}Al{}}066`{e{{G`{Ble}}}{{Gh{}{{Gb{{Aj{Gd{Ff{GfGd}}}}}}}}}{{Gj{GdBl}{{Gb{c}}}}}}{e{{G`{Cje}}}{{Gh{}{{Gb{{Aj{Gd{Ff{GfGd}}}}}}}}}{{Gj{GdCj}{{Gb{c}}}}}}{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{{G`{ce}}}}}{{G`{ce}}}{GlDf}Df}{{{b{c}}{b{de}}}Bn{}{}}{{{b{{G`{ce}}}}{b{dl}}}n{GlA`}A`}?={{{b{{G`{cg}}}}k}mGl{{Gh{}{{Gb{{Aj{GdFf}}}}}}}{{Gj{Gdc}{{Gb{e}}}}}Gn{{Hf{Gd}{{H`{{Hb{i}}}}{Hd{Gf}}}}}{}}<::8>{g{{G`{cg}}}Gl{{Gh{}{{Gb{{Aj{Gd{Ff{GfGd}}}}}}}}}{{Gj{Gdc}{{Gb{e}}}}}}","D":"Md","p":[[1,"reference"],[0,"mut"],[5,"AuthenticationError",3,327],[10,"Challenge",218,328],[5,"HttpResponse",329],[5,"Formatter",330],[8,"Result",330],[10,"Debug",330],[10,"AuthExtractorConfig",3,331],[17,"Inner"],[5,"StatusCode",332],[5,"String",333],[6,"Result",334],[5,"TypeId",335],[5,"Bearer",267,336],[6,"Error",63,337],[1,"str"],[6,"Cow",338],[10,"Into",339],[5,"Config",29],[5,"Basic",244,340],[5,"BasicAuth",29],[1,"unit"],[5,"Basic",121,341],[5,"HttpRequest",342],[6,"Payload",343],[6,"Option",344],[5,"Config",63],[5,"BearerAuth",63],[6,"Ordering",345],[1,"bool"],[10,"Hasher",346],[5,"Authorization",121,347],[10,"Scheme",121,348],[10,"Clone",349],[5,"Bearer",121,350],[10,"Ord",345],[10,"Default",351],[10,"PartialEq",345],[6,"ParseError",121,352],[6,"DecodeError",353],[5,"Utf8Error",354],[5,"ToStrError",355],[10,"Hash",346],[5,"HeaderName",356],[5,"HeaderValue",355],[6,"ParseError",357],[10,"HttpMessage",358],[10,"PartialOrd",345],[10,"Error",359],[1,"tuple"],[5,"WwwAuthenticate",218,360],[5,"Bytes",361],[5,"Error",330],[5,"BearerBuilder",267,362],[5,"HttpAuthentication",310],[17,"Output"],[5,"ServiceRequest",363],[5,"Error",364],[10,"Future",365],[10,"Fn",366],[10,"FromRequest",367],[10,"MessageBody",368],[17,"Response"],[5,"ServiceResponse",363],[17,"Error"],[10,"Service",369]],"r":[[3,331],[4,327],[65,337],[121,347],[123,341],[124,350],[128,352],[129,348],[218,328],[219,360],[220,328],[221,328],[244,340],[267,336],[268,362],[269,337]],"b":[[12,"impl-Display-for-AuthenticationError%3CC%3E"],[13,"impl-Debug-for-AuthenticationError%3CC%3E"],[87,"impl-Display-for-Error"],[88,"impl-Debug-for-Error"],[155,"impl-Display-for-ParseError"],[156,"impl-Debug-for-ParseError"],[157,"impl-Display-for-Authorization%3CS%3E"],[158,"impl-Debug-for-Authorization%3CS%3E"],[159,"impl-Display-for-Basic"],[160,"impl-Debug-for-Basic"],[161,"impl-Display-for-Bearer"],[162,"impl-Debug-for-Bearer"],[163,"impl-From%3CDecodeError%3E-for-ParseError"],[165,"impl-From%3CUtf8Error%3E-for-ParseError"],[166,"impl-From%3CToStrError%3E-for-ParseError"],[252,"impl-Debug-for-Basic"],[253,"impl-Display-for-Basic"],[289,"impl-Display-for-Bearer"],[290,"impl-Debug-for-Bearer"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAN0AJQAJAAEADAADABQAAAAWAAQAIAALAC4AAQAyAAAANQAHAD4AAQBGABMAXQABAGIAAQBnAAMAbAALAIUAHwCmAAIArAAAALIAAAC2AAUAvQAHAMYADwDXAAMA3wAHAOgAAADqAAIA7gAGAPYACAAAAQAAAwEHABIBAwAXAQUAIQECACYBAAApAQAALAEKADoBBABBAQUA"}],\ +["actix_ws",{"t":"PPPPPPGFFPPPPPPPPPPPPPGPPGFPPPPPPPGPFPFPPPNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Abnormal","Again","Away","BadOpCode","Binary","Close","CloseCode","CloseReason","Closed","Continuation","ContinuationFragment","ContinuationNotStarted","ContinuationStarted","Continue","Error","Extension","FirstBinary","FirstText","Invalid","InvalidLength","InvalidOpcode","Io","Item","Last","MaskedFrame","Message","MessageStream","Nop","Normal","Overflow","Ping","Policy","Pong","Protocol","ProtocolError","Restart","Session","Size","StreamingBody","Text","UnmaskedFrame","Unsupported","binary","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","clone","clone","clone","clone_into","clone_into","clone_into","close","code","continuation","description","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","handle","into","into","into","into","into","into","into","into","into","ping","poll_next","poll_next","pong","recv","source","text","to_owned","to_owned","to_owned","to_string","to_string","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_poll_next","try_poll_next","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"],"q":[[0,"actix_ws"],[159,"actix_ws::session"],[160,"core::result"],[161,"bytes::bytes"],[162,"core::convert"],[163,"actix_http::ws::proto"],[164,"core::option"],[165,"actix_http::ws::codec"],[166,"core::fmt"],[167,"actix_http::ws"],[168,"alloc::string"],[169,"std::io::error"],[170,"actix_web::request"],[171,"actix_web::types::payload"],[172,"actix_web::response::response"],[173,"actix_ws::fut"],[174,"actix_web::error::error"],[175,"core::pin"],[176,"core::task::wake"],[177,"core::task::poll"],[178,"core::error"],[179,"bytestring"],[180,"core::any"]],"i":[9,9,9,18,13,13,0,0,0,13,18,18,18,12,9,9,12,12,9,18,18,18,0,12,18,0,0,13,9,18,13,9,13,9,0,9,0,9,0,13,18,9,2,32,29,2,5,13,12,9,10,18,32,29,2,5,13,12,9,10,18,2,9,10,2,9,10,2,10,2,10,13,12,9,10,5,5,13,12,9,10,18,18,32,29,2,5,13,12,9,9,10,10,10,18,18,18,18,18,0,32,29,2,5,13,12,9,10,18,2,32,29,2,29,18,2,2,9,10,5,18,32,29,2,5,13,12,9,10,18,32,29,2,5,13,12,9,10,18,32,29,32,29,2,5,13,12,9,10,18,32,29,2,5,13,12,9,10,18],"f":"``````````````````````````````````````````{{{f{bd}}c}{{l{hj}}}{{A`{n}}}}{{{f{c}}}{{f{e}}}{}{}}00000000{{{f{bc}}}{{f{be}}}{}{}}00000000{{{f{d}}}d}{{{f{Ab}}}Ab}{{{f{Ad}}}Ad}{{{f{c}}{f{be}}}h{}{}}00{{d{Af{Ad}}}{{l{hj}}}}`{{{f{bd}}Ah}{{l{hj}}}}`{{{f{Aj}}{f{Aj}}}Al}{{{f{Ah}}{f{Ah}}}Al}{{{f{Ab}}{f{Ab}}}Al}{{{f{Ad}}{f{Ad}}}Al}{{{f{j}}{f{bAn}}}B`}0{{{f{Aj}}{f{bAn}}}{{l{hBb}}}}{{{f{Ah}}{f{bAn}}}{{l{hBb}}}}{{{f{Ab}}{f{bAn}}}{{l{hBb}}}}{{{f{Ad}}{f{bAn}}}{{l{hBb}}}}{{{f{Bd}}{f{bAn}}}{{l{hBb}}}}0{cc{}}000000{BfAb}{AbAd}{{{Bh{Abc}}}Ad{{A`{Bj}}}}3{BlBd}{BnBd}{C`Bd}{CbBd}7{{{f{Cd}}Cf}{{l{{Bh{ChdCj}}Cl}}}}{ce{}{}}00000000{{{f{bd}}{f{{Cn{Bn}}}}}{{l{hj}}}}{{{Db{{f{bD`}}}}{f{bDd}}}{{Df{{Af{c}}}}}{}}{{{Db{{f{bCj}}}}{f{bDd}}}{{Df{{Af{c}}}}}{}}2{{{f{bCj}}}{{Af{{l{AjBd}}}}}}{{{f{Bd}}}{{Af{{f{Dh}}}}}}{{{f{bd}}c}{{l{hj}}}{{A`{Dj}}}}{{{f{c}}}e{}{}}00{{{f{c}}}Bj{}}0{c{{l{e}}}{}{}}00000000000000000{{{Db{{f{bc}}}}{f{bDd}}}{{Df{{Af{l}}}}}{}}0{{{f{c}}}Dl{}}00000000;;;;;;;;;","D":"Hf","p":[[0,"mut"],[5,"Session",0,159],[1,"reference"],[1,"unit"],[5,"Closed",0,159],[6,"Result",160],[5,"Bytes",161],[10,"Into",162],[6,"CloseCode",0,163],[5,"CloseReason",0,163],[6,"Option",164],[6,"Item",0,165],[6,"Message",0,165],[1,"bool"],[5,"Formatter",166],[8,"Result",166],[5,"Error",166],[6,"ProtocolError",0,167],[1,"u16"],[1,"tuple"],[5,"String",168],[1,"usize"],[1,"u8"],[5,"Error",169],[6,"OpCode",163],[5,"HttpRequest",170],[5,"Payload",171],[5,"HttpResponse",172],[5,"MessageStream",0,173],[5,"Error",174],[1,"slice"],[5,"StreamingBody",0,173],[5,"Pin",175],[5,"Context",176],[6,"Poll",177],[10,"Error",178],[5,"ByteString",179],[5,"TypeId",180]],"r":[[6,163],[7,163],[8,159],[22,165],[25,165],[26,173],[34,167],[36,159],[38,173]],"b":[[75,"impl-Display-for-Closed"],[76,"impl-Debug-for-Closed"],[81,"impl-Debug-for-ProtocolError"],[82,"impl-Display-for-ProtocolError"],[91,"impl-From%3CCloseCode%3E-for-CloseReason"],[92,"impl-From%3C(CloseCode,+T)%3E-for-CloseReason"],[94,"impl-From%3Cusize%3E-for-ProtocolError"],[95,"impl-From%3Cu8%3E-for-ProtocolError"],[96,"impl-From%3CError%3E-for-ProtocolError"],[97,"impl-From%3COpCode%3E-for-ProtocolError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAFwACgAOAAAAEQABABgAAAAsABcASAALAFsAAgBfAAMAbwABAHMAAAB1ACoA"}]\ ]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); diff --git a/settings.html b/settings.html index 998d2042f..72c3270d5 100644 --- a/settings.html +++ b/settings.html @@ -1 +1 @@ -Settings

    Rustdoc settings

    Back
    \ No newline at end of file +Settings

    Rustdoc settings

    Back
    \ No newline at end of file diff --git a/src/actix_cors/all_or_some.rs.html b/src/actix_cors/all_or_some.rs.html index 17ca33803..b2b65d52f 100644 --- a/src/actix_cors/all_or_some.rs.html +++ b/src/actix_cors/all_or_some.rs.html @@ -1,4 +1,4 @@ -all_or_some.rs - source
    1
    +all_or_some.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_cors/builder.rs.html b/src/actix_cors/builder.rs.html
    index 844486a6c..667bde3c2 100644
    --- a/src/actix_cors/builder.rs.html
    +++ b/src/actix_cors/builder.rs.html
    @@ -1,4 +1,4 @@
    -builder.rs - source
    1
    +builder.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_cors/error.rs.html b/src/actix_cors/error.rs.html
    index 8301f0891..50710aee2 100644
    --- a/src/actix_cors/error.rs.html
    +++ b/src/actix_cors/error.rs.html
    @@ -1,4 +1,4 @@
    -error.rs - source
    1
    +error.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_cors/inner.rs.html b/src/actix_cors/inner.rs.html
    index d8e8d6860..63916256b 100644
    --- a/src/actix_cors/inner.rs.html
    +++ b/src/actix_cors/inner.rs.html
    @@ -1,4 +1,4 @@
    -inner.rs - source
    1
    +inner.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_cors/lib.rs.html b/src/actix_cors/lib.rs.html
    index 414edf3c2..2bfbb5ed2 100644
    --- a/src/actix_cors/lib.rs.html
    +++ b/src/actix_cors/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_cors/middleware.rs.html b/src/actix_cors/middleware.rs.html
    index 2b57a36ae..6d179f524 100644
    --- a/src/actix_cors/middleware.rs.html
    +++ b/src/actix_cors/middleware.rs.html
    @@ -1,4 +1,4 @@
    -middleware.rs - source
    1
    +middleware.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_identity/config.rs.html b/src/actix_identity/config.rs.html
    index fddc84a1d..c632ad7b1 100644
    --- a/src/actix_identity/config.rs.html
    +++ b/src/actix_identity/config.rs.html
    @@ -1,4 +1,4 @@
    -config.rs - source
    1
    +config.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_identity/error.rs.html b/src/actix_identity/error.rs.html
    index c571545db..60ac94ae2 100644
    --- a/src/actix_identity/error.rs.html
    +++ b/src/actix_identity/error.rs.html
    @@ -1,4 +1,4 @@
    -error.rs - source
    1
    +error.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_identity/identity.rs.html b/src/actix_identity/identity.rs.html
    index 5baf04bf5..2cfef837e 100644
    --- a/src/actix_identity/identity.rs.html
    +++ b/src/actix_identity/identity.rs.html
    @@ -1,4 +1,4 @@
    -identity.rs - source
    1
    +identity.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_identity/identity_ext.rs.html b/src/actix_identity/identity_ext.rs.html
    index 902bba1cb..9e5e8a837 100644
    --- a/src/actix_identity/identity_ext.rs.html
    +++ b/src/actix_identity/identity_ext.rs.html
    @@ -1,4 +1,4 @@
    -identity_ext.rs - source
    1
    +identity_ext.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_identity/lib.rs.html b/src/actix_identity/lib.rs.html
    index 7b9092a15..b1dd9829c 100644
    --- a/src/actix_identity/lib.rs.html
    +++ b/src/actix_identity/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_identity/middleware.rs.html b/src/actix_identity/middleware.rs.html
    index 0dda9b74d..83a89aa2b 100644
    --- a/src/actix_identity/middleware.rs.html
    +++ b/src/actix_identity/middleware.rs.html
    @@ -1,4 +1,4 @@
    -middleware.rs - source
    1
    +middleware.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_limitation/builder.rs.html b/src/actix_limitation/builder.rs.html
    index 94d8dae9a..516a70baa 100644
    --- a/src/actix_limitation/builder.rs.html
    +++ b/src/actix_limitation/builder.rs.html
    @@ -1,4 +1,4 @@
    -builder.rs - source
    1
    +builder.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_limitation/errors.rs.html b/src/actix_limitation/errors.rs.html
    index e9393ae9b..25b1a9466 100644
    --- a/src/actix_limitation/errors.rs.html
    +++ b/src/actix_limitation/errors.rs.html
    @@ -1,4 +1,4 @@
    -errors.rs - source
    1
    +errors.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_limitation/lib.rs.html b/src/actix_limitation/lib.rs.html
    index db60e4bf4..cd04fb717 100644
    --- a/src/actix_limitation/lib.rs.html
    +++ b/src/actix_limitation/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_limitation/middleware.rs.html b/src/actix_limitation/middleware.rs.html
    index 5a8dee377..6bc687515 100644
    --- a/src/actix_limitation/middleware.rs.html
    +++ b/src/actix_limitation/middleware.rs.html
    @@ -1,4 +1,4 @@
    -middleware.rs - source
    1
    +middleware.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_limitation/status.rs.html b/src/actix_limitation/status.rs.html
    index 2e7df8616..9101e3aae 100644
    --- a/src/actix_limitation/status.rs.html
    +++ b/src/actix_limitation/status.rs.html
    @@ -1,4 +1,4 @@
    -status.rs - source
    1
    +status.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_protobuf/lib.rs.html b/src/actix_protobuf/lib.rs.html
    index 3b9897892..86106c109 100644
    --- a/src/actix_protobuf/lib.rs.html
    +++ b/src/actix_protobuf/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_session/config.rs.html b/src/actix_session/config.rs.html
    index 006db70d1..f8e729ed2 100644
    --- a/src/actix_session/config.rs.html
    +++ b/src/actix_session/config.rs.html
    @@ -1,4 +1,4 @@
    -config.rs - source
    1
    +config.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_session/lib.rs.html b/src/actix_session/lib.rs.html
    index 043a524cb..6e1383e4d 100644
    --- a/src/actix_session/lib.rs.html
    +++ b/src/actix_session/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_session/middleware.rs.html b/src/actix_session/middleware.rs.html
    index 2cce27e05..f3ba9bdbf 100644
    --- a/src/actix_session/middleware.rs.html
    +++ b/src/actix_session/middleware.rs.html
    @@ -1,4 +1,4 @@
    -middleware.rs - source
    1
    +middleware.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_session/session.rs.html b/src/actix_session/session.rs.html
    index 706d01371..1e9323de8 100644
    --- a/src/actix_session/session.rs.html
    +++ b/src/actix_session/session.rs.html
    @@ -1,4 +1,4 @@
    -session.rs - source
    1
    +session.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_session/session_ext.rs.html b/src/actix_session/session_ext.rs.html
    index b89a686bc..a0e8a188c 100644
    --- a/src/actix_session/session_ext.rs.html
    +++ b/src/actix_session/session_ext.rs.html
    @@ -1,4 +1,4 @@
    -session_ext.rs - source
    1
    +session_ext.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_session/storage/cookie.rs.html b/src/actix_session/storage/cookie.rs.html
    index ff1e417b2..50ecd23f6 100644
    --- a/src/actix_session/storage/cookie.rs.html
    +++ b/src/actix_session/storage/cookie.rs.html
    @@ -1,4 +1,4 @@
    -cookie.rs - source
    1
    +cookie.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_session/storage/interface.rs.html b/src/actix_session/storage/interface.rs.html
    index 489b297e5..6615943ae 100644
    --- a/src/actix_session/storage/interface.rs.html
    +++ b/src/actix_session/storage/interface.rs.html
    @@ -1,4 +1,4 @@
    -interface.rs - source
    1
    +interface.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_session/storage/mod.rs.html b/src/actix_session/storage/mod.rs.html
    index 1a7d68e47..c8fd111ce 100644
    --- a/src/actix_session/storage/mod.rs.html
    +++ b/src/actix_session/storage/mod.rs.html
    @@ -1,4 +1,4 @@
    -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_session/storage/redis_rs.rs.html b/src/actix_session/storage/redis_rs.rs.html
    index 4adcde073..e8e39990c 100644
    --- a/src/actix_session/storage/redis_rs.rs.html
    +++ b/src/actix_session/storage/redis_rs.rs.html
    @@ -1,4 +1,4 @@
    -redis_rs.rs - source
    1
    +redis_rs.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_session/storage/session_key.rs.html b/src/actix_session/storage/session_key.rs.html
    index 19d400dd3..ce5f993c7 100644
    --- a/src/actix_session/storage/session_key.rs.html
    +++ b/src/actix_session/storage/session_key.rs.html
    @@ -1,4 +1,4 @@
    -session_key.rs - source
    1
    +session_key.rs - source
    1
     2
     3
     4
    @@ -62,7 +62,7 @@
     /// Session keys are stored as cookies, therefore they cannot be arbitrary long. Session keys are
     /// required to be smaller than 4064 bytes.
     ///
    -/// ```rust
    +/// ```
     /// use actix_session::storage::SessionKey;
     ///
     /// let key: String = std::iter::repeat('a').take(4065).collect();
    diff --git a/src/actix_session/storage/utils.rs.html b/src/actix_session/storage/utils.rs.html
    index 0dcd8bcb7..f919a7579 100644
    --- a/src/actix_session/storage/utils.rs.html
    +++ b/src/actix_session/storage/utils.rs.html
    @@ -1,4 +1,4 @@
    -utils.rs - source
    1
    +utils.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_settings/error.rs.html b/src/actix_settings/error.rs.html
    index 183909c2f..1db385c08 100644
    --- a/src/actix_settings/error.rs.html
    +++ b/src/actix_settings/error.rs.html
    @@ -1,4 +1,4 @@
    -error.rs - source
    1
    +error.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_settings/lib.rs.html b/src/actix_settings/lib.rs.html
    index e72744ee7..0ae6b51a5 100644
    --- a/src/actix_settings/lib.rs.html
    +++ b/src/actix_settings/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_settings/parse.rs.html b/src/actix_settings/parse.rs.html
    index fbc6e4f11..654773717 100644
    --- a/src/actix_settings/parse.rs.html
    +++ b/src/actix_settings/parse.rs.html
    @@ -1,4 +1,4 @@
    -parse.rs - source
    1
    +parse.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_settings/settings/address.rs.html b/src/actix_settings/settings/address.rs.html
    index 7f7ab5b38..6c8c79cf0 100644
    --- a/src/actix_settings/settings/address.rs.html
    +++ b/src/actix_settings/settings/address.rs.html
    @@ -1,4 +1,4 @@
    -address.rs - source
    1
    +address.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_settings/settings/backlog.rs.html b/src/actix_settings/settings/backlog.rs.html
    index 55cde1585..f458bbb69 100644
    --- a/src/actix_settings/settings/backlog.rs.html
    +++ b/src/actix_settings/settings/backlog.rs.html
    @@ -1,4 +1,4 @@
    -backlog.rs - source
    1
    +backlog.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_settings/settings/keep_alive.rs.html b/src/actix_settings/settings/keep_alive.rs.html
    index 31868ba26..cf074cbc9 100644
    --- a/src/actix_settings/settings/keep_alive.rs.html
    +++ b/src/actix_settings/settings/keep_alive.rs.html
    @@ -1,4 +1,4 @@
    -keep_alive.rs - source
    1
    +keep_alive.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_settings/settings/max_connection_rate.rs.html b/src/actix_settings/settings/max_connection_rate.rs.html
    index 604bc842e..1d69de612 100644
    --- a/src/actix_settings/settings/max_connection_rate.rs.html
    +++ b/src/actix_settings/settings/max_connection_rate.rs.html
    @@ -1,4 +1,4 @@
    -max_connection_rate.rs - source
    1
    +max_connection_rate.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_settings/settings/max_connections.rs.html b/src/actix_settings/settings/max_connections.rs.html
    index fc39f82cf..dd83d6d80 100644
    --- a/src/actix_settings/settings/max_connections.rs.html
    +++ b/src/actix_settings/settings/max_connections.rs.html
    @@ -1,4 +1,4 @@
    -max_connections.rs - source
    1
    +max_connections.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_settings/settings/mod.rs.html b/src/actix_settings/settings/mod.rs.html
    index deffd85a7..86fc1fc19 100644
    --- a/src/actix_settings/settings/mod.rs.html
    +++ b/src/actix_settings/settings/mod.rs.html
    @@ -1,4 +1,4 @@
    -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_settings/settings/mode.rs.html b/src/actix_settings/settings/mode.rs.html
    index 87d6f556b..0e5f3fce7 100644
    --- a/src/actix_settings/settings/mode.rs.html
    +++ b/src/actix_settings/settings/mode.rs.html
    @@ -1,4 +1,4 @@
    -mode.rs - source
    1
    +mode.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_settings/settings/num_workers.rs.html b/src/actix_settings/settings/num_workers.rs.html
    index 1b4bfc983..02d4fe884 100644
    --- a/src/actix_settings/settings/num_workers.rs.html
    +++ b/src/actix_settings/settings/num_workers.rs.html
    @@ -1,4 +1,4 @@
    -num_workers.rs - source
    1
    +num_workers.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_settings/settings/timeout.rs.html b/src/actix_settings/settings/timeout.rs.html
    index ce594df56..d4eff283e 100644
    --- a/src/actix_settings/settings/timeout.rs.html
    +++ b/src/actix_settings/settings/timeout.rs.html
    @@ -1,4 +1,4 @@
    -timeout.rs - source
    1
    +timeout.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_settings/settings/tls.rs.html b/src/actix_settings/settings/tls.rs.html
    index ff0a8ca53..61b016382 100644
    --- a/src/actix_settings/settings/tls.rs.html
    +++ b/src/actix_settings/settings/tls.rs.html
    @@ -1,4 +1,4 @@
    -tls.rs - source
    1
    +tls.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/extractors/basic.rs.html b/src/actix_web_httpauth/extractors/basic.rs.html
    index ae56288aa..4f76cf20a 100644
    --- a/src/actix_web_httpauth/extractors/basic.rs.html
    +++ b/src/actix_web_httpauth/extractors/basic.rs.html
    @@ -1,4 +1,4 @@
    -basic.rs - source
    1
    +basic.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/extractors/bearer.rs.html b/src/actix_web_httpauth/extractors/bearer.rs.html
    index f20b5aaef..e9e4f350c 100644
    --- a/src/actix_web_httpauth/extractors/bearer.rs.html
    +++ b/src/actix_web_httpauth/extractors/bearer.rs.html
    @@ -1,4 +1,4 @@
    -bearer.rs - source
    1
    +bearer.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/extractors/config.rs.html b/src/actix_web_httpauth/extractors/config.rs.html
    index deacaa253..e2547c5df 100644
    --- a/src/actix_web_httpauth/extractors/config.rs.html
    +++ b/src/actix_web_httpauth/extractors/config.rs.html
    @@ -1,4 +1,4 @@
    -config.rs - source
    1
    +config.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/extractors/errors.rs.html b/src/actix_web_httpauth/extractors/errors.rs.html
    index 544c3bc38..22b3e0f2f 100644
    --- a/src/actix_web_httpauth/extractors/errors.rs.html
    +++ b/src/actix_web_httpauth/extractors/errors.rs.html
    @@ -1,4 +1,4 @@
    -errors.rs - source
    1
    +errors.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/extractors/mod.rs.html b/src/actix_web_httpauth/extractors/mod.rs.html
    index 7e0a4a1a3..9eeb03cf8 100644
    --- a/src/actix_web_httpauth/extractors/mod.rs.html
    +++ b/src/actix_web_httpauth/extractors/mod.rs.html
    @@ -1,4 +1,4 @@
    -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/authorization/errors.rs.html b/src/actix_web_httpauth/headers/authorization/errors.rs.html
    index 938b55df4..2c42b276a 100644
    --- a/src/actix_web_httpauth/headers/authorization/errors.rs.html
    +++ b/src/actix_web_httpauth/headers/authorization/errors.rs.html
    @@ -1,4 +1,4 @@
    -errors.rs - source
    1
    +errors.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/authorization/header.rs.html b/src/actix_web_httpauth/headers/authorization/header.rs.html
    index 2357e6973..faa31da1d 100644
    --- a/src/actix_web_httpauth/headers/authorization/header.rs.html
    +++ b/src/actix_web_httpauth/headers/authorization/header.rs.html
    @@ -1,4 +1,4 @@
    -header.rs - source
    1
    +header.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/authorization/mod.rs.html b/src/actix_web_httpauth/headers/authorization/mod.rs.html
    index 628386f31..4f39269a7 100644
    --- a/src/actix_web_httpauth/headers/authorization/mod.rs.html
    +++ b/src/actix_web_httpauth/headers/authorization/mod.rs.html
    @@ -1,4 +1,4 @@
    -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/authorization/scheme/basic.rs.html b/src/actix_web_httpauth/headers/authorization/scheme/basic.rs.html
    index 4f0516139..4f3f0f096 100644
    --- a/src/actix_web_httpauth/headers/authorization/scheme/basic.rs.html
    +++ b/src/actix_web_httpauth/headers/authorization/scheme/basic.rs.html
    @@ -1,4 +1,4 @@
    -basic.rs - source
    1
    +basic.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/authorization/scheme/bearer.rs.html b/src/actix_web_httpauth/headers/authorization/scheme/bearer.rs.html
    index 151944c96..23520d939 100644
    --- a/src/actix_web_httpauth/headers/authorization/scheme/bearer.rs.html
    +++ b/src/actix_web_httpauth/headers/authorization/scheme/bearer.rs.html
    @@ -1,4 +1,4 @@
    -bearer.rs - source
    1
    +bearer.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/authorization/scheme/mod.rs.html b/src/actix_web_httpauth/headers/authorization/scheme/mod.rs.html
    index 8ab262413..ac40b220a 100644
    --- a/src/actix_web_httpauth/headers/authorization/scheme/mod.rs.html
    +++ b/src/actix_web_httpauth/headers/authorization/scheme/mod.rs.html
    @@ -1,4 +1,4 @@
    -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/mod.rs.html b/src/actix_web_httpauth/headers/mod.rs.html
    index cee063619..419786e9b 100644
    --- a/src/actix_web_httpauth/headers/mod.rs.html
    +++ b/src/actix_web_httpauth/headers/mod.rs.html
    @@ -1,4 +1,4 @@
    -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/www_authenticate/challenge/basic.rs.html b/src/actix_web_httpauth/headers/www_authenticate/challenge/basic.rs.html
    index de4b96c36..365540d55 100644
    --- a/src/actix_web_httpauth/headers/www_authenticate/challenge/basic.rs.html
    +++ b/src/actix_web_httpauth/headers/www_authenticate/challenge/basic.rs.html
    @@ -1,4 +1,4 @@
    -basic.rs - source
    1
    +basic.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/builder.rs.html b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/builder.rs.html
    index 80d82a4f6..9682f4594 100644
    --- a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/builder.rs.html
    +++ b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/builder.rs.html
    @@ -1,4 +1,4 @@
    -builder.rs - source
    1
    +builder.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/challenge.rs.html b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/challenge.rs.html
    index 53d33c374..a35234464 100644
    --- a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/challenge.rs.html
    +++ b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/challenge.rs.html
    @@ -1,4 +1,4 @@
    -challenge.rs - source
    1
    +challenge.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/errors.rs.html b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/errors.rs.html
    index 4faa96f82..975c8e84b 100644
    --- a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/errors.rs.html
    +++ b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/errors.rs.html
    @@ -1,4 +1,4 @@
    -errors.rs - source
    1
    +errors.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/mod.rs.html b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/mod.rs.html
    index efab4746b..555c86dfc 100644
    --- a/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/mod.rs.html
    +++ b/src/actix_web_httpauth/headers/www_authenticate/challenge/bearer/mod.rs.html
    @@ -1,4 +1,4 @@
    -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/www_authenticate/challenge/mod.rs.html b/src/actix_web_httpauth/headers/www_authenticate/challenge/mod.rs.html
    index a7dca8159..2ca1dfafc 100644
    --- a/src/actix_web_httpauth/headers/www_authenticate/challenge/mod.rs.html
    +++ b/src/actix_web_httpauth/headers/www_authenticate/challenge/mod.rs.html
    @@ -1,4 +1,4 @@
    -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/www_authenticate/header.rs.html b/src/actix_web_httpauth/headers/www_authenticate/header.rs.html
    index 65d3f093f..43c6d8a87 100644
    --- a/src/actix_web_httpauth/headers/www_authenticate/header.rs.html
    +++ b/src/actix_web_httpauth/headers/www_authenticate/header.rs.html
    @@ -1,4 +1,4 @@
    -header.rs - source
    1
    +header.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/headers/www_authenticate/mod.rs.html b/src/actix_web_httpauth/headers/www_authenticate/mod.rs.html
    index 787ab9c80..3e175c5bf 100644
    --- a/src/actix_web_httpauth/headers/www_authenticate/mod.rs.html
    +++ b/src/actix_web_httpauth/headers/www_authenticate/mod.rs.html
    @@ -1,4 +1,4 @@
    -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/lib.rs.html b/src/actix_web_httpauth/lib.rs.html
    index bd0eade1e..9d3687fa4 100644
    --- a/src/actix_web_httpauth/lib.rs.html
    +++ b/src/actix_web_httpauth/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/middleware.rs.html b/src/actix_web_httpauth/middleware.rs.html
    index e56e02b65..87b08f07d 100644
    --- a/src/actix_web_httpauth/middleware.rs.html
    +++ b/src/actix_web_httpauth/middleware.rs.html
    @@ -1,4 +1,4 @@
    -middleware.rs - source
    1
    +middleware.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_web_httpauth/utils.rs.html b/src/actix_web_httpauth/utils.rs.html
    index 56cfed85e..fa6a15688 100644
    --- a/src/actix_web_httpauth/utils.rs.html
    +++ b/src/actix_web_httpauth/utils.rs.html
    @@ -1,4 +1,4 @@
    -utils.rs - source
    1
    +utils.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_ws/fut.rs.html b/src/actix_ws/fut.rs.html
    index fc39a15ed..600ca1507 100644
    --- a/src/actix_ws/fut.rs.html
    +++ b/src/actix_ws/fut.rs.html
    @@ -1,4 +1,4 @@
    -fut.rs - source
    1
    +fut.rs - source
    1
     2
     3
     4
    @@ -251,7 +251,7 @@
     
         /// Wait for the next item from the message stream
         ///
    -    /// ```rust,no_run
    +    /// ```no_run
         /// # use actix_ws::MessageStream;
         /// # async fn test(mut stream: MessageStream) {
         /// while let Some(Ok(msg)) = stream.recv().await {
    diff --git a/src/actix_ws/lib.rs.html b/src/actix_ws/lib.rs.html
    index 2fe5e19ff..ab05bec22 100644
    --- a/src/actix_ws/lib.rs.html
    +++ b/src/actix_ws/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    diff --git a/src/actix_ws/session.rs.html b/src/actix_ws/session.rs.html
    index 2261acc55..5a5064f1e 100644
    --- a/src/actix_ws/session.rs.html
    +++ b/src/actix_ws/session.rs.html
    @@ -1,4 +1,4 @@
    -session.rs - source
    1
    +session.rs - source
    1
     2
     3
     4
    @@ -235,7 +235,7 @@
     
         /// Send text into the websocket
         ///
    -    /// ```rust,no_run
    +    /// ```no_run
         /// # use actix_ws::Session;
         /// # async fn test(mut session: Session) {
         /// if session.text("Some text").await.is_err() {
    @@ -257,7 +257,7 @@
     
         /// Send raw bytes into the websocket
         ///
    -    /// ```rust,no_run
    +    /// ```no_run
         /// # use actix_ws::Session;
         /// # async fn test(mut session: Session) {
         /// if session.binary(&b"some bytes"[..]).await.is_err() {
    @@ -282,7 +282,7 @@
         /// For many applications, it will be important to send regular pings to keep track of if the
         /// client has disconnected
         ///
    -    /// ```rust,no_run
    +    /// ```no_run
         /// # use actix_ws::Session;
         /// # async fn test(mut session: Session) {
         /// if session.ping(b"").await.is_err() {
    @@ -304,7 +304,7 @@
     
         /// Pong the client
         ///
    -    /// ```rust,no_run
    +    /// ```no_run
         /// # use actix_ws::{Message, Session};
         /// # async fn test(mut session: Session, msg: Message) {
         /// match msg {
    @@ -330,14 +330,14 @@
         ///
         /// Be wary of this method. Continuations represent multiple frames that, when combined, are
         /// presented as a single message. They are useful when the entire contents of a message are
    -    /// not avilable all at once. However, continuations MUST NOT be interrupted by other Text or
    +    /// not available all at once. However, continuations MUST NOT be interrupted by other Text or
         /// Binary messages. Control messages such as Ping, Pong, or Close are allowed to interrupt a
         /// continuation.
         ///
         /// Continuations must be initialized with a First variant, and must be terminated by a Last
         /// variant, with only Continue variants sent in between.
         ///
    -    /// ```rust,no_run
    +    /// ```no_run
         /// # use actix_ws::{Item, Session};
         /// # async fn test(mut session: Session) -> Result<(), Box<dyn std::error::Error>> {
         /// session.continuation(Item::FirstText("Hello".into())).await?;
    @@ -362,7 +362,7 @@
         ///
         /// All clones will return `Err(Closed)` if used after this call
         ///
    -    /// ```rust,no_run
    +    /// ```no_run
         /// # use actix_ws::{Closed, Session};
         /// # async fn test(mut session: Session) -> Result<(), Closed> {
         /// session.close(None).await
    diff --git a/static.files/search-9d4fa2dd5e5a7e17.js b/static.files/search-9d4fa2dd5e5a7e17.js
    new file mode 100644
    index 000000000..e6aab012a
    --- /dev/null
    +++ b/static.files/search-9d4fa2dd5e5a7e17.js
    @@ -0,0 +1,5 @@
    +"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}(function(){const itemTypes=["keyword","primitive","mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","associatedtype","constant","associatedconstant","union","foreigntype","existential","attr","derive","traitalias","generic",];const longItemTypes=["keyword","primitive type","module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","assoc type","constant","assoc const","union","foreign type","existential type","attribute macro","derive macro","trait alias",];const TY_GENERIC=itemTypes.indexOf("generic");const TY_IMPORT=itemTypes.indexOf("import");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";const UNBOXING_LIMIT=5;const REGEX_IDENT=/\p{ID_Start}\p{ID_Continue}*|_\p{ID_Continue}+/uy;const REGEX_INVALID_TYPE_FILTER=/[^a-z]/ui;function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||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;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost,);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1,)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function initSearch(rawSearchIndex){const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;let searchIndex;let searchIndexDeprecated;let searchIndexEmptyDesc;let functionTypeFingerprint;let currentResults;const typeNameIdMap=new Map();const ALIASES=new Map();const typeNameIdOfArray=buildTypeMapIndex("array");const typeNameIdOfSlice=buildTypeMapIndex("slice");const typeNameIdOfArrayOrSlice=buildTypeMapIndex("[]");const typeNameIdOfTuple=buildTypeMapIndex("tuple");const typeNameIdOfUnit=buildTypeMapIndex("unit");const typeNameIdOfTupleOrUnit=buildTypeMapIndex("()");const typeNameIdOfFn=buildTypeMapIndex("fn");const typeNameIdOfFnMut=buildTypeMapIndex("fnmut");const typeNameIdOfFnOnce=buildTypeMapIndex("fnonce");const typeNameIdOfHof=buildTypeMapIndex("->");function buildTypeMapIndex(name,isAssocType){if(name===""||name===null){return null}if(typeNameIdMap.has(name)){const obj=typeNameIdMap.get(name);obj.assocOnly=isAssocType&&obj.assocOnly;return obj.id}else{const id=typeNameIdMap.size;typeNameIdMap.set(name,{id,assocOnly:isAssocType});return id}}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isEndCharacter(c){return"=,>-])".indexOf(c)!==-1}function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function consumeIdent(parserState){REGEX_IDENT.lastIndex=parserState.pos;const match=parserState.userQuery.match(REGEX_IDENT);if(match){parserState.pos+=match[0].length;return true}return false}function isSeparatorCharacter(c){return c===","||c==="="}function isPathSeparator(c){return c===":"||c===" "}function prevIs(parserState,lookingFor){let pos=parserState.pos;while(pos>0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(c!==" "){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function skipWhitespace(parserState){while(parserState.pos0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}const bindingName=parserState.isInBinding;parserState.isInBinding=null;return makePrimitiveElement("never",{bindingName})}const quadcolon=/::\s*::/.exec(path);if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(quadcolon!==null){throw["Unexpected ",quadcolon[0]]}const pathSegments=path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/);if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}const bindingName=parserState.isInBinding;parserState.isInBinding=null;const bindings=new Map();const pathLast=pathSegments[pathSegments.length-1];return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast,normalizedPathLast:pathLast.replace(/_/g,""),generics:generics.filter(gen=>{if(gen.bindingName!==null){if(gen.name!==null){gen.bindingName.generics.unshift(gen)}bindings.set(gen.bindingName.name,gen.bindingName.generics);return false}return true}),bindings,typeFilter,bindingName,}}function getIdentEndPosition(parserState){let afterIdent=consumeIdent(parserState);let end=parserState.pos;let macroExclamation=-1;while(parserState.pos0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]," (not a valid identifier)"]}else{throw["Unexpected ",c," (not a valid identifier)"]}parserState.pos+=1;afterIdent=consumeIdent(parserState);end=parserState.pos}if(macroExclamation!==-1){if(parserState.typeFilter===null){parserState.typeFilter="macro"}else if(parserState.typeFilter!=="macro"){throw["Invalid search type: macro ","!"," and ",parserState.typeFilter," both specified",]}end=macroExclamation}return end}function getFilteredNextElem(query,parserState,elems,isInGenerics){const start=parserState.pos;if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){throw["Expected type filter before ",":"]}getNextElem(query,parserState,elems,isInGenerics);if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}if(elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;getNextElem(query,parserState,elems,isInGenerics)}}function getNextElem(query,parserState,elems,isInGenerics){const generics=[];skipWhitespace(parserState);let start=parserState.pos;let end;if("[(".indexOf(parserState.userQuery[parserState.pos])!==-1){let endChar=")";let name="()";let friendlyName="tuple";if(parserState.userQuery[parserState.pos]==="["){endChar="]";name="[]";friendlyName="slice"}parserState.pos+=1;const{foundSeparator}=getItemsBefore(query,parserState,generics,endChar);const typeFilter=parserState.typeFilter;const bindingName=parserState.isInBinding;parserState.typeFilter=null;parserState.isInBinding=null;for(const gen of generics){if(gen.bindingName!==null){throw["Type parameter ","=",` cannot be within ${friendlyName} `,name]}}if(name==="()"&&!foundSeparator&&generics.length===1&&typeFilter===null){elems.push(generics[0])}else if(name==="()"&&generics.length===1&&generics[0].name==="->"){generics[0].typeFilter=typeFilter;elems.push(generics[0])}else{if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive ",name," and ",typeFilter," both specified",]}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}elems.push(makePrimitiveElement(name,{bindingName,generics}))}}else if(parserState.userQuery[parserState.pos]==="&"){if(parserState.typeFilter!==null&&parserState.typeFilter!=="primitive"){throw["Invalid search type: primitive ","&"," and ",parserState.typeFilter," both specified",]}parserState.typeFilter=null;parserState.pos+=1;let c=parserState.userQuery[parserState.pos];while(c===" "&&parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}else if(parserState.pos=end){throw["Found generics without a path"]}if(parserState.isInBinding){throw["Unexpected ","("," after ","="]}parserState.pos+=1;const typeFilter=parserState.typeFilter;parserState.typeFilter=null;getItemsBefore(query,parserState,generics,")");skipWhitespace(parserState);if(isReturnArrow(parserState)){parserState.pos+=2;skipWhitespace(parserState);getFilteredNextElem(query,parserState,generics,isInGenerics);generics[generics.length-1].bindingName=makePrimitiveElement("output")}else{generics.push(makePrimitiveElement(null,{bindingName:makePrimitiveElement("output"),typeFilter:null,}))}parserState.typeFilter=typeFilter}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}if(parserState.userQuery[parserState.pos]==="="){if(parserState.isInBinding){throw["Cannot write ","="," twice in a binding"]}if(!isInGenerics){throw["Type parameter ","="," must be within generics list"]}const name=parserState.userQuery.slice(start,end).trim();if(name==="!"){throw["Type parameter ","="," key cannot be ","!"," never type"]}if(name.includes("!")){throw["Type parameter ","="," key cannot be ","!"," macro"]}if(name.includes("::")){throw["Type parameter ","="," key cannot contain ","::"," path"]}if(name.includes(":")){throw["Type parameter ","="," key cannot contain ",":"," type"]}parserState.isInBinding={name,generics}}else{elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics,),)}}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let foundSeparator=false;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;const oldIsInBinding=parserState.isInBinding;parserState.isInBinding=null;let hofParameters=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===")"){extra="("}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"," after ","="]}hofParameters=[...elems];elems.length=0;parserState.pos+=2;foundStopChar=true;foundSeparator=false;continue}else if(c===" "){parserState.pos+=1;continue}else if(isSeparatorCharacter(c)){parserState.pos+=1;foundStopChar=true;foundSeparator=true;continue}else if(c===":"&&isPathStart(parserState)){throw["Unexpected ","::",": paths cannot start with ","::"]}else if(isEndCharacter(c)){throw["Unexpected ",c," after ",extra]}if(!foundStopChar){let extra=[];if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",",",", ","=",", or ",endChar,...extra,", found ",c,]}throw["Expected ",","," or ","=",...extra,", found ",c,]}const posBefore=parserState.pos;getFilteredNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;if(hofParameters){foundSeparator=false;if([...elems,...hofParameters].some(x=>x.bindingName)||parserState.isInBinding){throw["Unexpected ","="," within ","->"]}const hofElem=makePrimitiveElement("->",{generics:hofParameters,bindings:new Map([["output",[...elems]]]),typeFilter:null,});elems.length=0;elems[0]=hofElem}parserState.typeFilter=oldTypeFilter;parserState.isInBinding=oldIsInBinding;return{foundSeparator}}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();const match=query.match(REGEX_INVALID_TYPE_FILTER);if(match){throw["Unexpected ",match[0]," in type filter (before ",":",")",]}}function parseInput(query,parserState){let foundStopChar=true;while(parserState.pos"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}else if(parserState.pos>0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}throw["Unexpected ",c]}else if(c===" "){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;getFilteredNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos"]}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,typeFingerprint:new Uint32Array(4),}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&rawSearchIndex.has(elem.value)){return elem.value}return null}function parseQuery(userQuery){function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}for(const constraints of elem.bindings.values()){for(const constraint of constraints){convertTypeFilterOnElem(constraint)}}}userQuery=userQuery.trim().replace(/\r|\n|\t/g," ");const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,isInBinding:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);for(const elem of query.elems){convertTypeFilterOnElem(elem)}for(const elem of query.returned){convertTypeFilterOnElem(elem)}}catch(err){query=newParsedQuery(userQuery);query.error=err;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}async function execQuery(parsedQuery,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function transformResults(results){const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const obj=searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=res[2]+"|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}if(obj.ty===TY_IMPORT&&duplicates.has(res[2])){continue}if(duplicates.has(res[2]+"|"+TY_IMPORT)){continue}duplicates.add(obj.fullPath);duplicates.add(res[2]);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}async function sortResults(results,isType,preferredCrate){const userQuery=parsedQuery.userQuery;const result_list=[];for(const result of results.values()){result.item=searchIndex[result.id];result.word=searchIndex[result.id].word;result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=searchIndexDeprecated.get(aaa.item.crate).contains(aaa.item.bitIndex);b=searchIndexDeprecated.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=searchIndexEmptyDesc.get(aaa.item.crate).contains(aaa.item.bitIndex);b=searchIndexEmptyDesc.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});return transformResults(result_list)}function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return!solutionCb||solutionCb(mgens)}if(!fnTypesIn||fnTypesIn.length===0){return false}const ql=queryElems.length;const fl=fnTypesIn.length;if(ql===1&&queryElems[0].generics.length===0&&queryElems[0].bindings.size===0){const queryElem=queryElems[0];for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}if(fnType.id<0&&queryElem.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,queryElem.id);if(!solutionCb||solutionCb(mgensScratch)){return true}}else if(!solutionCb||solutionCb(mgens?new Map(mgens):null)){return true}}for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}if(fnType.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,0);if(unifyFunctionTypes(whereClause[(-fnType.id)-1],queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,)){return true}}else if(unifyFunctionTypes([...fnType.generics,...Array.from(fnType.bindings.values()).flat()],queryElems,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth+1,)){return true}}return false}const fnTypes=fnTypesIn.slice();const flast=fl-1;const qlast=ql-1;const queryElem=queryElems[qlast];let queryElemsTmp=null;for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==queryElem.id){continue}mgensScratch.set(fnType.id,queryElem.id)}else{mgensScratch=mgens}fnTypes[i]=fnTypes[flast];fnTypes.length=flast;if(!queryElemsTmp){queryElemsTmp=queryElems.slice(0,qlast)}const passesUnification=unifyFunctionTypes(fnTypes,queryElemsTmp,whereClause,mgensScratch,mgensScratch=>{if(fnType.generics.length===0&&queryElem.generics.length===0&&fnType.bindings.size===0&&queryElem.bindings.size===0){return!solutionCb||solutionCb(mgensScratch)}const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth,);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){const passesUnification=unifyFunctionTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth,);if(passesUnification){return true}}return false},unboxingDepth,);if(passesUnification){return true}fnTypes[flast]=fnTypes[i];fnTypes[i]=fnType;fnTypes.length=fl}for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==0){continue}mgensScratch.set(fnType.id,0)}else{mgensScratch=mgens}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;const bindings=fnType.bindings?Array.from(fnType.bindings.values()).flat():[];const passesUnification=unifyFunctionTypes(fnTypes.toSpliced(i,1,...generics,...bindings),queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,);if(passesUnification){return true}}return false}function unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgensIn){if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgensIn){if(mgensIn.has(fnType.id)&&mgensIn.get(fnType.id)!==queryElem.id){return false}for(const[fid,qid]of mgensIn.entries()){if(fnType.id!==fid&&queryElem.id===qid){return false}if(fnType.id===fid&&queryElem.id!==qid){return false}}}return true}else{if(queryElem.id===typeNameIdOfArrayOrSlice&&(fnType.id===typeNameIdOfSlice||fnType.id===typeNameIdOfArray)){}else if(queryElem.id===typeNameIdOfTupleOrUnit&&(fnType.id===typeNameIdOfTuple||fnType.id===typeNameIdOfUnit)){}else if(queryElem.id===typeNameIdOfHof&&(fnType.id===typeNameIdOfFn||fnType.id===typeNameIdOfFnMut||fnType.id===typeNameIdOfFnOnce)){}else if(fnType.id!==queryElem.id||queryElem.id===null){return false}if((fnType.generics.length+fnType.bindings.size)===0&&queryElem.generics.length!==0){return false}if(fnType.bindings.size0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i0){let mgensSolutionSet=[mgensIn];for(const[name,constraints]of queryElem.bindings.entries()){if(mgensSolutionSet.length===0){return false}if(!fnType.bindings.has(name)){return false}const fnTypeBindings=fnType.bindings.get(name);mgensSolutionSet=mgensSolutionSet.flatMap(mgens=>{const newSolutions=[];unifyFunctionTypes(fnTypeBindings,constraints,whereClause,mgens,newMgens=>{newSolutions.push(newMgens);return false},unboxingDepth,);return newSolutions})}if(mgensSolutionSet.length===0){return false}const binds=Array.from(fnType.bindings.entries()).flatMap(entry=>{const[name,constraints]=entry;if(queryElem.bindings.has(name)){return[]}else{return constraints}});if(simplifiedGenerics.length>0){simplifiedGenerics=[...simplifiedGenerics,...binds]}else{simplifiedGenerics=binds}return{simplifiedGenerics,mgens:mgensSolutionSet}}return{simplifiedGenerics,mgens:[mgensIn]}}function unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(fnType.id<0&&queryElem.id>=0){if(!whereClause){return false}if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){return false}const mgensTmp=new Map(mgens);mgensTmp.set(fnType.id,null);return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause,mgensTmp,unboxingDepth,)}else if(fnType.generics.length>0||fnType.bindings.size>0){const simplifiedGenerics=[...fnType.generics,...Array.from(fnType.bindings.values()).flat(),];return checkIfInList(simplifiedGenerics,queryElem,whereClause,mgens,unboxingDepth,)}return false}function checkIfInList(list,elem,whereClause,mgens,unboxingDepth){for(const entry of list){if(checkType(entry,elem,whereClause,mgens,unboxingDepth)){return true}}return false}function checkType(row,elem,whereClause,mgens,unboxingDepth){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(row.bindings.size===0&&elem.bindings.size===0){if(elem.id<0&&mgens===null){return row.id<0||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth+1,)}if(row.id>0&&elem.id>0&&elem.pathWithoutLast.length===0&&typePassesFilter(elem.typeFilter,row.ty)&&elem.generics.length===0&&elem.id!==typeNameIdOfArrayOrSlice&&elem.id!==typeNameIdOfTupleOrUnit&&elem.id!==typeNameIdOfHof){return row.id===elem.id||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth,)}}return unifyFunctionTypes([row],[elem],whereClause,mgens,null,unboxingDepth)}function checkPath(contains,ty){if(contains.length===0){return 0}const maxPathEditDistance=Math.floor(contains.reduce((acc,next)=>acc+next.length,0)/3,);let ret_dist=maxPathEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;pathiter:for(let i=length-clength;i>=0;i-=1){let dist_total=0;for(let x=0;xmaxPathEditDistance){continue pathiter}dist_total+=dist}}ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}return ret_dist>maxPathEditDistance?null:ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,descShard:item.descShard,descIndex:item.descIndex,exactPath:item.exactPath,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,bitIndex:item.bitIndex,implDisambiguator:item.implDisambiguator,}}async function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES.has(filterCrates)&&ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{return searchIndexEmptyDesc.get(alias.crate).contains(alias.bitIndex)?"":searchState.loadDesc(alias)};const[crateDescs,descs]=await Promise.all([Promise.all(crateAliases.map(fetchDesc)),Promise.all(aliases.map(fetchDesc)),]);const pushFunc=alias=>{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach((alias,i)=>{alias.desc=descs[i]});aliases.forEach(pushFunc);crateAliases.forEach((alias,i)=>{alias.desc=crateDescs[i]});crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){if(dist<=maxEditDistance||index!==-1){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance,){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let path_dist=0;const fullId=row.id;const tfpDist=compareTypeFingerprints(fullId,parsedQuery.typeFingerprint,);if(tfpDist!==null){const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem,row.type.where_clause,null,0);const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem,row.type.where_clause,null,0);if(in_args){results_in_args.max_dist=Math.max(results_in_args.max_dist||0,tfpDist);const maxDist=results_in_args.sizenormalizedIndex&&normalizedIndex!==-1)){index=normalizedIndex}if(elem.fullPath.length>1){path_dist=checkPath(elem.pathWithoutLast,row);if(path_dist===null){return}}if(parsedQuery.literalSearch){if(row.word===elem.pathLast){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(row.normalizedName,elem.normalizedPathLast,maxEditDistance);if(index===-1&&dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}const tfpDist=compareTypeFingerprints(row.id,parsedQuery.typeFingerprint,);if(tfpDist===null){return}if(results.size>=MAX_RESULTS&&tfpDist>results.max_dist){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens,null,0,)},0,)){return}results.max_dist=Math.max(results.max_dist||0,tfpDist);addIntoResults(results,row.id,pos,0,tfpDist,0,Number.MAX_VALUE)}function innerRunQuery(){const queryLen=parsedQuery.elems.reduce((acc,next)=>acc+next.pathLast.length,0)+parsedQuery.returned.reduce((acc,next)=>acc+next.pathLast.length,0);const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();function convertNameToId(elem,isAssocType){if(typeNameIdMap.has(elem.normalizedPathLast)&&(isAssocType||!typeNameIdMap.get(elem.normalizedPathLast).assocOnly)){elem.id=typeNameIdMap.get(elem.normalizedPathLast).id}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,{id,assocOnly}]of typeNameIdMap){const dist=editDistance(name,elem.normalizedPathLast,maxEditDistance);if(dist<=matchDist&&dist<=maxEditDistance&&(isAssocType||!assocOnly)){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0&&elem.bindings.size===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.name)){elem.id=genericSymbols.get(elem.name)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.name,elem.id)}if(elem.typeFilter===-1&&elem.name.length>=3){const maxPartDistance=Math.floor(elem.name.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of typeNameIdMap.keys()){const dist=editDistance(name,elem.name,maxPartDistance);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}elem.bindings=new Map(Array.from(elem.bindings.entries()).map(entry=>{const[name,constraints]=entry;if(!typeNameIdMap.has(name)){parsedQuery.error=["Type parameter ",name," does not exist",];return[null,[]]}for(const elem2 of constraints){convertNameToId(elem2)}return[typeNameIdMap.get(name).id,constraints]}),)}const fps=new Set();for(const elem of parsedQuery.elems){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}for(const elem of parsedQuery.returned){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}if(parsedQuery.foundElems===1&&parsedQuery.returned.length===0){if(parsedQuery.elems.length===1){const elem=parsedQuery.elems[0];for(let i=0,nSearchIndex=searchIndex.length;i0){const sortQ=(a,b)=>{const ag=a.generics.length===0&&a.bindings.size===0;const bg=b.generics.length===0&&b.bindings.size===0;if(ag!==bg){return ag-bg}const ai=a.id>0;const bi=b.id>0;return ai-bi};parsedQuery.elems.sort(sortQ);parsedQuery.returned.sort(sortQ);for(let i=0,nSearchIndex=searchIndex.length;i{const descs=await Promise.all(list.map(result=>{return searchIndexEmptyDesc.get(result.crate).contains(result.bitIndex)?"":searchState.loadDesc(result)}));for(const[i,result]of list.entries()){result.desc=descs[i]}}));if(parsedQuery.error!==null&&ret.others.length!==0){ret.query.error=null}return ret}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}function buildHrefAndPath(item){let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;let exactPath=item.exactPath;if(type==="mod"){displayPath=path+"::";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=ROOT_PATH+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor=type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;exactPath=`${myparent.exactPath}::${myparent.name}`;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}if(item.implDisambiguator!==null){anchor=item.implDisambiguator+"/"+anchor}href=ROOT_PATH+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html#"+anchor}else{displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href,`${exactPath}::${name}`]}function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}async function addTab(array,query,display){const extraClass=display?" active":"";const output=document.createElement("div");if(array.length>0){output.className="search-results "+extraClass;for(const item of array){const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=` 
    \ +${item.alias} - see \ +
    `}resultName.insertAdjacentHTML("beforeend",`
    ${alias}\ +${item.displayPath}${name}\ +
    `);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)}}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,array.length]}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}async function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const[ret_others,ret_in_args,ret_returned]=await Promise.all([addTab(results.others,results.query,true),addTab(results.in_args,results.query,false),addTab(results.returned,results.query,false),]);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(rawSearchIndex.size>1){crates=" in 
    "}let output=`

    Results${crates}

    `;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

    Query parser error: "${error.join("")}".

    `;output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
    ";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

    "+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

    `}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

    "+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

    `}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}async function search(forced){const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));await showResults(await execQuery(query,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){return types.length>0?types.map(type=>buildItemSearchType(type,lowercasePaths)):EMPTY_GENERICS_ARRAY}const EMPTY_BINDINGS_MAP=new Map();const EMPTY_GENERICS_ARRAY=[];let TYPES_POOL=new Map();function buildItemSearchType(type,lowercasePaths,isAssocType){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;const BINDINGS_DATA=2;let pathIndex,generics,bindings;if(typeof type==="number"){pathIndex=type;generics=EMPTY_GENERICS_ARRAY;bindings=EMPTY_BINDINGS_MAP}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths,);if(type.length>BINDINGS_DATA&&type[BINDINGS_DATA].length>0){bindings=new Map(type[BINDINGS_DATA].map(binding=>{const[assocType,constraints]=binding;return[buildItemSearchType(assocType,lowercasePaths,true).id,buildItemSearchTypeAll(constraints,lowercasePaths),]}))}else{bindings=EMPTY_BINDINGS_MAP}}let result;if(pathIndex<0){result={id:pathIndex,ty:TY_GENERIC,path:null,exactPath:null,generics,bindings,}}else if(pathIndex===0){result={id:null,ty:null,path:null,exactPath:null,generics,bindings,}}else{const item=lowercasePaths[pathIndex-1];result={id:buildTypeMapIndex(item.name,isAssocType),ty:item.ty,path:item.path,exactPath:item.exactPath,generics,bindings,}}const cr=TYPES_POOL.get(result.id);if(cr){if(cr.generics.length===result.generics.length&&cr.generics!==result.generics&&cr.generics.every((x,i)=>result.generics[i]===x)){result.generics=cr.generics}if(cr.bindings.size===result.bindings.size&&cr.bindings!==result.bindings){let ok=true;for(const[k,v]of cr.bindings.entries()){const v2=result.bindings.get(v);if(!v2){ok=false;break}if(v!==v2&&v.length===v2.length&&v.every((x,i)=>v2[i]===x)){result.bindings.set(k,v)}else if(v!==v2){ok=false;break}}if(ok){result.bindings=cr.bindings}}if(cr.ty===result.ty&&cr.path===result.path&&cr.bindings===result.bindings&&cr.generics===result.generics&&cr.ty===result.ty){return cr}}TYPES_POOL.set(result.id,result);return result}function buildFunctionSearchTypeCallback(lowercasePaths){return functionSearchType=>{if(functionSearchType===0){return null}const INPUTS_DATA=0;const OUTPUT_DATA=1;let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[buildItemSearchType(functionSearchType[INPUTS_DATA],lowercasePaths)]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths,)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[buildItemSearchType(functionSearchType[OUTPUT_DATA],lowercasePaths)]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths,)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;i{k=(~~k+0x7ed55d16)+(k<<12);k=(k ^ 0xc761c23c)^(k>>>19);k=(~~k+0x165667b1)+(k<<5);k=(~~k+0xd3a2646c)^(k<<9);k=(~~k+0xfd7046c5)+(k<<3);return(k ^ 0xb55a4f09)^(k>>>16)};const hashint2=k=>{k=~k+(k<<15);k ^=k>>>12;k+=k<<2;k ^=k>>>4;k=Math.imul(k,2057);return k ^(k>>16)};if(input!==null){const h0a=hashint1(input);const h0b=hashint2(input);const h1a=~~(h0a+Math.imul(h0b,2));const h1b=~~(h0a+Math.imul(h0b,3));const h2a=~~(h0a+Math.imul(h0b,4));const h2b=~~(h0a+Math.imul(h0b,5));output[0]|=(1<<(h0a%32))|(1<<(h1b%32));output[1]|=(1<<(h1a%32))|(1<<(h2b%32));output[2]|=(1<<(h2a%32))|(1<<(h0b%32));fps.add(input)}for(const g of type.generics){buildFunctionTypeFingerprint(g,output,fps)}const fb={id:null,ty:0,generics:EMPTY_GENERICS_ARRAY,bindings:EMPTY_BINDINGS_MAP,};for(const[k,v]of type.bindings.entries()){fb.id=k;fb.generics=v;buildFunctionTypeFingerprint(fb,output,fps)}output[3]=fps.size}function compareTypeFingerprints(fullId,queryFingerprint){const fh0=functionTypeFingerprint[fullId*4];const fh1=functionTypeFingerprint[(fullId*4)+1];const fh2=functionTypeFingerprint[(fullId*4)+2];const[qh0,qh1,qh2]=queryFingerprint;const[in0,in1,in2]=[fh0&qh0,fh1&qh1,fh2&qh2];if((in0 ^ qh0)||(in1 ^ qh1)||(in2 ^ qh2)){return null}return functionTypeFingerprint[(fullId*4)+3]}class VlqHexDecoder{constructor(string,cons){this.string=string;this.cons=cons;this.offset=0;this.backrefQueue=[]}decodeList(){const cb="}".charCodeAt(0);let c=this.string.charCodeAt(this.offset);const ret=[];while(c!==cb){ret.push(this.decode());c=this.string.charCodeAt(this.offset)}this.offset+=1;return ret}decode(){const[ob,la]=["{","`"].map(c=>c.charCodeAt(0));let n=0;let c=this.string.charCodeAt(this.offset);if(c===ob){this.offset+=1;return this.decodeList()}while(c>1];this.offset+=1;return sign?-value:value}next(){const c=this.string.charCodeAt(this.offset);const[zero,ua,la]=["0","@","`"].map(c=>c.charCodeAt(0));if(c>=zero&&c16){this.backrefQueue.pop()}return result}}class RoaringBitmap{constructor(str){const strdecoded=atob(str);const u8array=new Uint8Array(strdecoded.length);for(let j=0;j=4){offsets=[];for(let j=0;j>3]&(1<<(j&0x7))){const runcount=(u8array[i]|(u8array[i+1]<<8));i+=2;this.containers.push(new RoaringBitmapRun(runcount,u8array.slice(i,i+(runcount*4)),));i+=runcount*4}else if(this.cardinalities[j]>=4096){this.containers.push(new RoaringBitmapBits(u8array.slice(i,i+8192)));i+=8192}else{const end=this.cardinalities[j]*2;this.containers.push(new RoaringBitmapArray(this.cardinalities[j],u8array.slice(i,i+end),));i+=end}}}contains(keyvalue){const key=keyvalue>>16;const value=keyvalue&0xFFFF;for(let i=0;i=start&&value<=(start+lenm1)){return true}}return false}}class RoaringBitmapArray{constructor(cardinality,array){this.cardinality=cardinality;this.array=array}contains(value){const l=this.cardinality*2;for(let i=0;i>3]&(1<<(value&7)))}}function buildIndex(rawSearchIndex){searchIndex=[];searchIndexDeprecated=new Map();searchIndexEmptyDesc=new Map();const charA="A".charCodeAt(0);let currentIndex=0;let id=0;for(const crate of rawSearchIndex.values()){id+=crate.t.length+1}functionTypeFingerprint=new Uint32Array((id+1)*4);id=0;for(const[crate,crateCorpus]of rawSearchIndex){const itemDescShardDecoder=new VlqHexDecoder(crateCorpus.D,noop=>noop);let descShard={crate,shard:0,start:0,len:itemDescShardDecoder.next(),promise:null,resolve:null,};const descShardList=[descShard];searchIndexDeprecated.set(crate,new RoaringBitmap(crateCorpus.c));searchIndexEmptyDesc.set(crate,new RoaringBitmap(crateCorpus.e));let descIndex=0;const crateRow={crate,ty:3,name:crate,path:"",descShard,descIndex,exactPath:"",desc:crateCorpus.doc,parent:undefined,type:null,id,word:crate,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),bitIndex:0,implDisambiguator:null,};id+=1;searchIndex.push(crateRow);currentIndex+=1;if(!searchIndexEmptyDesc.get(crate).contains(0)){descIndex+=1}const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemReexports=new Map(crateCorpus.r);const itemParentIdxs=crateCorpus.i;const implDisambiguator=new Map(crateCorpus.b);const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];const itemFunctionDecoder=new VlqHexDecoder(crateCorpus.f,buildFunctionSearchTypeCallback(lowercasePaths),);let len=paths.length;let lastPath=itemPaths.get(0);for(let i=0;i2){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}const exactPath=elem.length>3?itemPaths.get(elem[3]):path;lowercasePaths.push({ty,name:name.toLowerCase(),path,exactPath});paths[i]={ty,name,path,exactPath}}lastPath="";len=itemTypes.length;for(let i=0;i=descShard.len&&!searchIndexEmptyDesc.get(crate).contains(bitIndex)){descShard={crate,shard:descShard.shard+1,start:descShard.start+descShard.len,len:itemDescShardDecoder.next(),promise:null,resolve:null,};descIndex=0;descShardList.push(descShard)}let word="";if(typeof itemNames[i]==="string"){word=itemNames[i].toLowerCase()}const path=itemPaths.has(i)?itemPaths.get(i):lastPath;const type=itemFunctionDecoder.next();if(type!==null){if(type){const fp=functionTypeFingerprint.subarray(id*4,(id+1)*4);const fps=new Set();for(const t of type.inputs){buildFunctionTypeFingerprint(t,fp,fps)}for(const t of type.output){buildFunctionTypeFingerprint(t,fp,fps)}for(const w of type.where_clause){for(const t of w){buildFunctionTypeFingerprint(t,fp,fps)}}}}const row={crate,ty:itemTypes.charCodeAt(i)-charA,name:itemNames[i],path,descShard,descIndex,exactPath:itemReexports.has(i)?itemPaths.get(itemReexports.get(i)):path,parent:itemParentIdxs[i]>0?paths[itemParentIdxs[i]-1]:undefined,type,id,word,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),bitIndex,implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};id+=1;searchIndex.push(row);lastPath=row.path;if(!searchIndexEmptyDesc.get(crate).contains(bitIndex)){descIndex+=1}}if(aliases){const currentCrateAliases=new Map();ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!Object.prototype.hasOwnProperty.call(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=itemTypes.length;searchState.descShards.set(crate,descShardList)}TYPES_POOL=new Map()}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;e.preventDefault();search()}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(true)}buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch(new Map())}})() \ No newline at end of file diff --git a/static.files/search-d52510db62a78183.js b/static.files/search-d52510db62a78183.js deleted file mode 100644 index a2824f297..000000000 --- a/static.files/search-d52510db62a78183.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}(function(){const itemTypes=["keyword","primitive","mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","associatedtype","constant","associatedconstant","union","foreigntype","existential","attr","derive","traitalias","generic",];const longItemTypes=["keyword","primitive type","module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","assoc type","constant","assoc const","union","foreign type","existential type","attribute macro","derive macro","trait alias",];const TY_GENERIC=itemTypes.indexOf("generic");const TY_IMPORT=itemTypes.indexOf("import");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";const UNBOXING_LIMIT=5;function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||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;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost,);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1,)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function initSearch(rawSearchIndex){const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;let searchIndex;let searchIndexDeprecated;let searchIndexEmptyDesc;let functionTypeFingerprint;let currentResults;const typeNameIdMap=new Map();const ALIASES=new Map();const typeNameIdOfArray=buildTypeMapIndex("array");const typeNameIdOfSlice=buildTypeMapIndex("slice");const typeNameIdOfArrayOrSlice=buildTypeMapIndex("[]");const typeNameIdOfTuple=buildTypeMapIndex("tuple");const typeNameIdOfUnit=buildTypeMapIndex("unit");const typeNameIdOfTupleOrUnit=buildTypeMapIndex("()");const typeNameIdOfFn=buildTypeMapIndex("fn");const typeNameIdOfFnMut=buildTypeMapIndex("fnmut");const typeNameIdOfFnOnce=buildTypeMapIndex("fnonce");const typeNameIdOfHof=buildTypeMapIndex("->");function buildTypeMapIndex(name,isAssocType){if(name===""||name===null){return null}if(typeNameIdMap.has(name)){const obj=typeNameIdMap.get(name);obj.assocOnly=isAssocType&&obj.assocOnly;return obj.id}else{const id=typeNameIdMap.size;typeNameIdMap.set(name,{id,assocOnly:isAssocType});return id}}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isEndCharacter(c){return"=,>-])".indexOf(c)!==-1}function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","||c==="="}function isPathSeparator(c){return c===":"||c===" "}function prevIs(parserState,lookingFor){let pos=parserState.pos;while(pos>0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(c!==" "){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function skipWhitespace(parserState){while(parserState.pos0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}const bindingName=parserState.isInBinding;parserState.isInBinding=null;return makePrimitiveElement("never",{bindingName})}const quadcolon=/::\s*::/.exec(path);if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(quadcolon!==null){throw["Unexpected ",quadcolon[0]]}const pathSegments=path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/);if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}const bindingName=parserState.isInBinding;parserState.isInBinding=null;const bindings=new Map();const pathLast=pathSegments[pathSegments.length-1];return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast,normalizedPathLast:pathLast.replace(/_/g,""),generics:generics.filter(gen=>{if(gen.bindingName!==null){if(gen.name!==null){gen.bindingName.generics.unshift(gen)}bindings.set(gen.bindingName.name,gen.bindingName.generics);return false}return true}),bindings,typeFilter,bindingName,}}function getIdentEndPosition(parserState){const start=parserState.pos;let end=parserState.pos;let foundExclamation=-1;while(parserState.pos0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}else{throw["Unexpected ",c]}}parserState.pos+=1;end=parserState.pos}if(foundExclamation!==-1&&foundExclamation!==start&&isIdentCharacter(parserState.userQuery[foundExclamation-1])){if(parserState.typeFilter===null){parserState.typeFilter="macro"}else if(parserState.typeFilter!=="macro"){throw["Invalid search type: macro ","!"," and ",parserState.typeFilter," both specified",]}end=foundExclamation}return end}function getFilteredNextElem(query,parserState,elems,isInGenerics){const start=parserState.pos;if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){throw["Expected type filter before ",":"]}getNextElem(query,parserState,elems,isInGenerics);if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}if(elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;getNextElem(query,parserState,elems,isInGenerics)}}function getNextElem(query,parserState,elems,isInGenerics){const generics=[];skipWhitespace(parserState);let start=parserState.pos;let end;if("[(".indexOf(parserState.userQuery[parserState.pos])!==-1){let endChar=")";let name="()";let friendlyName="tuple";if(parserState.userQuery[parserState.pos]==="["){endChar="]";name="[]";friendlyName="slice"}parserState.pos+=1;const{foundSeparator}=getItemsBefore(query,parserState,generics,endChar);const typeFilter=parserState.typeFilter;const bindingName=parserState.isInBinding;parserState.typeFilter=null;parserState.isInBinding=null;for(const gen of generics){if(gen.bindingName!==null){throw["Type parameter ","=",` cannot be within ${friendlyName} `,name]}}if(name==="()"&&!foundSeparator&&generics.length===1&&typeFilter===null){elems.push(generics[0])}else if(name==="()"&&generics.length===1&&generics[0].name==="->"){generics[0].typeFilter=typeFilter;elems.push(generics[0])}else{if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive ",name," and ",typeFilter," both specified",]}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}elems.push(makePrimitiveElement(name,{bindingName,generics}))}}else if(parserState.userQuery[parserState.pos]==="&"){if(parserState.typeFilter!==null&&parserState.typeFilter!=="primitive"){throw["Invalid search type: primitive ","&"," and ",parserState.typeFilter," both specified",]}parserState.typeFilter=null;parserState.pos+=1;let c=parserState.userQuery[parserState.pos];while(c===" "&&parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}else if(parserState.pos=end){throw["Found generics without a path"]}if(parserState.isInBinding){throw["Unexpected ","("," after ","="]}parserState.pos+=1;const typeFilter=parserState.typeFilter;parserState.typeFilter=null;getItemsBefore(query,parserState,generics,")");skipWhitespace(parserState);if(isReturnArrow(parserState)){parserState.pos+=2;skipWhitespace(parserState);getFilteredNextElem(query,parserState,generics,isInGenerics);generics[generics.length-1].bindingName=makePrimitiveElement("output")}else{generics.push(makePrimitiveElement(null,{bindingName:makePrimitiveElement("output"),typeFilter:null,}))}parserState.typeFilter=typeFilter}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}if(parserState.userQuery[parserState.pos]==="="){if(parserState.isInBinding){throw["Cannot write ","="," twice in a binding"]}if(!isInGenerics){throw["Type parameter ","="," must be within generics list"]}const name=parserState.userQuery.slice(start,end).trim();if(name==="!"){throw["Type parameter ","="," key cannot be ","!"," never type"]}if(name.includes("!")){throw["Type parameter ","="," key cannot be ","!"," macro"]}if(name.includes("::")){throw["Type parameter ","="," key cannot contain ","::"," path"]}if(name.includes(":")){throw["Type parameter ","="," key cannot contain ",":"," type"]}parserState.isInBinding={name,generics}}else{elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics,),)}}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let foundSeparator=false;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;const oldIsInBinding=parserState.isInBinding;parserState.isInBinding=null;let hofParameters=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===")"){extra="("}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"," after ","="]}hofParameters=[...elems];elems.length=0;parserState.pos+=2;foundStopChar=true;foundSeparator=false;continue}else if(c===" "){parserState.pos+=1;continue}else if(isSeparatorCharacter(c)){parserState.pos+=1;foundStopChar=true;foundSeparator=true;continue}else if(c===":"&&isPathStart(parserState)){throw["Unexpected ","::",": paths cannot start with ","::"]}else if(isEndCharacter(c)){throw["Unexpected ",c," after ",extra]}if(!foundStopChar){let extra=[];if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",",",", ","=",", or ",endChar,...extra,", found ",c,]}throw["Expected ",","," or ","=",...extra,", found ",c,]}const posBefore=parserState.pos;getFilteredNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;if(hofParameters){foundSeparator=false;if([...elems,...hofParameters].some(x=>x.bindingName)||parserState.isInBinding){throw["Unexpected ","="," within ","->"]}const hofElem=makePrimitiveElement("->",{generics:hofParameters,bindings:new Map([["output",[...elems]]]),typeFilter:null,});elems.length=0;elems[0]=hofElem}parserState.typeFilter=oldTypeFilter;parserState.isInBinding=oldIsInBinding;return{foundSeparator}}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();for(const c in query){if(!isIdentCharacter(query[c])){throw["Unexpected ",query[c]," in type filter (before ",":",")",]}}}function parseInput(query,parserState){let foundStopChar=true;while(parserState.pos"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}else if(parserState.pos>0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}throw["Unexpected ",c]}else if(c===" "){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;getFilteredNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos"]}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,typeFingerprint:new Uint32Array(4),}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&rawSearchIndex.has(elem.value)){return elem.value}return null}function parseQuery(userQuery){function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}for(const constraints of elem.bindings.values()){for(const constraint of constraints){convertTypeFilterOnElem(constraint)}}}userQuery=userQuery.trim().replace(/\r|\n|\t/g," ");const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,isInBinding:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);for(const elem of query.elems){convertTypeFilterOnElem(elem)}for(const elem of query.returned){convertTypeFilterOnElem(elem)}}catch(err){query=newParsedQuery(userQuery);query.error=err;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}async function execQuery(parsedQuery,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function transformResults(results){const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const obj=searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=res[2]+"|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}if(obj.ty===TY_IMPORT&&duplicates.has(res[2])){continue}if(duplicates.has(res[2]+"|"+TY_IMPORT)){continue}duplicates.add(obj.fullPath);duplicates.add(res[2]);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}async function sortResults(results,isType,preferredCrate){const userQuery=parsedQuery.userQuery;const result_list=[];for(const result of results.values()){result.item=searchIndex[result.id];result.word=searchIndex[result.id].word;result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=searchIndexDeprecated.get(aaa.item.crate).contains(aaa.item.bitIndex);b=searchIndexDeprecated.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=searchIndexEmptyDesc.get(aaa.item.crate).contains(aaa.item.bitIndex);b=searchIndexEmptyDesc.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});return transformResults(result_list)}function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return!solutionCb||solutionCb(mgens)}if(!fnTypesIn||fnTypesIn.length===0){return false}const ql=queryElems.length;const fl=fnTypesIn.length;if(ql===1&&queryElems[0].generics.length===0&&queryElems[0].bindings.size===0){const queryElem=queryElems[0];for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}if(fnType.id<0&&queryElem.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,queryElem.id);if(!solutionCb||solutionCb(mgensScratch)){return true}}else if(!solutionCb||solutionCb(mgens?new Map(mgens):null)){return true}}for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}if(fnType.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,0);if(unifyFunctionTypes(whereClause[(-fnType.id)-1],queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,)){return true}}else if(unifyFunctionTypes([...fnType.generics,...Array.from(fnType.bindings.values()).flat()],queryElems,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth+1,)){return true}}return false}const fnTypes=fnTypesIn.slice();const flast=fl-1;const qlast=ql-1;const queryElem=queryElems[qlast];let queryElemsTmp=null;for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==queryElem.id){continue}mgensScratch.set(fnType.id,queryElem.id)}else{mgensScratch=mgens}fnTypes[i]=fnTypes[flast];fnTypes.length=flast;if(!queryElemsTmp){queryElemsTmp=queryElems.slice(0,qlast)}const passesUnification=unifyFunctionTypes(fnTypes,queryElemsTmp,whereClause,mgensScratch,mgensScratch=>{if(fnType.generics.length===0&&queryElem.generics.length===0&&fnType.bindings.size===0&&queryElem.bindings.size===0){return!solutionCb||solutionCb(mgensScratch)}const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth,);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){const passesUnification=unifyFunctionTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth,);if(passesUnification){return true}}return false},unboxingDepth,);if(passesUnification){return true}fnTypes[flast]=fnTypes[i];fnTypes[i]=fnType;fnTypes.length=fl}for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==0){continue}mgensScratch.set(fnType.id,0)}else{mgensScratch=mgens}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;const bindings=fnType.bindings?Array.from(fnType.bindings.values()).flat():[];const passesUnification=unifyFunctionTypes(fnTypes.toSpliced(i,1,...generics,...bindings),queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,);if(passesUnification){return true}}return false}function unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgensIn){if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgensIn){if(mgensIn.has(fnType.id)&&mgensIn.get(fnType.id)!==queryElem.id){return false}for(const[fid,qid]of mgensIn.entries()){if(fnType.id!==fid&&queryElem.id===qid){return false}if(fnType.id===fid&&queryElem.id!==qid){return false}}}return true}else{if(queryElem.id===typeNameIdOfArrayOrSlice&&(fnType.id===typeNameIdOfSlice||fnType.id===typeNameIdOfArray)){}else if(queryElem.id===typeNameIdOfTupleOrUnit&&(fnType.id===typeNameIdOfTuple||fnType.id===typeNameIdOfUnit)){}else if(queryElem.id===typeNameIdOfHof&&(fnType.id===typeNameIdOfFn||fnType.id===typeNameIdOfFnMut||fnType.id===typeNameIdOfFnOnce)){}else if(fnType.id!==queryElem.id||queryElem.id===null){return false}if((fnType.generics.length+fnType.bindings.size)===0&&queryElem.generics.length!==0){return false}if(fnType.bindings.size0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i0){let mgensSolutionSet=[mgensIn];for(const[name,constraints]of queryElem.bindings.entries()){if(mgensSolutionSet.length===0){return false}if(!fnType.bindings.has(name)){return false}const fnTypeBindings=fnType.bindings.get(name);mgensSolutionSet=mgensSolutionSet.flatMap(mgens=>{const newSolutions=[];unifyFunctionTypes(fnTypeBindings,constraints,whereClause,mgens,newMgens=>{newSolutions.push(newMgens);return false},unboxingDepth,);return newSolutions})}if(mgensSolutionSet.length===0){return false}const binds=Array.from(fnType.bindings.entries()).flatMap(entry=>{const[name,constraints]=entry;if(queryElem.bindings.has(name)){return[]}else{return constraints}});if(simplifiedGenerics.length>0){simplifiedGenerics=[...simplifiedGenerics,...binds]}else{simplifiedGenerics=binds}return{simplifiedGenerics,mgens:mgensSolutionSet}}return{simplifiedGenerics,mgens:[mgensIn]}}function unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(fnType.id<0&&queryElem.id>=0){if(!whereClause){return false}if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){return false}const mgensTmp=new Map(mgens);mgensTmp.set(fnType.id,null);return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause,mgensTmp,unboxingDepth,)}else if(fnType.generics.length>0||fnType.bindings.size>0){const simplifiedGenerics=[...fnType.generics,...Array.from(fnType.bindings.values()).flat(),];return checkIfInList(simplifiedGenerics,queryElem,whereClause,mgens,unboxingDepth,)}return false}function checkIfInList(list,elem,whereClause,mgens,unboxingDepth){for(const entry of list){if(checkType(entry,elem,whereClause,mgens,unboxingDepth)){return true}}return false}function checkType(row,elem,whereClause,mgens,unboxingDepth){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(row.bindings.size===0&&elem.bindings.size===0){if(elem.id<0&&mgens===null){return row.id<0||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth+1,)}if(row.id>0&&elem.id>0&&elem.pathWithoutLast.length===0&&typePassesFilter(elem.typeFilter,row.ty)&&elem.generics.length===0&&elem.id!==typeNameIdOfArrayOrSlice&&elem.id!==typeNameIdOfTupleOrUnit&&elem.id!==typeNameIdOfHof){return row.id===elem.id||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth,)}}return unifyFunctionTypes([row],[elem],whereClause,mgens,null,unboxingDepth)}function checkPath(contains,ty){if(contains.length===0){return 0}const maxPathEditDistance=Math.floor(contains.reduce((acc,next)=>acc+next.length,0)/3,);let ret_dist=maxPathEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;pathiter:for(let i=length-clength;i>=0;i-=1){let dist_total=0;for(let x=0;xmaxPathEditDistance){continue pathiter}dist_total+=dist}}ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}return ret_dist>maxPathEditDistance?null:ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,descShard:item.descShard,descIndex:item.descIndex,exactPath:item.exactPath,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,bitIndex:item.bitIndex,implDisambiguator:item.implDisambiguator,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES.has(filterCrates)&&ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){if(dist<=maxEditDistance||index!==-1){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance,){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let path_dist=0;const fullId=row.id;const tfpDist=compareTypeFingerprints(fullId,parsedQuery.typeFingerprint,);if(tfpDist!==null){const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem,row.type.where_clause,null,0);const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem,row.type.where_clause,null,0);if(in_args){results_in_args.max_dist=Math.max(results_in_args.max_dist||0,tfpDist);const maxDist=results_in_args.sizenormalizedIndex&&normalizedIndex!==-1)){index=normalizedIndex}if(elem.fullPath.length>1){path_dist=checkPath(elem.pathWithoutLast,row);if(path_dist===null){return}}if(parsedQuery.literalSearch){if(row.word===elem.pathLast){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(row.normalizedName,elem.normalizedPathLast,maxEditDistance);if(index===-1&&dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}const tfpDist=compareTypeFingerprints(row.id,parsedQuery.typeFingerprint,);if(tfpDist===null){return}if(results.size>=MAX_RESULTS&&tfpDist>results.max_dist){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens,null,0,)},0,)){return}results.max_dist=Math.max(results.max_dist||0,tfpDist);addIntoResults(results,row.id,pos,0,tfpDist,0,Number.MAX_VALUE)}function innerRunQuery(){const queryLen=parsedQuery.elems.reduce((acc,next)=>acc+next.pathLast.length,0)+parsedQuery.returned.reduce((acc,next)=>acc+next.pathLast.length,0);const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();function convertNameToId(elem,isAssocType){if(typeNameIdMap.has(elem.normalizedPathLast)&&(isAssocType||!typeNameIdMap.get(elem.normalizedPathLast).assocOnly)){elem.id=typeNameIdMap.get(elem.normalizedPathLast).id}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,{id,assocOnly}]of typeNameIdMap){const dist=editDistance(name,elem.normalizedPathLast,maxEditDistance);if(dist<=matchDist&&dist<=maxEditDistance&&(isAssocType||!assocOnly)){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0&&elem.bindings.size===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.name)){elem.id=genericSymbols.get(elem.name)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.name,elem.id)}if(elem.typeFilter===-1&&elem.name.length>=3){const maxPartDistance=Math.floor(elem.name.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of typeNameIdMap.keys()){const dist=editDistance(name,elem.name,maxPartDistance);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}elem.bindings=new Map(Array.from(elem.bindings.entries()).map(entry=>{const[name,constraints]=entry;if(!typeNameIdMap.has(name)){parsedQuery.error=["Type parameter ",name," does not exist",];return[null,[]]}for(const elem2 of constraints){convertNameToId(elem2)}return[typeNameIdMap.get(name).id,constraints]}),)}const fps=new Set();for(const elem of parsedQuery.elems){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}for(const elem of parsedQuery.returned){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}if(parsedQuery.foundElems===1&&parsedQuery.returned.length===0){if(parsedQuery.elems.length===1){const elem=parsedQuery.elems[0];for(let i=0,nSearchIndex=searchIndex.length;i0){const sortQ=(a,b)=>{const ag=a.generics.length===0&&a.bindings.size===0;const bg=b.generics.length===0&&b.bindings.size===0;if(ag!==bg){return ag-bg}const ai=a.id>0;const bi=b.id>0;return ai-bi};parsedQuery.elems.sort(sortQ);parsedQuery.returned.sort(sortQ);for(let i=0,nSearchIndex=searchIndex.length;i{const descs=await Promise.all(list.map(result=>{return searchIndexEmptyDesc.get(result.crate).contains(result.bitIndex)?"":searchState.loadDesc(result)}));for(const[i,result]of list.entries()){result.desc=descs[i]}}));if(parsedQuery.error!==null&&ret.others.length!==0){ret.query.error=null}return ret}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}function buildHrefAndPath(item){let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;let exactPath=item.exactPath;if(type==="mod"){displayPath=path+"::";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=ROOT_PATH+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor=type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;exactPath=`${myparent.exactPath}::${myparent.name}`;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}if(item.implDisambiguator!==null){anchor=item.implDisambiguator+"/"+anchor}href=ROOT_PATH+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html#"+anchor}else{displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href,`${exactPath}::${name}`]}function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}async function addTab(array,query,display){const extraClass=display?" active":"";const output=document.createElement("div");if(array.length>0){output.className="search-results "+extraClass;for(const item of array){const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=`
    \ -${item.alias} - see \ -
    `}resultName.insertAdjacentHTML("beforeend",`
    ${alias}\ -${item.displayPath}${name}\ -
    `);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)}}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,array.length]}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}async function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const[ret_others,ret_in_args,ret_returned]=await Promise.all([addTab(results.others,results.query,true),addTab(results.in_args,results.query,false),addTab(results.returned,results.query,false),]);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(rawSearchIndex.size>1){crates=" in 
    "}let output=`

    Results${crates}

    `;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

    Query parser error: "${error.join("")}".

    `;output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
    ";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

    "+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

    `}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

    "+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

    `}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}async function search(forced){const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));await showResults(await execQuery(query,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){return types.length>0?types.map(type=>buildItemSearchType(type,lowercasePaths)):EMPTY_GENERICS_ARRAY}const EMPTY_BINDINGS_MAP=new Map();const EMPTY_GENERICS_ARRAY=[];let TYPES_POOL=new Map();function buildItemSearchType(type,lowercasePaths,isAssocType){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;const BINDINGS_DATA=2;let pathIndex,generics,bindings;if(typeof type==="number"){pathIndex=type;generics=EMPTY_GENERICS_ARRAY;bindings=EMPTY_BINDINGS_MAP}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths,);if(type.length>BINDINGS_DATA&&type[BINDINGS_DATA].length>0){bindings=new Map(type[BINDINGS_DATA].map(binding=>{const[assocType,constraints]=binding;return[buildItemSearchType(assocType,lowercasePaths,true).id,buildItemSearchTypeAll(constraints,lowercasePaths),]}))}else{bindings=EMPTY_BINDINGS_MAP}}let result;if(pathIndex<0){result={id:pathIndex,ty:TY_GENERIC,path:null,exactPath:null,generics,bindings,}}else if(pathIndex===0){result={id:null,ty:null,path:null,exactPath:null,generics,bindings,}}else{const item=lowercasePaths[pathIndex-1];result={id:buildTypeMapIndex(item.name,isAssocType),ty:item.ty,path:item.path,exactPath:item.exactPath,generics,bindings,}}const cr=TYPES_POOL.get(result.id);if(cr){if(cr.generics.length===result.generics.length&&cr.generics!==result.generics&&cr.generics.every((x,i)=>result.generics[i]===x)){result.generics=cr.generics}if(cr.bindings.size===result.bindings.size&&cr.bindings!==result.bindings){let ok=true;for(const[k,v]of cr.bindings.entries()){const v2=result.bindings.get(v);if(!v2){ok=false;break}if(v!==v2&&v.length===v2.length&&v.every((x,i)=>v2[i]===x)){result.bindings.set(k,v)}else if(v!==v2){ok=false;break}}if(ok){result.bindings=cr.bindings}}if(cr.ty===result.ty&&cr.path===result.path&&cr.bindings===result.bindings&&cr.generics===result.generics&&cr.ty===result.ty){return cr}}TYPES_POOL.set(result.id,result);return result}function buildFunctionSearchTypeCallback(lowercasePaths){return functionSearchType=>{if(functionSearchType===0){return null}const INPUTS_DATA=0;const OUTPUT_DATA=1;let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[buildItemSearchType(functionSearchType[INPUTS_DATA],lowercasePaths)]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths,)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[buildItemSearchType(functionSearchType[OUTPUT_DATA],lowercasePaths)]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths,)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;i{k=(~~k+0x7ed55d16)+(k<<12);k=(k ^ 0xc761c23c)^(k>>>19);k=(~~k+0x165667b1)+(k<<5);k=(~~k+0xd3a2646c)^(k<<9);k=(~~k+0xfd7046c5)+(k<<3);return(k ^ 0xb55a4f09)^(k>>>16)};const hashint2=k=>{k=~k+(k<<15);k ^=k>>>12;k+=k<<2;k ^=k>>>4;k=Math.imul(k,2057);return k ^(k>>16)};if(input!==null){const h0a=hashint1(input);const h0b=hashint2(input);const h1a=~~(h0a+Math.imul(h0b,2));const h1b=~~(h0a+Math.imul(h0b,3));const h2a=~~(h0a+Math.imul(h0b,4));const h2b=~~(h0a+Math.imul(h0b,5));output[0]|=(1<<(h0a%32))|(1<<(h1b%32));output[1]|=(1<<(h1a%32))|(1<<(h2b%32));output[2]|=(1<<(h2a%32))|(1<<(h0b%32));fps.add(input)}for(const g of type.generics){buildFunctionTypeFingerprint(g,output,fps)}const fb={id:null,ty:0,generics:EMPTY_GENERICS_ARRAY,bindings:EMPTY_BINDINGS_MAP,};for(const[k,v]of type.bindings.entries()){fb.id=k;fb.generics=v;buildFunctionTypeFingerprint(fb,output,fps)}output[3]=fps.size}function compareTypeFingerprints(fullId,queryFingerprint){const fh0=functionTypeFingerprint[fullId*4];const fh1=functionTypeFingerprint[(fullId*4)+1];const fh2=functionTypeFingerprint[(fullId*4)+2];const[qh0,qh1,qh2]=queryFingerprint;const[in0,in1,in2]=[fh0&qh0,fh1&qh1,fh2&qh2];if((in0 ^ qh0)||(in1 ^ qh1)||(in2 ^ qh2)){return null}return functionTypeFingerprint[(fullId*4)+3]}class VlqHexDecoder{constructor(string,cons){this.string=string;this.cons=cons;this.offset=0;this.backrefQueue=[]}decodeList(){const cb="}".charCodeAt(0);let c=this.string.charCodeAt(this.offset);const ret=[];while(c!==cb){ret.push(this.decode());c=this.string.charCodeAt(this.offset)}this.offset+=1;return ret}decode(){const[ob,la]=["{","`"].map(c=>c.charCodeAt(0));let n=0;let c=this.string.charCodeAt(this.offset);if(c===ob){this.offset+=1;return this.decodeList()}while(c>1];this.offset+=1;return sign?-value:value}next(){const c=this.string.charCodeAt(this.offset);const[zero,ua,la]=["0","@","`"].map(c=>c.charCodeAt(0));if(c>=zero&&c16){this.backrefQueue.pop()}return result}}class RoaringBitmap{constructor(str){const strdecoded=atob(str);const u8array=new Uint8Array(strdecoded.length);for(let j=0;j=4){offsets=[];for(let j=0;j>3]&(1<<(j&0x7))){const runcount=(u8array[i]|(u8array[i+1]<<8));i+=2;this.containers.push(new RoaringBitmapRun(runcount,u8array.slice(i,i+(runcount*4)),));i+=runcount*4}else if(this.cardinalities[j]>=4096){this.containers.push(new RoaringBitmapBits(u8array.slice(i,i+8192)));i+=8192}else{const end=this.cardinalities[j]*2;this.containers.push(new RoaringBitmapArray(this.cardinalities[j],u8array.slice(i,i+end),));i+=end}}}contains(keyvalue){const key=keyvalue>>16;const value=keyvalue&0xFFFF;for(let i=0;i=start&&value<=(start+lenm1)){return true}}return false}}class RoaringBitmapArray{constructor(cardinality,array){this.cardinality=cardinality;this.array=array}contains(value){const l=this.cardinality*2;for(let i=0;i>3]&(1<<(value&7)))}}function buildIndex(rawSearchIndex){searchIndex=[];searchIndexDeprecated=new Map();searchIndexEmptyDesc=new Map();const charA="A".charCodeAt(0);let currentIndex=0;let id=0;for(const crate of rawSearchIndex.values()){id+=crate.t.length+1}functionTypeFingerprint=new Uint32Array((id+1)*4);id=0;for(const[crate,crateCorpus]of rawSearchIndex){const itemDescShardDecoder=new VlqHexDecoder(crateCorpus.D,noop=>noop);let descShard={crate,shard:0,start:0,len:itemDescShardDecoder.next(),promise:null,resolve:null,};const descShardList=[descShard];searchIndexDeprecated.set(crate,new RoaringBitmap(crateCorpus.c));searchIndexEmptyDesc.set(crate,new RoaringBitmap(crateCorpus.e));let descIndex=0;const crateRow={crate,ty:3,name:crate,path:"",descShard,descIndex,exactPath:"",desc:crateCorpus.doc,parent:undefined,type:null,id,word:crate,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),bitIndex:0,implDisambiguator:null,};id+=1;searchIndex.push(crateRow);currentIndex+=1;if(!searchIndexEmptyDesc.get(crate).contains(0)){descIndex+=1}const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemReexports=new Map(crateCorpus.r);const itemParentIdxs=crateCorpus.i;const implDisambiguator=new Map(crateCorpus.b);const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];const itemFunctionDecoder=new VlqHexDecoder(crateCorpus.f,buildFunctionSearchTypeCallback(lowercasePaths),);let len=paths.length;let lastPath=itemPaths.get(0);for(let i=0;i2){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}const exactPath=elem.length>3?itemPaths.get(elem[3]):path;lowercasePaths.push({ty,name:name.toLowerCase(),path,exactPath});paths[i]={ty,name,path,exactPath}}lastPath="";len=itemTypes.length;for(let i=0;i=descShard.len&&!searchIndexEmptyDesc.get(crate).contains(bitIndex)){descShard={crate,shard:descShard.shard+1,start:descShard.start+descShard.len,len:itemDescShardDecoder.next(),promise:null,resolve:null,};descIndex=0;descShardList.push(descShard)}let word="";if(typeof itemNames[i]==="string"){word=itemNames[i].toLowerCase()}const path=itemPaths.has(i)?itemPaths.get(i):lastPath;const type=itemFunctionDecoder.next();if(type!==null){if(type){const fp=functionTypeFingerprint.subarray(id*4,(id+1)*4);const fps=new Set();for(const t of type.inputs){buildFunctionTypeFingerprint(t,fp,fps)}for(const t of type.output){buildFunctionTypeFingerprint(t,fp,fps)}for(const w of type.where_clause){for(const t of w){buildFunctionTypeFingerprint(t,fp,fps)}}}}const row={crate,ty:itemTypes.charCodeAt(i)-charA,name:itemNames[i],path,descShard,descIndex,exactPath:itemReexports.has(i)?itemPaths.get(itemReexports.get(i)):path,parent:itemParentIdxs[i]>0?paths[itemParentIdxs[i]-1]:undefined,type,id,word,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),bitIndex,implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};id+=1;searchIndex.push(row);lastPath=row.path;if(!searchIndexEmptyDesc.get(crate).contains(bitIndex)){descIndex+=1}}if(aliases){const currentCrateAliases=new Map();ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!Object.prototype.hasOwnProperty.call(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=itemTypes.length;searchState.descShards.set(crate,descShardList)}TYPES_POOL=new Map()}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;e.preventDefault();search()}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(true)}buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch(new Map())}})() \ No newline at end of file diff --git a/type.impl/actix_settings/struct.BasicSettings.js b/type.impl/actix_settings/struct.BasicSettings.js index 701f2b183..94444f771 100644 --- a/type.impl/actix_settings/struct.BasicSettings.js +++ b/type.impl/actix_settings/struct.BasicSettings.js @@ -1,3 +1,3 @@ (function() {var type_impls = { -"actix_settings":[["
    source§

    impl<A> BasicSettings<A>
    where\n A: DeserializeOwned,

    source

    pub fn parse_toml<P>(filepath: P) -> Result<Self, Error>
    where\n P: AsRef<Path>,

    Parse an instance of Self from a TOML file located at filepath.

    \n

    If the file doesn’t exist, it is generated from the default TOML template, after which the\nnewly generated file is read in and parsed.

    \n
    source

    pub fn from_default_template() -> Self

    Parse an instance of Self straight from the default TOML template.

    \n
    source

    pub fn from_template(template: &str) -> Result<Self, Error>

    Parse an instance of Self straight from the default TOML template.

    \n
    source

    pub fn write_toml_file<P>(filepath: P) -> Result<(), Error>
    where\n P: AsRef<Path>,

    Writes the default TOML template to a new file, located at filepath.

    \n
    §Errors
    \n

    Returns a FileExists error if a file already exists at that\nlocation.

    \n
    source

    pub fn override_field<F, V>(field: &mut F, value: V) -> Result<(), Error>
    where\n F: Parse,\n V: AsRef<str>,

    Attempts to parse value and override the referenced field.

    \n
    §Examples
    \n
    use actix_settings::{Settings, Mode};\n\nlet mut settings = Settings::from_default_template();\nassert_eq!(settings.actix.mode, Mode::Development);\n\nSettings::override_field(&mut settings.actix.mode, \"production\")?;\nassert_eq!(settings.actix.mode, Mode::Production);
    \n
    source

    pub fn override_field_with_env_var<F, N>(\n field: &mut F,\n var_name: N\n) -> Result<(), Error>
    where\n F: Parse,\n N: AsRef<str>,

    Attempts to read an environment variable, parse it, and override the referenced field.

    \n
    §Examples
    \n
    use actix_settings::{Settings, Mode};\n\nstd::env::set_var(\"OVERRIDE__MODE\", \"production\");\n\nlet mut settings = Settings::from_default_template();\nassert_eq!(settings.actix.mode, Mode::Development);\n\nSettings::override_field_with_env_var(&mut settings.actix.mode, \"OVERRIDE__MODE\")?;\nassert_eq!(settings.actix.mode, Mode::Production);
    \n
    ",0,"actix_settings::Settings"],["
    source§

    impl<A: Clone> Clone for BasicSettings<A>

    source§

    fn clone(&self) -> BasicSettings<A>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","actix_settings::Settings"],["
    source§

    impl<A: Debug> Debug for BasicSettings<A>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","actix_settings::Settings"],["
    source§

    impl<'de, A> Deserialize<'de> for BasicSettings<A>
    where\n A: Deserialize<'de>,

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where\n __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","actix_settings::Settings"],["
    source§

    impl<A: Hash> Hash for BasicSettings<A>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","actix_settings::Settings"],["
    source§

    impl<A: PartialEq> PartialEq for BasicSettings<A>

    source§

    fn eq(&self, other: &BasicSettings<A>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","actix_settings::Settings"],["
    source§

    impl<A: Eq> Eq for BasicSettings<A>

    ","Eq","actix_settings::Settings"],["
    source§

    impl<A> StructuralPartialEq for BasicSettings<A>

    ","StructuralPartialEq","actix_settings::Settings"]] +"actix_settings":[["
    source§

    impl<A> BasicSettings<A>
    where\n A: DeserializeOwned,

    source

    pub fn parse_toml<P>(filepath: P) -> Result<Self, Error>
    where\n P: AsRef<Path>,

    Parse an instance of Self from a TOML file located at filepath.

    \n

    If the file doesn’t exist, it is generated from the default TOML template, after which the\nnewly generated file is read in and parsed.

    \n
    source

    pub fn from_default_template() -> Self

    Parse an instance of Self straight from the default TOML template.

    \n
    source

    pub fn from_template(template: &str) -> Result<Self, Error>

    Parse an instance of Self straight from the default TOML template.

    \n
    source

    pub fn write_toml_file<P>(filepath: P) -> Result<(), Error>
    where\n P: AsRef<Path>,

    Writes the default TOML template to a new file, located at filepath.

    \n
    §Errors
    \n

    Returns a FileExists error if a file already exists at that\nlocation.

    \n
    source

    pub fn override_field<F, V>(field: &mut F, value: V) -> Result<(), Error>
    where\n F: Parse,\n V: AsRef<str>,

    Attempts to parse value and override the referenced field.

    \n
    §Examples
    \n
    use actix_settings::{Settings, Mode};\n\nlet mut settings = Settings::from_default_template();\nassert_eq!(settings.actix.mode, Mode::Development);\n\nSettings::override_field(&mut settings.actix.mode, \"production\")?;\nassert_eq!(settings.actix.mode, Mode::Production);
    \n
    source

    pub fn override_field_with_env_var<F, N>(\n field: &mut F,\n var_name: N,\n) -> Result<(), Error>
    where\n F: Parse,\n N: AsRef<str>,

    Attempts to read an environment variable, parse it, and override the referenced field.

    \n
    §Examples
    \n
    use actix_settings::{Settings, Mode};\n\nstd::env::set_var(\"OVERRIDE__MODE\", \"production\");\n\nlet mut settings = Settings::from_default_template();\nassert_eq!(settings.actix.mode, Mode::Development);\n\nSettings::override_field_with_env_var(&mut settings.actix.mode, \"OVERRIDE__MODE\")?;\nassert_eq!(settings.actix.mode, Mode::Production);
    \n
    ",0,"actix_settings::Settings"],["
    source§

    impl<A: Clone> Clone for BasicSettings<A>

    source§

    fn clone(&self) -> BasicSettings<A>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","actix_settings::Settings"],["
    source§

    impl<A: Debug> Debug for BasicSettings<A>

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","actix_settings::Settings"],["
    source§

    impl<'de, A> Deserialize<'de> for BasicSettings<A>
    where\n A: Deserialize<'de>,

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where\n __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","actix_settings::Settings"],["
    source§

    impl<A: Hash> Hash for BasicSettings<A>

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","actix_settings::Settings"],["
    source§

    impl<A: PartialEq> PartialEq for BasicSettings<A>

    source§

    fn eq(&self, other: &BasicSettings<A>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","actix_settings::Settings"],["
    source§

    impl<A: Eq> Eq for BasicSettings<A>

    ","Eq","actix_settings::Settings"],["
    source§

    impl<A> StructuralPartialEq for BasicSettings<A>

    ","StructuralPartialEq","actix_settings::Settings"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file