diff --git a/actix_settings/enum.Error.html b/actix_settings/enum.Error.html index 7a98ec09f..559e9539a 100644 --- a/actix_settings/enum.Error.html +++ b/actix_settings/enum.Error.html @@ -22,7 +22,7 @@
§

ParseIntError(ParseIntError)

Value is not an integer.

§

ParseAddressError(String)

Value is not an address.

§

TomlError(Error)

Error deserializing as TOML.

-

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<Error> for Error

source§

fn from(err: Error) -> Self

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(err: Error) -> Self

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(err: TomlError) -> Self

Converts to this type from the input type.
source§

impl From<ParseBoolError> for Error

source§

fn from(err: ParseBoolError) -> Self

Converts to this type from the input type.
source§

impl From<ParseIntError> for Error

source§

fn from(err: ParseIntError) -> Self

Converts to this type from the input type.
source§

impl From<VarError> for Error

source§

fn from(err: VarError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for Twhere +

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<Error> for Error

source§

fn from(err: Error) -> Self

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(err: TomlError) -> Self

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(err: Error) -> Self

Converts to this type from the input type.
source§

impl From<ParseBoolError> for Error

source§

fn from(err: ParseBoolError) -> Self

Converts to this type from the input type.
source§

impl From<ParseIntError> for Error

source§

fn from(err: ParseIntError) -> Self

Converts to this type from the input type.
source§

impl From<VarError> for Error

source§

fn from(err: VarError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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_ws/all.html b/actix_ws/all.html new file mode 100644 index 000000000..6f8a490b2 --- /dev/null +++ b/actix_ws/all.html @@ -0,0 +1 @@ +List of all items in this crate
\ No newline at end of file diff --git a/actix_ws/enum.CloseCode.html b/actix_ws/enum.CloseCode.html new file mode 100644 index 000000000..74f9c40c2 --- /dev/null +++ b/actix_ws/enum.CloseCode.html @@ -0,0 +1,68 @@ +CloseCode in actix_ws - Rust

Enum actix_ws::CloseCode

pub enum CloseCode {
+    Normal,
+    Away,
+    Protocol,
+    Unsupported,
+    Abnormal,
+    Invalid,
+    Policy,
+    Size,
+    Extension,
+    Error,
+    Restart,
+    Again,
+    // some variants omitted
+}
Expand description

Status code used to indicate why an endpoint is closing the WebSocket connection.

+

Variants§

§

Normal

Indicates a normal closure, meaning that the purpose for which the connection was +established has been fulfilled.

+
§

Away

Indicates that an endpoint is “going away”, such as a server going down or a browser having +navigated away from a page.

+
§

Protocol

Indicates that an endpoint is terminating the connection due to a protocol error.

+
§

Unsupported

Indicates that an endpoint is terminating the connection because it has received a type of +data it cannot accept (e.g., an endpoint that understands only text data MAY send this if it +receives a binary message).

+
§

Abnormal

Indicates an abnormal closure. If the abnormal closure was due to an error, this close code +will not be used. Instead, the on_error method of the handler will be called with +the error. However, if the connection is simply dropped, without an error, this close code +will be sent to the handler.

+
§

Invalid

Indicates that an endpoint is terminating the connection because it has received data within +a message that was not consistent with the type of the message (e.g., non-UTF-8 [RFC 3629] +data within a text message).

+
§

Policy

Indicates that an endpoint is terminating the connection because it has received a message +that violates its policy. This is a generic status code that can be returned when there is +no other more suitable status code (e.g., Unsupported or Size) or if there is a need to hide +specific details about the policy.

+
§

Size

Indicates that an endpoint is terminating the connection because it has received a message +that is too big for it to process.

+
§

Extension

Indicates that an endpoint (client) is terminating the connection because it has expected +the server to negotiate one or more extension, but the server didn’t return them in the +response message of the WebSocket handshake. The list of extensions that are needed should +be given as the reason for closing. Note that this status code is not used by the server, +because it can fail the WebSocket handshake instead.

+
§

Error

Indicates that a server is terminating the connection because it encountered an unexpected +condition that prevented it from fulfilling the request.

+
§

Restart

Indicates that the server is restarting. A client may choose to reconnect, and if it does, +it should use a randomized delay of 5-30 seconds between attempts.

+
§

Again

Indicates that the server is overloaded and the client should either connect to a different +IP (when multiple targets exist), or reconnect to the same IP when a user has performed +an action.

+

Trait Implementations§

§

impl Clone for CloseCode

§

fn clone(&self) -> CloseCode

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
§

impl Debug for CloseCode

§

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

Formats the value using the given formatter. Read more
§

impl From<CloseCode> for CloseReason

§

fn from(code: CloseCode) -> CloseReason

Converts to this type from the input type.
§

impl From<u16> for CloseCode

§

fn from(code: u16) -> CloseCode

Converts to this type from the input type.
§

impl PartialEq for CloseCode

§

fn eq(&self, other: &CloseCode) -> bool

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

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
§

impl Copy for CloseCode

§

impl Eq for CloseCode

§

impl StructuralEq for CloseCode

§

impl StructuralPartialEq for CloseCode

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + 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.

+
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + 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.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

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<V, T> VZip<V> for Twhere + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
\ No newline at end of file diff --git a/actix_ws/enum.Message.html b/actix_ws/enum.Message.html new file mode 100644 index 000000000..97c1e498a --- /dev/null +++ b/actix_ws/enum.Message.html @@ -0,0 +1,35 @@ +Message in actix_ws - Rust

Enum actix_ws::Message

pub enum Message {
+    Text(ByteString),
+    Binary(Bytes),
+    Continuation(Item),
+    Ping(Bytes),
+    Pong(Bytes),
+    Close(Option<CloseReason>),
+    Nop,
+}
Expand description

A WebSocket message.

+

Variants§

§

Text(ByteString)

Text message.

+
§

Binary(Bytes)

Binary message.

+
§

Continuation(Item)

Continuation.

+
§

Ping(Bytes)

Ping message.

+
§

Pong(Bytes)

Pong message.

+
§

Close(Option<CloseReason>)

Close message with optional reason.

+
§

Nop

No-op. Useful for low-level services.

+

Trait Implementations§

§

impl Debug for Message

§

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

Formats the value using the given formatter. Read more
§

impl PartialEq for Message

§

fn eq(&self, other: &Message) -> bool

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

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
§

impl Eq for Message

§

impl StructuralEq for Message

§

impl StructuralPartialEq for Message

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + 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.

+
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere + 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.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

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<V, T> VZip<V> for Twhere + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
\ No newline at end of file diff --git a/actix_ws/enum.ProtocolError.html b/actix_ws/enum.ProtocolError.html new file mode 100644 index 000000000..30cd6b5a5 --- /dev/null +++ b/actix_ws/enum.ProtocolError.html @@ -0,0 +1,43 @@ +ProtocolError in actix_ws - Rust
pub enum ProtocolError {
+    UnmaskedFrame,
+    MaskedFrame,
+    InvalidOpcode(u8),
+    InvalidLength(usize),
+    BadOpCode,
+    Overflow,
+    ContinuationNotStarted,
+    ContinuationStarted,
+    ContinuationFragment(OpCode),
+    Io(Error),
+}
Expand description

WebSocket protocol errors.

+

Variants§

§

UnmaskedFrame

Received an unmasked frame from client.

+
§

MaskedFrame

Received a masked frame from server.

+
§

InvalidOpcode(u8)

Encountered invalid opcode.

+
§

InvalidLength(usize)

Invalid control frame length

+
§

BadOpCode

Bad opcode.

+
§

Overflow

A payload reached size limit.

+
§

ContinuationNotStarted

Continuation has not started.

+
§

ContinuationStarted

Received new continuation but it is already started.

+
§

ContinuationFragment(OpCode)

Unknown continuation fragment.

+
§

Io(Error)

I/O error.

+

Trait Implementations§

§

impl Debug for ProtocolError

§

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

Formats the value using the given formatter. Read more
§

impl Display for ProtocolError

§

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

Formats the value using the given formatter. Read more
§

impl Error for ProtocolError

§

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
§

impl From<Error> for ProtocolError

§

fn from(original: Error) -> ProtocolError

Converts to this type from the input type.
§

impl From<OpCode> for ProtocolError

§

fn from(original: OpCode) -> ProtocolError

Converts to this type from the input type.
§

impl From<u8> for ProtocolError

§

fn from(original: u8) -> ProtocolError

Converts to this type from the input type.
§

impl From<usize> for ProtocolError

§

fn from(original: usize) -> ProtocolError

Converts to this type from the input type.
§

impl ResponseError for ProtocolError

§

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 Twhere + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + 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.

+
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToString for Twhere + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for Twhere + 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.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

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<V, T> VZip<V> for Twhere + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
\ No newline at end of file diff --git a/actix_ws/fn.handle.html b/actix_ws/fn.handle.html new file mode 100644 index 000000000..638e6877e --- /dev/null +++ b/actix_ws/fn.handle.html @@ -0,0 +1,45 @@ +handle in actix_ws - Rust

Function actix_ws::handle

source ·
pub fn handle(
+    req: &HttpRequest,
+    body: Payload
+) -> Result<(HttpResponse, Session, MessageStream), Error>
Expand description

Begin handling websocket traffic

+ +
use actix_web::{middleware::Logger, web, App, Error, HttpRequest, HttpResponse, HttpServer};
+use actix_ws::Message;
+use futures::stream::StreamExt as _;
+
+async fn ws(req: HttpRequest, body: web::Payload) -> Result<HttpResponse, Error> {
+    let (response, mut session, mut msg_stream) = actix_ws::handle(&req, body)?;
+
+    actix_rt::spawn(async move {
+        while let Some(Ok(msg)) = msg_stream.next().await {
+            match msg {
+                Message::Ping(bytes) => {
+                    if session.pong(&bytes).await.is_err() {
+                        return;
+                    }
+                }
+                Message::Text(s) => println!("Got text, {}", s),
+                _ => break,
+            }
+        }
+
+        let _ = session.close(None).await;
+    });
+
+    Ok(response)
+}
+
+#[actix_rt::main]
+async fn main() -> Result<(), anyhow::Error> {
+    HttpServer::new(move || {
+        App::new()
+            .wrap(Logger::default())
+            .route("/ws", web::get().to(ws))
+    })
+    .bind("127.0.0.1:8080")?
+    .run()
+    .await?;
+
+    Ok(())
+}
+
\ No newline at end of file diff --git a/actix_ws/fut/struct.MessageStream.html b/actix_ws/fut/struct.MessageStream.html new file mode 100644 index 000000000..864be6fd0 --- /dev/null +++ b/actix_ws/fut/struct.MessageStream.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../actix_ws/struct.MessageStream.html...

+ + + \ No newline at end of file diff --git a/actix_ws/fut/struct.StreamingBody.html b/actix_ws/fut/struct.StreamingBody.html new file mode 100644 index 000000000..3e4415011 --- /dev/null +++ b/actix_ws/fut/struct.StreamingBody.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../actix_ws/struct.StreamingBody.html...

+ + + \ No newline at end of file diff --git a/actix_ws/index.html b/actix_ws/index.html new file mode 100644 index 000000000..d4a9282ae --- /dev/null +++ b/actix_ws/index.html @@ -0,0 +1,4 @@ +actix_ws - Rust

Crate actix_ws

source ·
Expand description

WebSockets for Actix Web, without actors.

+

For usage, see documentation on handle().

+

Structs

  • Reason for closing the connection
  • The error representing a closed websocket session
  • A stream of Messages from a websocket client
  • A handle into the websocket session.
  • A response body for Websocket HTTP Requests

Enums

  • Status code used to indicate why an endpoint is closing the WebSocket connection.
  • A WebSocket message.
  • WebSocket protocol errors.

Functions

  • Begin handling websocket traffic
\ No newline at end of file diff --git a/actix_ws/session/struct.Closed.html b/actix_ws/session/struct.Closed.html new file mode 100644 index 000000000..14785af02 --- /dev/null +++ b/actix_ws/session/struct.Closed.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../actix_ws/struct.Closed.html...

+ + + \ No newline at end of file diff --git a/actix_ws/session/struct.Session.html b/actix_ws/session/struct.Session.html new file mode 100644 index 000000000..596ff3d84 --- /dev/null +++ b/actix_ws/session/struct.Session.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

Redirecting to ../../actix_ws/struct.Session.html...

+ + + \ No newline at end of file diff --git a/actix_ws/sidebar-items.js b/actix_ws/sidebar-items.js new file mode 100644 index 000000000..f8ddef9d4 --- /dev/null +++ b/actix_ws/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["CloseCode","Message","ProtocolError"],"fn":["handle"],"struct":["CloseReason","Closed","MessageStream","Session","StreamingBody"]}; \ No newline at end of file diff --git a/actix_ws/struct.CloseReason.html b/actix_ws/struct.CloseReason.html new file mode 100644 index 000000000..bd3b3cde1 --- /dev/null +++ b/actix_ws/struct.CloseReason.html @@ -0,0 +1,27 @@ +CloseReason in actix_ws - Rust

Struct actix_ws::CloseReason

pub struct CloseReason {
+    pub code: CloseCode,
+    pub description: Option<String>,
+}
Expand description

Reason for closing the connection

+

Fields§

§code: CloseCode

Exit code

+
§description: Option<String>

Optional description of the exit code

+

Trait Implementations§

§

impl Clone for CloseReason

§

fn clone(&self) -> CloseReason

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
§

impl Debug for CloseReason

§

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

Formats the value using the given formatter. Read more
§

impl<T> From<(CloseCode, T)> for CloseReasonwhere + T: Into<String>,

§

fn from(info: (CloseCode, T)) -> CloseReason

Converts to this type from the input type.
§

impl From<CloseCode> for CloseReason

§

fn from(code: CloseCode) -> CloseReason

Converts to this type from the input type.
§

impl PartialEq for CloseReason

§

fn eq(&self, other: &CloseReason) -> bool

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

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
§

impl Eq for CloseReason

§

impl StructuralEq for CloseReason

§

impl StructuralPartialEq for CloseReason

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + 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.

+
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + 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.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

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<V, T> VZip<V> for Twhere + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
\ No newline at end of file diff --git a/actix_ws/struct.Closed.html b/actix_ws/struct.Closed.html new file mode 100644 index 000000000..92297af90 --- /dev/null +++ b/actix_ws/struct.Closed.html @@ -0,0 +1,19 @@ +Closed in actix_ws - Rust

Struct actix_ws::Closed

source ·
pub struct Closed;
Expand description

The error representing a closed websocket session

+

Trait Implementations§

source§

impl Debug for Closed

source§

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

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

impl Display for Closed

source§

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

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

impl Error for Closed

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

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + 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.

+
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToString for Twhere + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for Twhere + 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.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

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<V, T> VZip<V> for Twhere + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
\ No newline at end of file diff --git a/actix_ws/struct.MessageStream.html b/actix_ws/struct.MessageStream.html new file mode 100644 index 000000000..7daedc7d0 --- /dev/null +++ b/actix_ws/struct.MessageStream.html @@ -0,0 +1,261 @@ +MessageStream in actix_ws - Rust

Struct actix_ws::MessageStream

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

A stream of Messages from a websocket client

+

Messages can be accessed via the stream’s .next() method

+

Implementations§

source§

impl MessageStream

source

pub async fn recv(&mut self) -> Option<Result<Message, ProtocolError>>

Wait for the next item from the message stream

+ +
while let Some(Ok(msg)) = stream.recv().await {
+    // handle message
+}
+

Trait Implementations§

source§

impl Stream for MessageStream

§

type Item = Result<Message, ProtocolError>

Values yielded by the stream.
source§

fn poll_next( + self: Pin<&mut Self>, + cx: &mut Context<'_> +) -> Poll<Option<Self::Item>>

Attempt to pull out the next value of this stream, registering the +current task for wakeup if the value is not yet available, and returning +None if the stream is exhausted. Read more
§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the stream. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + 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.

+
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T> StreamExt for Twhere + T: Stream + ?Sized,

§

fn next(&mut self) -> Next<'_, Self>where + Self: Unpin,

Creates a future that resolves to the next item in the stream. Read more
§

fn into_future(self) -> StreamFuture<Self>where + Self: Sized + Unpin,

Converts this stream into a future of (next_item, tail_of_stream). +If the stream terminates, then the next item is None. Read more
§

fn map<T, F>(self, f: F) -> Map<Self, F>where + F: FnMut(Self::Item) -> T, + Self: Sized,

Maps this stream’s items to a different type, returning a new stream of +the resulting type. Read more
§

fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

Creates a stream which gives the current iteration count as well as +the next value. Read more
§

fn filter<Fut, F>(self, f: F) -> Filter<Self, Fut, F>where + F: FnMut(&Self::Item) -> Fut, + Fut: Future<Output = bool>, + Self: Sized,

Filters the values produced by this stream according to the provided +asynchronous predicate. Read more
§

fn filter_map<Fut, T, F>(self, f: F) -> FilterMap<Self, Fut, F>where + F: FnMut(Self::Item) -> Fut, + Fut: Future<Output = Option<T>>, + Self: Sized,

Filters the values produced by this stream while simultaneously mapping +them to a different type according to the provided asynchronous closure. Read more
§

fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>where + F: FnMut(Self::Item) -> Fut, + Fut: Future, + Self: Sized,

Computes from this stream’s items new items of a different type using +an asynchronous closure. Read more
§

fn collect<C>(self) -> Collect<Self, C>where + C: Default + Extend<Self::Item>, + Self: Sized,

Transforms a stream into a collection, returning a +future representing the result of that computation. Read more
§

fn unzip<A, B, FromA, FromB>(self) -> Unzip<Self, FromA, FromB>where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Stream<Item = (A, B)>,

Converts a stream of pairs into a future, which +resolves to pair of containers. Read more
§

fn concat(self) -> Concat<Self>where + Self: Sized, + Self::Item: Extend<<Self::Item as IntoIterator>::Item> + IntoIterator + Default,

Concatenate all items of a stream into a single extendable +destination, returning a future representing the end result. Read more
§

fn count(self) -> Count<Self>where + Self: Sized,

Drives the stream to completion, counting the number of items. Read more
§

fn cycle(self) -> Cycle<Self>where + Self: Sized + Clone,

Repeats a stream endlessly. Read more
§

fn fold<T, Fut, F>(self, init: T, f: F) -> Fold<Self, Fut, T, F>where + F: FnMut(T, Self::Item) -> Fut, + Fut: Future<Output = T>, + Self: Sized,

Execute an accumulating asynchronous computation over a stream, +collecting all the values into one final result. Read more
§

fn any<Fut, F>(self, f: F) -> Any<Self, Fut, F>where + F: FnMut(Self::Item) -> Fut, + Fut: Future<Output = bool>, + Self: Sized,

Execute predicate over asynchronous stream, and return true if any element in stream satisfied a predicate. Read more
§

fn all<Fut, F>(self, f: F) -> All<Self, Fut, F>where + F: FnMut(Self::Item) -> Fut, + Fut: Future<Output = bool>, + Self: Sized,

Execute predicate over asynchronous stream, and return true if all element in stream satisfied a predicate. Read more
§

fn flatten(self) -> Flatten<Self>where + Self::Item: Stream, + Self: Sized,

Flattens a stream of streams into just one continuous stream. Read more
§

fn flatten_unordered( + self, + limit: impl Into<Option<usize>> +) -> FlattenUnorderedWithFlowController<Self, ()>where + Self::Item: Stream + Unpin, + Self: Sized,

Flattens a stream of streams into just one continuous stream. Polls +inner streams produced by the base stream concurrently. Read more
§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + F: FnMut(Self::Item) -> U, + U: Stream, + Self: Sized,

Maps a stream like [StreamExt::map] but flattens nested Streams. Read more
§

fn flat_map_unordered<U, F>( + self, + limit: impl Into<Option<usize>>, + f: F +) -> FlatMapUnordered<Self, U, F>where + U: Stream + Unpin, + F: FnMut(Self::Item) -> U, + Self: Sized,

Maps a stream like [StreamExt::map] but flattens nested Streams +and polls them concurrently, yielding items in any order, as they made +available. Read more
§

fn scan<S, B, Fut, F>(self, initial_state: S, f: F) -> Scan<Self, S, Fut, F>where + F: FnMut(&mut S, Self::Item) -> Fut, + Fut: Future<Output = Option<B>>, + Self: Sized,

Combinator similar to [StreamExt::fold] that holds internal state +and produces a new stream. Read more
§

fn skip_while<Fut, F>(self, f: F) -> SkipWhile<Self, Fut, F>where + F: FnMut(&Self::Item) -> Fut, + Fut: Future<Output = bool>, + Self: Sized,

Skip elements on this stream while the provided asynchronous predicate +resolves to true. Read more
§

fn take_while<Fut, F>(self, f: F) -> TakeWhile<Self, Fut, F>where + F: FnMut(&Self::Item) -> Fut, + Fut: Future<Output = bool>, + Self: Sized,

Take elements from this stream while the provided asynchronous predicate +resolves to true. Read more
§

fn take_until<Fut>(self, fut: Fut) -> TakeUntil<Self, Fut>where + Fut: Future, + Self: Sized,

Take elements from this stream until the provided future resolves. Read more
§

fn for_each<Fut, F>(self, f: F) -> ForEach<Self, Fut, F>where + F: FnMut(Self::Item) -> Fut, + Fut: Future<Output = ()>, + Self: Sized,

Runs this stream to completion, executing the provided asynchronous +closure for each element on the stream. Read more
§

fn for_each_concurrent<Fut, F>( + self, + limit: impl Into<Option<usize>>, + f: F +) -> ForEachConcurrent<Self, Fut, F>where + F: FnMut(Self::Item) -> Fut, + Fut: Future<Output = ()>, + Self: Sized,

Runs this stream to completion, executing the provided asynchronous +closure for each element on the stream concurrently as elements become +available. Read more
§

fn take(self, n: usize) -> Take<Self>where + Self: Sized,

Creates a new stream of at most n items of the underlying stream. Read more
§

fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

Creates a new stream which skips n items of the underlying stream. Read more
§

fn fuse(self) -> Fuse<Self>where + Self: Sized,

Fuse a stream such that poll_next will never +again be called once it has finished. This method can be used to turn +any Stream into a FusedStream. Read more
§

fn by_ref(&mut self) -> &mut Self

Borrows a stream, rather than consuming it. Read more
§

fn catch_unwind(self) -> CatchUnwind<Self>where + Self: Sized + UnwindSafe,

Catches unwinding panics while polling the stream. Read more
§

fn boxed<'a>(self) -> Pin<Box<dyn Stream<Item = Self::Item> + Send + 'a>>where + Self: Sized + Send + 'a,

Wrap the stream in a Box, pinning it. Read more
§

fn boxed_local<'a>(self) -> Pin<Box<dyn Stream<Item = Self::Item> + 'a>>where + Self: Sized + 'a,

Wrap the stream in a Box, pinning it. Read more
§

fn buffered(self, n: usize) -> Buffered<Self>where + Self::Item: Future, + Self: Sized,

An adaptor for creating a buffered list of pending futures. Read more
§

fn buffer_unordered(self, n: usize) -> BufferUnordered<Self>where + Self::Item: Future, + Self: Sized,

An adaptor for creating a buffered list of pending futures (unordered). Read more
§

fn zip<St>(self, other: St) -> Zip<Self, St>where + St: Stream, + Self: Sized,

An adapter for zipping two streams together. Read more
§

fn chain<St>(self, other: St) -> Chain<Self, St>where + St: Stream<Item = Self::Item>, + Self: Sized,

Adapter for chaining two streams. Read more
§

fn peekable(self) -> Peekable<Self>where + Self: Sized,

Creates a new stream which exposes a peek method. Read more
§

fn chunks(self, capacity: usize) -> Chunks<Self>where + Self: Sized,

An adaptor for chunking up items of the stream inside a vector. Read more
§

fn ready_chunks(self, capacity: usize) -> ReadyChunks<Self>where + Self: Sized,

An adaptor for chunking up ready items of the stream inside a vector. Read more
§

fn forward<S>(self, sink: S) -> Forward<Self, S>where + S: Sink<Self::Ok, Error = Self::Error>, + Self: TryStream + Sized,

A future that completes after the given stream has been fully processed +into the sink and the sink has been flushed and closed. Read more
§

fn split<Item>(self) -> (SplitSink<Self, Item>, SplitStream<Self>)where + Self: Sink<Item> + Sized,

Splits this Stream + Sink object into separate Sink and Stream +objects. Read more
§

fn inspect<F>(self, f: F) -> Inspect<Self, F>where + F: FnMut(&Self::Item), + Self: Sized,

Do something with each item of this stream, afterwards passing it on. Read more
§

fn left_stream<B>(self) -> Either<Self, B>where + B: Stream<Item = Self::Item>, + Self: Sized,

Wrap this stream in an Either stream, making it the left-hand variant +of that Either. Read more
§

fn right_stream<B>(self) -> Either<B, Self>where + B: Stream<Item = Self::Item>, + Self: Sized,

Wrap this stream in an Either stream, making it the right-hand variant +of that Either. Read more
§

fn poll_next_unpin(&mut self, cx: &mut Context<'_>) -> Poll<Option<Self::Item>>where + Self: Unpin,

A convenience method for calling [Stream::poll_next] on Unpin +stream types.
§

fn select_next_some(&mut self) -> SelectNextSome<'_, Self>where + Self: Unpin + FusedStream,

Returns a Future that resolves when the next item in this stream is +ready. Read more
source§

impl<T, U> TryFrom<U> for Twhere + 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.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

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 Swhere + 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<'_> +) -> 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 Swhere + S: TryStream + ?Sized,

§

fn err_into<E>(self) -> ErrInto<Self, E>where + Self: Sized, + Self::Error: Into<E>,

Wraps the current stream in a new stream which converts the error type +into the one provided. Read more
§

fn map_ok<T, F>(self, f: F) -> MapOk<Self, F>where + Self: Sized, + F: FnMut(Self::Ok) -> T,

Wraps the current stream in a new stream which maps the success value +using the provided closure. Read more
§

fn map_err<E, F>(self, f: F) -> MapErr<Self, F>where + Self: Sized, + F: FnMut(Self::Error) -> E,

Wraps the current stream in a new stream which maps the error value +using the provided closure. Read more
§

fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F>where + F: FnMut(Self::Ok) -> Fut, + Fut: TryFuture<Error = Self::Error>, + Self: Sized,

Chain on a computation for when a value is ready, passing the successful +results to the provided closure f. Read more
§

fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F>where + F: FnMut(Self::Error) -> Fut, + Fut: TryFuture<Ok = Self::Ok>, + Self: Sized,

Chain on a computation for when an error happens, passing the +erroneous result to the provided closure f. Read more
§

fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F>where + F: FnMut(&Self::Ok), + Self: Sized,

Do something with the success value of this stream, afterwards passing +it on. Read more
§

fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>where + F: FnMut(&Self::Error), + Self: Sized,

Do something with the error value of this stream, afterwards passing it on. Read more
§

fn into_stream(self) -> IntoStream<Self>where + Self: Sized,

Wraps a [TryStream] into a type that implements +Stream Read more
§

fn try_next(&mut self) -> TryNext<'_, Self>where + Self: Unpin,

Creates a future that attempts to resolve the next item in the stream. +If an error is encountered before the next item, the error is returned +instead. Read more
§

fn try_for_each<Fut, F>(self, f: F) -> TryForEach<Self, Fut, F>where + F: FnMut(Self::Ok) -> Fut, + Fut: TryFuture<Ok = (), Error = Self::Error>, + Self: Sized,

Attempts to run this stream to completion, executing the provided +asynchronous closure for each element on the stream. Read more
§

fn try_skip_while<Fut, F>(self, f: F) -> TrySkipWhile<Self, Fut, F>where + F: FnMut(&Self::Ok) -> Fut, + Fut: TryFuture<Ok = bool, Error = Self::Error>, + Self: Sized,

Skip elements on this stream while the provided asynchronous predicate +resolves to true. Read more
§

fn try_take_while<Fut, F>(self, f: F) -> TryTakeWhile<Self, Fut, F>where + F: FnMut(&Self::Ok) -> Fut, + Fut: TryFuture<Ok = bool, Error = Self::Error>, + Self: Sized,

Take elements on this stream while the provided asynchronous predicate +resolves to true. Read more
§

fn try_for_each_concurrent<Fut, F>( + self, + limit: impl Into<Option<usize>>, + f: F +) -> TryForEachConcurrent<Self, Fut, F>where + F: FnMut(Self::Ok) -> Fut, + Fut: Future<Output = Result<(), Self::Error>>, + Self: Sized,

Attempts to run this stream to completion, executing the provided asynchronous +closure for each element on the stream concurrently as elements become +available, exiting as soon as an error occurs. Read more
§

fn try_collect<C>(self) -> TryCollect<Self, C>where + C: Default + Extend<Self::Ok>, + Self: Sized,

Attempt to transform a stream into a collection, +returning a future representing the result of that computation. Read more
§

fn try_chunks(self, capacity: usize) -> TryChunks<Self>where + Self: Sized,

An adaptor for chunking up successful items of the stream inside a vector. Read more
§

fn try_ready_chunks(self, capacity: usize) -> TryReadyChunks<Self>where + Self: Sized,

An adaptor for chunking up successful, ready items of the stream inside a vector. Read more
§

fn try_filter<Fut, F>(self, f: F) -> TryFilter<Self, Fut, F>where + Fut: Future<Output = bool>, + F: FnMut(&Self::Ok) -> Fut, + Self: Sized,

Attempt to filter the values produced by this stream according to the +provided asynchronous closure. Read more
§

fn try_filter_map<Fut, F, T>(self, f: F) -> TryFilterMap<Self, Fut, F>where + Fut: TryFuture<Ok = Option<T>, Error = Self::Error>, + F: FnMut(Self::Ok) -> Fut, + Self: Sized,

Attempt to filter the values produced by this stream while +simultaneously mapping them to a different type according to the +provided asynchronous closure. Read more
§

fn try_flatten_unordered( + self, + limit: impl Into<Option<usize>> +) -> TryFlattenUnordered<Self>where + Self::Ok: TryStream + Unpin, + <Self::Ok as TryStream>::Error: From<Self::Error>, + Self: Sized,

Flattens a stream of streams into just one continuous stream. Produced streams +will be polled concurrently and any errors will be passed through without looking at them. +If the underlying base stream returns an error, it will be immediately propagated. Read more
§

fn try_flatten(self) -> TryFlatten<Self>where + Self::Ok: TryStream, + <Self::Ok as TryStream>::Error: From<Self::Error>, + Self: Sized,

Flattens a stream of streams into just one continuous stream. Read more
§

fn try_fold<T, Fut, F>(self, init: T, f: F) -> TryFold<Self, Fut, T, F>where + F: FnMut(T, Self::Ok) -> Fut, + Fut: TryFuture<Ok = T, Error = Self::Error>, + Self: Sized,

Attempt to execute an accumulating asynchronous computation over a +stream, collecting all the values into one final result. Read more
§

fn try_concat(self) -> TryConcat<Self>where + Self: Sized, + Self::Ok: Extend<<Self::Ok as IntoIterator>::Item> + IntoIterator + Default,

Attempt to concatenate all items of a stream into a single +extendable destination, returning a future representing the end result. Read more
§

fn try_buffer_unordered(self, n: usize) -> TryBufferUnordered<Self>where + Self::Ok: TryFuture<Error = Self::Error>, + Self: Sized,

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

fn try_buffered(self, n: usize) -> TryBuffered<Self>where + 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<'_> +) -> 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 + Self: Sized + TryStreamExt<Error = Error>, + Self::Ok: AsRef<[u8]>,

Adapter that converts this stream into an AsyncBufRead. Read more
§

fn try_all<Fut, F>(self, f: F) -> TryAll<Self, Fut, F>where + Self: Sized, + F: FnMut(Self::Ok) -> Fut, + Fut: Future<Output = bool>,

Attempt to execute a predicate over an asynchronous stream and evaluate if all items +satisfy the predicate. Exits early if an Err is encountered or if an Ok item is found +that does not satisfy the predicate. Read more
§

fn try_any<Fut, F>(self, f: F) -> TryAny<Self, Fut, F>where + Self: Sized, + F: FnMut(Self::Ok) -> Fut, + Fut: Future<Output = bool>,

Attempt to execute a predicate over an asynchronous stream and evaluate if any items +satisfy the predicate. Exits early if an Err is encountered or if an Ok item is found +that satisfies the predicate. Read more
§

impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
\ No newline at end of file diff --git a/actix_ws/struct.Session.html b/actix_ws/struct.Session.html new file mode 100644 index 000000000..73c43df6d --- /dev/null +++ b/actix_ws/struct.Session.html @@ -0,0 +1,49 @@ +Session in actix_ws - Rust

Struct actix_ws::Session

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

A handle into the websocket session.

+

This type can be used to send messages into the websocket.

+

Implementations§

source§

impl Session

source

pub async fn text(&mut self, msg: impl Into<ByteString>) -> Result<(), Closed>

Send text into the websocket

+ +
if session.text("Some text").await.is_err() {
+    // session closed
+}
+
source

pub async fn binary(&mut self, msg: impl Into<Bytes>) -> Result<(), Closed>

Send raw bytes into the websocket

+ +
if session.binary(b"some bytes").await.is_err() {
+    // session closed
+}
+
source

pub async fn ping(&mut self, msg: &[u8]) -> Result<(), Closed>

Ping the client

+

For many applications, it will be important to send regular pings to keep track of if the +client has disconnected

+ +
if session.ping(b"").await.is_err() {
+    // session is closed
+}
+
source

pub async fn pong(&mut self, msg: &[u8]) -> Result<(), Closed>

Pong the client

+ +
match msg {
+    Message::Ping(bytes) => {
+        let _ = session.pong(&bytes).await;
+    }
+    _ => (),
+}
+
source

pub async fn close(self, reason: Option<CloseReason>) -> Result<(), Closed>

Send a close message, and consume the session

+

All clones will return Err(Closed) if used after this call

+ +
session.close(None).await
+

Trait Implementations§

source§

impl Clone for Session

source§

fn clone(&self) -> Session

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

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + 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.

+
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere + 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.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

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<V, T> VZip<V> for Twhere + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
\ No newline at end of file diff --git a/actix_ws/struct.StreamingBody.html b/actix_ws/struct.StreamingBody.html new file mode 100644 index 000000000..13337f8d1 --- /dev/null +++ b/actix_ws/struct.StreamingBody.html @@ -0,0 +1,255 @@ +StreamingBody in actix_ws - Rust

Struct actix_ws::StreamingBody

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

A response body for Websocket HTTP Requests

+

Trait Implementations§

source§

impl Stream for StreamingBody

§

type Item = Result<Bytes, Error>

Values yielded by the stream.
source§

fn poll_next( + self: Pin<&mut Self>, + cx: &mut Context<'_> +) -> Poll<Option<Self::Item>>

Attempt to pull out the next value of this stream, registering the +current task for wakeup if the value is not yet available, and returning +None if the stream is exhausted. Read more
§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the stream. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere + 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.

+
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<T> StreamExt for Twhere + T: Stream + ?Sized,

§

fn next(&mut self) -> Next<'_, Self>where + Self: Unpin,

Creates a future that resolves to the next item in the stream. Read more
§

fn into_future(self) -> StreamFuture<Self>where + Self: Sized + Unpin,

Converts this stream into a future of (next_item, tail_of_stream). +If the stream terminates, then the next item is None. Read more
§

fn map<T, F>(self, f: F) -> Map<Self, F>where + F: FnMut(Self::Item) -> T, + Self: Sized,

Maps this stream’s items to a different type, returning a new stream of +the resulting type. Read more
§

fn enumerate(self) -> Enumerate<Self>where + Self: Sized,

Creates a stream which gives the current iteration count as well as +the next value. Read more
§

fn filter<Fut, F>(self, f: F) -> Filter<Self, Fut, F>where + F: FnMut(&Self::Item) -> Fut, + Fut: Future<Output = bool>, + Self: Sized,

Filters the values produced by this stream according to the provided +asynchronous predicate. Read more
§

fn filter_map<Fut, T, F>(self, f: F) -> FilterMap<Self, Fut, F>where + F: FnMut(Self::Item) -> Fut, + Fut: Future<Output = Option<T>>, + Self: Sized,

Filters the values produced by this stream while simultaneously mapping +them to a different type according to the provided asynchronous closure. Read more
§

fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>where + F: FnMut(Self::Item) -> Fut, + Fut: Future, + Self: Sized,

Computes from this stream’s items new items of a different type using +an asynchronous closure. Read more
§

fn collect<C>(self) -> Collect<Self, C>where + C: Default + Extend<Self::Item>, + Self: Sized,

Transforms a stream into a collection, returning a +future representing the result of that computation. Read more
§

fn unzip<A, B, FromA, FromB>(self) -> Unzip<Self, FromA, FromB>where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Stream<Item = (A, B)>,

Converts a stream of pairs into a future, which +resolves to pair of containers. Read more
§

fn concat(self) -> Concat<Self>where + Self: Sized, + Self::Item: Extend<<Self::Item as IntoIterator>::Item> + IntoIterator + Default,

Concatenate all items of a stream into a single extendable +destination, returning a future representing the end result. Read more
§

fn count(self) -> Count<Self>where + Self: Sized,

Drives the stream to completion, counting the number of items. Read more
§

fn cycle(self) -> Cycle<Self>where + Self: Sized + Clone,

Repeats a stream endlessly. Read more
§

fn fold<T, Fut, F>(self, init: T, f: F) -> Fold<Self, Fut, T, F>where + F: FnMut(T, Self::Item) -> Fut, + Fut: Future<Output = T>, + Self: Sized,

Execute an accumulating asynchronous computation over a stream, +collecting all the values into one final result. Read more
§

fn any<Fut, F>(self, f: F) -> Any<Self, Fut, F>where + F: FnMut(Self::Item) -> Fut, + Fut: Future<Output = bool>, + Self: Sized,

Execute predicate over asynchronous stream, and return true if any element in stream satisfied a predicate. Read more
§

fn all<Fut, F>(self, f: F) -> All<Self, Fut, F>where + F: FnMut(Self::Item) -> Fut, + Fut: Future<Output = bool>, + Self: Sized,

Execute predicate over asynchronous stream, and return true if all element in stream satisfied a predicate. Read more
§

fn flatten(self) -> Flatten<Self>where + Self::Item: Stream, + Self: Sized,

Flattens a stream of streams into just one continuous stream. Read more
§

fn flatten_unordered( + self, + limit: impl Into<Option<usize>> +) -> FlattenUnorderedWithFlowController<Self, ()>where + Self::Item: Stream + Unpin, + Self: Sized,

Flattens a stream of streams into just one continuous stream. Polls +inner streams produced by the base stream concurrently. Read more
§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + F: FnMut(Self::Item) -> U, + U: Stream, + Self: Sized,

Maps a stream like [StreamExt::map] but flattens nested Streams. Read more
§

fn flat_map_unordered<U, F>( + self, + limit: impl Into<Option<usize>>, + f: F +) -> FlatMapUnordered<Self, U, F>where + U: Stream + Unpin, + F: FnMut(Self::Item) -> U, + Self: Sized,

Maps a stream like [StreamExt::map] but flattens nested Streams +and polls them concurrently, yielding items in any order, as they made +available. Read more
§

fn scan<S, B, Fut, F>(self, initial_state: S, f: F) -> Scan<Self, S, Fut, F>where + F: FnMut(&mut S, Self::Item) -> Fut, + Fut: Future<Output = Option<B>>, + Self: Sized,

Combinator similar to [StreamExt::fold] that holds internal state +and produces a new stream. Read more
§

fn skip_while<Fut, F>(self, f: F) -> SkipWhile<Self, Fut, F>where + F: FnMut(&Self::Item) -> Fut, + Fut: Future<Output = bool>, + Self: Sized,

Skip elements on this stream while the provided asynchronous predicate +resolves to true. Read more
§

fn take_while<Fut, F>(self, f: F) -> TakeWhile<Self, Fut, F>where + F: FnMut(&Self::Item) -> Fut, + Fut: Future<Output = bool>, + Self: Sized,

Take elements from this stream while the provided asynchronous predicate +resolves to true. Read more
§

fn take_until<Fut>(self, fut: Fut) -> TakeUntil<Self, Fut>where + Fut: Future, + Self: Sized,

Take elements from this stream until the provided future resolves. Read more
§

fn for_each<Fut, F>(self, f: F) -> ForEach<Self, Fut, F>where + F: FnMut(Self::Item) -> Fut, + Fut: Future<Output = ()>, + Self: Sized,

Runs this stream to completion, executing the provided asynchronous +closure for each element on the stream. Read more
§

fn for_each_concurrent<Fut, F>( + self, + limit: impl Into<Option<usize>>, + f: F +) -> ForEachConcurrent<Self, Fut, F>where + F: FnMut(Self::Item) -> Fut, + Fut: Future<Output = ()>, + Self: Sized,

Runs this stream to completion, executing the provided asynchronous +closure for each element on the stream concurrently as elements become +available. Read more
§

fn take(self, n: usize) -> Take<Self>where + Self: Sized,

Creates a new stream of at most n items of the underlying stream. Read more
§

fn skip(self, n: usize) -> Skip<Self>where + Self: Sized,

Creates a new stream which skips n items of the underlying stream. Read more
§

fn fuse(self) -> Fuse<Self>where + Self: Sized,

Fuse a stream such that poll_next will never +again be called once it has finished. This method can be used to turn +any Stream into a FusedStream. Read more
§

fn by_ref(&mut self) -> &mut Self

Borrows a stream, rather than consuming it. Read more
§

fn catch_unwind(self) -> CatchUnwind<Self>where + Self: Sized + UnwindSafe,

Catches unwinding panics while polling the stream. Read more
§

fn boxed<'a>(self) -> Pin<Box<dyn Stream<Item = Self::Item> + Send + 'a>>where + Self: Sized + Send + 'a,

Wrap the stream in a Box, pinning it. Read more
§

fn boxed_local<'a>(self) -> Pin<Box<dyn Stream<Item = Self::Item> + 'a>>where + Self: Sized + 'a,

Wrap the stream in a Box, pinning it. Read more
§

fn buffered(self, n: usize) -> Buffered<Self>where + Self::Item: Future, + Self: Sized,

An adaptor for creating a buffered list of pending futures. Read more
§

fn buffer_unordered(self, n: usize) -> BufferUnordered<Self>where + Self::Item: Future, + Self: Sized,

An adaptor for creating a buffered list of pending futures (unordered). Read more
§

fn zip<St>(self, other: St) -> Zip<Self, St>where + St: Stream, + Self: Sized,

An adapter for zipping two streams together. Read more
§

fn chain<St>(self, other: St) -> Chain<Self, St>where + St: Stream<Item = Self::Item>, + Self: Sized,

Adapter for chaining two streams. Read more
§

fn peekable(self) -> Peekable<Self>where + Self: Sized,

Creates a new stream which exposes a peek method. Read more
§

fn chunks(self, capacity: usize) -> Chunks<Self>where + Self: Sized,

An adaptor for chunking up items of the stream inside a vector. Read more
§

fn ready_chunks(self, capacity: usize) -> ReadyChunks<Self>where + Self: Sized,

An adaptor for chunking up ready items of the stream inside a vector. Read more
§

fn forward<S>(self, sink: S) -> Forward<Self, S>where + S: Sink<Self::Ok, Error = Self::Error>, + Self: TryStream + Sized,

A future that completes after the given stream has been fully processed +into the sink and the sink has been flushed and closed. Read more
§

fn split<Item>(self) -> (SplitSink<Self, Item>, SplitStream<Self>)where + Self: Sink<Item> + Sized,

Splits this Stream + Sink object into separate Sink and Stream +objects. Read more
§

fn inspect<F>(self, f: F) -> Inspect<Self, F>where + F: FnMut(&Self::Item), + Self: Sized,

Do something with each item of this stream, afterwards passing it on. Read more
§

fn left_stream<B>(self) -> Either<Self, B>where + B: Stream<Item = Self::Item>, + Self: Sized,

Wrap this stream in an Either stream, making it the left-hand variant +of that Either. Read more
§

fn right_stream<B>(self) -> Either<B, Self>where + B: Stream<Item = Self::Item>, + Self: Sized,

Wrap this stream in an Either stream, making it the right-hand variant +of that Either. Read more
§

fn poll_next_unpin(&mut self, cx: &mut Context<'_>) -> Poll<Option<Self::Item>>where + Self: Unpin,

A convenience method for calling [Stream::poll_next] on Unpin +stream types.
§

fn select_next_some(&mut self) -> SelectNextSome<'_, Self>where + Self: Unpin + FusedStream,

Returns a Future that resolves when the next item in this stream is +ready. Read more
source§

impl<T, U> TryFrom<U> for Twhere + 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.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

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 Swhere + 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<'_> +) -> 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 Swhere + S: TryStream + ?Sized,

§

fn err_into<E>(self) -> ErrInto<Self, E>where + Self: Sized, + Self::Error: Into<E>,

Wraps the current stream in a new stream which converts the error type +into the one provided. Read more
§

fn map_ok<T, F>(self, f: F) -> MapOk<Self, F>where + Self: Sized, + F: FnMut(Self::Ok) -> T,

Wraps the current stream in a new stream which maps the success value +using the provided closure. Read more
§

fn map_err<E, F>(self, f: F) -> MapErr<Self, F>where + Self: Sized, + F: FnMut(Self::Error) -> E,

Wraps the current stream in a new stream which maps the error value +using the provided closure. Read more
§

fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F>where + F: FnMut(Self::Ok) -> Fut, + Fut: TryFuture<Error = Self::Error>, + Self: Sized,

Chain on a computation for when a value is ready, passing the successful +results to the provided closure f. Read more
§

fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F>where + F: FnMut(Self::Error) -> Fut, + Fut: TryFuture<Ok = Self::Ok>, + Self: Sized,

Chain on a computation for when an error happens, passing the +erroneous result to the provided closure f. Read more
§

fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F>where + F: FnMut(&Self::Ok), + Self: Sized,

Do something with the success value of this stream, afterwards passing +it on. Read more
§

fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>where + F: FnMut(&Self::Error), + Self: Sized,

Do something with the error value of this stream, afterwards passing it on. Read more
§

fn into_stream(self) -> IntoStream<Self>where + Self: Sized,

Wraps a [TryStream] into a type that implements +Stream Read more
§

fn try_next(&mut self) -> TryNext<'_, Self>where + Self: Unpin,

Creates a future that attempts to resolve the next item in the stream. +If an error is encountered before the next item, the error is returned +instead. Read more
§

fn try_for_each<Fut, F>(self, f: F) -> TryForEach<Self, Fut, F>where + F: FnMut(Self::Ok) -> Fut, + Fut: TryFuture<Ok = (), Error = Self::Error>, + Self: Sized,

Attempts to run this stream to completion, executing the provided +asynchronous closure for each element on the stream. Read more
§

fn try_skip_while<Fut, F>(self, f: F) -> TrySkipWhile<Self, Fut, F>where + F: FnMut(&Self::Ok) -> Fut, + Fut: TryFuture<Ok = bool, Error = Self::Error>, + Self: Sized,

Skip elements on this stream while the provided asynchronous predicate +resolves to true. Read more
§

fn try_take_while<Fut, F>(self, f: F) -> TryTakeWhile<Self, Fut, F>where + F: FnMut(&Self::Ok) -> Fut, + Fut: TryFuture<Ok = bool, Error = Self::Error>, + Self: Sized,

Take elements on this stream while the provided asynchronous predicate +resolves to true. Read more
§

fn try_for_each_concurrent<Fut, F>( + self, + limit: impl Into<Option<usize>>, + f: F +) -> TryForEachConcurrent<Self, Fut, F>where + F: FnMut(Self::Ok) -> Fut, + Fut: Future<Output = Result<(), Self::Error>>, + Self: Sized,

Attempts to run this stream to completion, executing the provided asynchronous +closure for each element on the stream concurrently as elements become +available, exiting as soon as an error occurs. Read more
§

fn try_collect<C>(self) -> TryCollect<Self, C>where + C: Default + Extend<Self::Ok>, + Self: Sized,

Attempt to transform a stream into a collection, +returning a future representing the result of that computation. Read more
§

fn try_chunks(self, capacity: usize) -> TryChunks<Self>where + Self: Sized,

An adaptor for chunking up successful items of the stream inside a vector. Read more
§

fn try_ready_chunks(self, capacity: usize) -> TryReadyChunks<Self>where + Self: Sized,

An adaptor for chunking up successful, ready items of the stream inside a vector. Read more
§

fn try_filter<Fut, F>(self, f: F) -> TryFilter<Self, Fut, F>where + Fut: Future<Output = bool>, + F: FnMut(&Self::Ok) -> Fut, + Self: Sized,

Attempt to filter the values produced by this stream according to the +provided asynchronous closure. Read more
§

fn try_filter_map<Fut, F, T>(self, f: F) -> TryFilterMap<Self, Fut, F>where + Fut: TryFuture<Ok = Option<T>, Error = Self::Error>, + F: FnMut(Self::Ok) -> Fut, + Self: Sized,

Attempt to filter the values produced by this stream while +simultaneously mapping them to a different type according to the +provided asynchronous closure. Read more
§

fn try_flatten_unordered( + self, + limit: impl Into<Option<usize>> +) -> TryFlattenUnordered<Self>where + Self::Ok: TryStream + Unpin, + <Self::Ok as TryStream>::Error: From<Self::Error>, + Self: Sized,

Flattens a stream of streams into just one continuous stream. Produced streams +will be polled concurrently and any errors will be passed through without looking at them. +If the underlying base stream returns an error, it will be immediately propagated. Read more
§

fn try_flatten(self) -> TryFlatten<Self>where + Self::Ok: TryStream, + <Self::Ok as TryStream>::Error: From<Self::Error>, + Self: Sized,

Flattens a stream of streams into just one continuous stream. Read more
§

fn try_fold<T, Fut, F>(self, init: T, f: F) -> TryFold<Self, Fut, T, F>where + F: FnMut(T, Self::Ok) -> Fut, + Fut: TryFuture<Ok = T, Error = Self::Error>, + Self: Sized,

Attempt to execute an accumulating asynchronous computation over a +stream, collecting all the values into one final result. Read more
§

fn try_concat(self) -> TryConcat<Self>where + Self: Sized, + Self::Ok: Extend<<Self::Ok as IntoIterator>::Item> + IntoIterator + Default,

Attempt to concatenate all items of a stream into a single +extendable destination, returning a future representing the end result. Read more
§

fn try_buffer_unordered(self, n: usize) -> TryBufferUnordered<Self>where + Self::Ok: TryFuture<Error = Self::Error>, + Self: Sized,

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

fn try_buffered(self, n: usize) -> TryBuffered<Self>where + 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<'_> +) -> 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 + Self: Sized + TryStreamExt<Error = Error>, + Self::Ok: AsRef<[u8]>,

Adapter that converts this stream into an AsyncBufRead. Read more
§

fn try_all<Fut, F>(self, f: F) -> TryAll<Self, Fut, F>where + Self: Sized, + F: FnMut(Self::Ok) -> Fut, + Fut: Future<Output = bool>,

Attempt to execute a predicate over an asynchronous stream and evaluate if all items +satisfy the predicate. Exits early if an Err is encountered or if an Ok item is found +that does not satisfy the predicate. Read more
§

fn try_any<Fut, F>(self, f: F) -> TryAny<Self, Fut, F>where + Self: Sized, + F: FnMut(Self::Ok) -> Fut, + Fut: Future<Output = bool>,

Attempt to execute a predicate over an asynchronous stream and evaluate if any items +satisfy the predicate. Exits early if an Err is encountered or if an Ok item is found +that satisfies the predicate. Read more
§

impl<V, T> VZip<V> for Twhere + V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
\ No newline at end of file diff --git a/crates.js b/crates.js index 9abb31dc8..32f728137 100644 --- a/crates.js +++ b/crates.js @@ -1 +1 @@ -window.ALL_CRATES = ["actix_cors","actix_identity","actix_limitation","actix_protobuf","actix_redis","actix_session","actix_settings","actix_web_httpauth"]; \ No newline at end of file +window.ALL_CRATES = ["actix_cors","actix_identity","actix_limitation","actix_protobuf","actix_redis","actix_session","actix_settings","actix_web_httpauth","actix_ws"]; \ No newline at end of file diff --git a/search-index.js b/search-index.js index a4d07c5e1..0523c85f1 100644 --- a/search-index.js +++ b/search-index.js @@ -5,8 +5,9 @@ var searchIndex = JSON.parse('{\ "actix_protobuf":{"doc":"Protobuf payload extractor for Actix Web.","t":"NNNNDDDEINLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLL","n":["ContentType","Deserialize","Overflow","Payload","ProtoBuf","ProtoBufConfig","ProtoBufMessage","ProtoBufPayloadError","ProtoBufResponseBuilder","Serialize","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","default","deref","deref_mut","error_response","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from_request","into","into","into","into","into_future","limit","limit","new","poll","protobuf","resource_path","respond_to","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_poll","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip"],"q":[[0,"actix_protobuf"],[64,"prost::message"],[65,"actix_web::response::response"],[66,"core::fmt"],[67,"core::fmt"],[68,"actix_http::error"],[69,"actix_web::request"],[70,"actix_http::payload"],[71,"core::default"],[72,"core::pin"],[73,"core::task::wake"],[74,"core::task::poll"],[75,"actix_web::error::error"],[76,"core::result"],[77,"actix_router::path"],[78,"alloc::string"],[79,"core::any"]],"d":["Content type error","Deserialize error","Payload size is bigger than 256k","Payload error","","","","","","Serialize error","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Change max size of payload. By default max size is 256Kb","Change max size of payload. By default max size is 256Kb","Create ProtoBufMessage for request.","","","","","","","","","","","","","","","","","","","","","","",""],"i":[4,4,4,4,0,0,0,0,0,4,2,1,15,4,2,1,15,4,1,2,2,4,2,2,4,4,2,1,15,4,4,4,2,2,1,15,4,15,1,15,15,15,25,2,2,2,4,2,1,15,4,2,1,15,4,15,2,1,15,4,2,1,15,4],"f":[0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],1],[[[2,[-1]]],-1,3],[[[2,[-1]]],-1,3],[4,5],[[[2,[-1]],6],7,[8,3]],[[[2,[-1]],6],7,[9,3]],[[4,6],7],[[4,6],7],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[10,4],[11,4],[[12,13]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[],[]],[[1,14],1],[[[15,[-1]],14],[[15,[-1]]],[3,16]],[[12,13],[[15,[-1]]],[3,16]],[[[17,[[15,[-1]]]],18],19,[3,16]],[[-1,-2],[[21,[5,20]]],[],3],[-1,22,[]],[[[2,[-1]],12],5,[3,16]],[-1,23,[]],[-1,23,[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[[[17,[-1]],18],19,[]],[-1,24,[]],[-1,24,[]],[-1,24,[]],[-1,24,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]]],"c":[],"p":[[3,"ProtoBufConfig",0],[3,"ProtoBuf",0],[8,"Message",64],[4,"ProtoBufPayloadError",0],[3,"HttpResponse",65],[3,"Formatter",66],[6,"Result",66],[8,"Display",66],[8,"Debug",66],[3,"DecodeError",67],[4,"PayloadError",68],[3,"HttpRequest",69],[4,"Payload",70],[15,"usize"],[3,"ProtoBufMessage",0],[8,"Default",71],[3,"Pin",72],[3,"Context",73],[4,"Poll",74],[3,"Error",75],[4,"Result",76],[3,"Path",77],[3,"String",78],[3,"TypeId",79],[8,"ProtoBufResponseBuilder",0]],"b":[[22,"impl-Display-for-ProtoBuf%3CT%3E"],[23,"impl-Debug-for-ProtoBuf%3CT%3E"],[24,"impl-Display-for-ProtoBufPayloadError"],[25,"impl-Debug-for-ProtoBufPayloadError"],[30,"impl-From%3CDecodeError%3E-for-ProtoBufPayloadError"],[31,"impl-From%3CPayloadError%3E-for-ProtoBufPayloadError"]]},\ "actix_redis":{"doc":"Redis integration for actix.","t":"NNDNNENNNNNNNDNNEENNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLOLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Array","BulkString","Command","Connection","Disconnected","Error","Error","IO","Integer","Internal","Nil","NotConnected","Redis","RedisActor","Remote","Resp","RespError","RespValue","SimpleString","Unexpected","append","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","eq","error","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_resp_int","handle","handle","into","into","into","into","into","push","resp_array","restarting","source","source","start","started","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"],"q":[[0,"actix_redis"],[97,"core::iter::traits::collect"],[98,"std::io::error"],[99,"actix::actor"],[100,"core::fmt"],[101,"core::fmt"],[102,"alloc::string"],[103,"alloc::vec"],[104,"alloc::sync"],[105,"futures_channel::mpsc"],[106,"core::marker"],[107,"core::convert"],[108,"core::error"],[109,"core::option"],[110,"actix::address"],[111,"actix::context"],[112,"core::any"]],"d":["Zero, one or more other RespValues.","A bulk string. In Redis terminology a string is a …","Command for sending data to Redis.","Error creating a connection, or an error with a connection …","Cancel all waiters when connection is dropped.","General purpose actix-redis error.","An error from the Redis server","An IO error occurred","Redis documentation defines an integer as being a signed …","A non-specific internal error that prevented an operation …","","Receiving message during reconnecting.","","Redis communication actor.","A remote error","A RESP parsing/serialising error occurred","","A single RESP value, this owns the data that is read/to-be …","","An unexpected error. In this context “unexpected” …","Convenience function for building dynamic Redis commands …","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Push item to Resp array","Macro to create a RESP array, useful for preparing …","","","","Start new Supervisor with RedisActor.","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[1,1,0,3,12,0,1,3,1,3,1,12,12,0,3,3,0,0,1,3,1,6,9,12,1,3,6,9,12,1,3,1,3,1,3,1,6,9,12,12,1,3,3,6,9,12,12,1,1,1,1,1,1,1,1,3,3,3,1,6,6,6,9,12,1,3,1,0,6,12,3,6,6,1,3,12,3,6,9,12,1,3,6,9,12,1,3,6,9,12,1,3,6,9,12,1,3],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,-1],1,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[3,3],[[-1,-2],4,[],[]],[[-1,-2],4,[],[]],[[1,1],5],[[6,7],8],[[9,10],11],[[12,10],11],[[12,10],11],[[1,10],[[14,[4,13]]]],[[3,10],[[14,[4,13]]]],[[3,10],[[14,[4,13]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[3,12],[15,1],[16,1],[[[18,[17]]],1],[19,1],[16,1],[[[20,[17]]],1],[[[21,[19]]],1],[-1,-1,[]],[7,3],[[[22,[-1]]],3,23],[-1,-1,[]],[1,[[14,[1,3]]]],[[6,9]],[[6,[14,[1,3]]],4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[1,-1],4,[[24,[1]]]],0,[6,4],[12,[[26,[25]]]],[3,[[26,[25]]]],[-1,[[27,[6]]],[[24,[16]]]],[[6,[28,[6]]],4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,16,[]],[-1,16,[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,[[14,[-2]]],[],[]],[-1,29,[]],[-1,29,[]],[-1,29,[]],[-1,29,[]],[-1,29,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]]],"c":[],"p":[[4,"RespValue",0],[8,"IntoIterator",97],[4,"RespError",0],[15,"tuple"],[15,"bool"],[3,"RedisActor",0],[3,"Error",98],[4,"Running",99],[3,"Command",0],[3,"Formatter",100],[6,"Result",100],[4,"Error",0],[3,"Error",100],[4,"Result",101],[15,"usize"],[3,"String",102],[15,"u8"],[3,"Vec",103],[15,"str"],[15,"slice"],[3,"Arc",104],[3,"TrySendError",105],[8,"Send",106],[8,"Into",107],[8,"Error",108],[4,"Option",109],[3,"Addr",110],[3,"Context",111],[3,"TypeId",112]],"b":[[38,"impl-Debug-for-Error"],[39,"impl-Display-for-Error"],[41,"impl-Debug-for-Error"],[42,"impl-Display-for-Error"],[47,"impl-From%3Cusize%3E-for-RespValue"],[48,"impl-From%3C%26String%3E-for-RespValue"],[49,"impl-From%3CVec%3Cu8%3E%3E-for-RespValue"],[50,"impl-From%3C%26str%3E-for-RespValue"],[51,"impl-From%3CString%3E-for-RespValue"],[52,"impl-From%3C%26%5Bu8%5D%3E-for-RespValue"],[53,"impl-From%3CArc%3Cstr%3E%3E-for-RespValue"],[55,"impl-From%3CError%3E-for-Error"],[56,"impl-From%3CTrySendError%3CT%3E%3E-for-Error"],[59,"impl-Handler%3CCommand%3E-for-RedisActor"],[60,"impl-StreamHandler%3CResult%3CRespValue,+Error%3E%3E-for-RedisActor"]]},\ "actix_session":{"doc":"Session management for Actix Web.","t":"NNNDIDDDENLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLDNENNDNNEDNELLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDNENNNDDDDENNDIELLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLKLLLLLLLLLLLL","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","RedisActorSessionStore","RedisActorSessionStoreBuilder","RedisSessionStore","RedisSessionStoreBuilder","SaveError","Serialization","Serialization","SessionKey","SessionStore","UpdateError","as_ref","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","builder","builder","cache_keygen","cache_keygen","clone","clone_into","default","delete","delete","delete","delete","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","load","load","load","load","new","new","save","save","save","save","source","source","source","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update","update","update","update","update_ttl","update_ttl","update_ttl","update_ttl","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip"],"q":[[0,"actix_session"],[90,"actix_session::config"],[187,"actix_session::storage"],[323,"cookie::secure::key"],[324,"core::clone"],[325,"alloc::string"],[326,"std::collections::hash::map"],[327,"core::cell"],[328,"actix_http::body::boxed"],[329,"actix_web::response::response"],[330,"core::fmt"],[331,"core::fmt"],[332,"actix_web::request"],[333,"actix_http::payload"],[334,"core::option"],[335,"core::result"],[336,"serde::de"],[337,"core::convert"],[338,"serde::ser"],[339,"actix_web::service"],[340,"actix_service"],[341,"core::error"],[342,"core::any"],[343,"cookie::draft"],[344,"time::duration"],[345,"core::ops::function"],[346,"core::marker"],[347,"core::marker"],[348,"alloc::boxed"],[349,"core::pin"]],"d":["Session state has been updated - the changes will have to …","The session has been flagged for deletion - the session …","The session has been flagged for renewal.","The primary interface to access and modify session state.","Extract a Session object from various actix-web types …","Error returned by Session::get.","Error returned by Session::insert.","A middleware for session management in Actix Web …","Status of a Session.","The session state has not been modified since its …","","","","","","","","","","","A fluent API to configure SessionMiddleware.","Clear the session.","","","","","","","Configuration options to tune the behaviour of …","","Get all raw key-value data from the session.","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Get a value from the session.","Extract a Session object.","Inserts a key-value pair into the session.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Use SessionMiddleware::new to initialize the session …","","Removes session both client and server side.","Remove value from the session.","Remove value from the session and deserialize.","Renews the session key, assigning existing session state …","","","Returns session status.","Pluggable storage backends for session state.","","","","","","","","","","","","","","","","","","","","","","","","","","A session lifecycle strategy where the session cookie …","The session cookie will expire when the current browser …","Determines how to secure the content of the session cookie.","The TTL is refreshed every time the server receives a …","The TTL is refreshed every time the session state changes …","A session lifecycle strategy where the session cookie will …","The session cookie will be a persistent cookie.","The cookie content is encrypted when using …","Determines what type of session cookie should be used and …","A fluent, customized SessionMiddleware builder.","The cookie content is signed when using …","Configuration for which events should trigger an extension …","","","","","","","","","","","","","Finalise the builder and return a SessionMiddleware …","","","","","","","","","","","Choose how the session cookie content should be secured.","Set the Domain attribute for the cookie used to store the …","Set the HttpOnly attribute for the cookie used to store …","Set the name of the cookie used to store the session ID.","Set the Path attribute for the cookie used to store the …","Set the SameSite attribute for the cookie used to store …","Set the Secure attribute for the cookie used to store the …","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Determines what type of session cookie should be used and …","Specifies how long the session cookie should live.","Determines under what circumstances the TTL of your …","Sets a time-to-live (TTL) when storing the session state …","Determine under what circumstances the TTL of your session …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Use the session key, stored in the session cookie, as …","Failed to deserialize session state.","Possible failures modes for SessionStore::load.","Something went wrong when retrieving the session state.","Something went wrong when persisting the session state.","Something went wrong when updating the session state.","Use Redis as session storage backend.","A fluent builder to construct a RedisActorSessionStore …","Use Redis as session storage backend.","A fluent builder to construct a RedisSessionStore instance …","Possible failures modes for SessionStore::save.","Failed to serialize session state.","Failed to serialize session state.","A session key, the string stored in a client-side cookie …","The interface to retrieve and save the current session …","Possible failures modes for SessionStore::update.","","","","","","","","","","","","","","","","","","","","Finalise the builder and return a RedisActorSessionStore …","Finalise the builder and return a RedisActorSessionStore …","A fluent API to configure RedisActorSessionStore.","A fluent API to configure RedisSessionStore. It takes as …","Set a custom cache key generation strategy, expecting a …","Set a custom cache key generation strategy, expecting a …","","","","Deletes a session from the store.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Loads the session state associated to a session key.","","","","Create a new instance of RedisActorSessionStore using the …","Create a new instance of RedisSessionStore using the …","Persist the session state for a newly created session.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Updates the session state associated to a pre-existing …","","","","Updates the TTL of the session state associated to a …","","","","","","","","","","","",""],"i":[8,8,8,0,0,0,0,0,0,8,6,4,8,13,16,6,4,8,13,16,6,4,6,4,8,6,4,8,0,8,4,8,13,16,8,13,13,16,16,6,4,8,13,13,16,16,4,4,54,4,6,4,8,13,16,6,6,4,4,4,4,13,16,4,0,6,4,8,13,16,6,4,8,13,16,6,4,8,13,16,6,4,8,13,16,6,4,8,13,16,0,32,0,35,35,0,32,36,0,0,36,0,2,32,33,34,35,36,2,32,33,34,35,36,2,32,33,34,35,36,32,33,34,35,36,2,2,2,2,2,2,2,33,34,32,33,34,35,36,2,32,32,32,33,34,35,36,2,32,33,34,35,36,2,34,34,33,33,32,33,34,35,36,2,32,33,34,35,36,2,32,33,34,35,36,2,32,33,34,35,36,2,32,33,34,35,36,0,51,0,51,52,53,0,0,0,0,0,52,53,0,0,0,39,41,40,42,51,52,53,39,47,43,41,40,42,51,52,53,39,47,43,40,42,41,43,40,42,43,43,47,3,41,47,43,39,51,51,52,52,53,53,39,41,40,42,51,52,53,39,47,43,41,40,42,51,52,53,39,47,43,3,41,47,43,41,43,3,41,47,43,51,52,53,43,51,52,53,41,40,42,51,52,53,39,39,47,43,41,40,42,51,52,53,39,47,43,41,40,42,51,52,53,39,47,43,3,41,47,43,3,41,47,43,41,40,42,51,52,53,39,47,43],"f":[0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,1],[[2,[-1]]],3],[4,5],[[[6,[-1]]],[[6,[-1]]],[7,3]],[4,4],[8,8],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],0,[[],8],[4,[[11,[[10,[9,9]]]]]],[[8,8],12],[13,[[15,[14]]]],[16,[[15,[14]]]],[[8,17],18],[[13,17],18],[[13,17],18],[[16,17],18],[[16,17],18],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[19,13],[-1,-1,[]],[19,16],[[20,21]],[[4,22],[[24,[[23,[-1]],13]]],25],[-1,4,[]],[[4,-1,-2],[[24,[5,16]]],[[26,[9]]],27],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,1],[[6,[-1]]],3],[[[6,[-1]],-2],[],3,[[29,[28]]]],[4,5],[[4,22],[[23,[9]]]],[[4,22],[[23,[[24,[-1,9]]]]],25],[4,5],[13,[[23,[30]]]],[16,[[23,[30]]]],[4,8],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,9,[]],[-1,9,[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[2,[-1]]],[[6,[-1]]],3],[32,32],[33,33],[34,34],[35,35],[36,36],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[[2,[-1]],36],[[2,[-1]]],3],[[[2,[-1]],[23,[9]]],[[2,[-1]]],3],[[[2,[-1]],12],[[2,[-1]]],3],[[[2,[-1]],9],[[2,[-1]]],3],[[[2,[-1]],9],[[2,[-1]]],3],[[[2,[-1]],37],[[2,[-1]]],3],[[[2,[-1]],12],[[2,[-1]]],3],[[],33],[[],34],[[32,17],18],[[33,17],18],[[34,17],18],[[35,17],18],[[36,17],18],[-1,-1,[]],[34,32],[33,32],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[2,[-1]],-2],[[2,[-1]]],3,[[26,[32]]]],[[34,38],34],[[34,35],34],[[33,38],33],[[33,35],33],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[39,22],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[40,41],[42,[[24,[43,19]]]],[-1,40,[[26,[9]]]],[-1,42,[[26,[9]]]],[[40,-1],40,44],[[42,-1],42,[44,45,46]],[43,43],[[-1,-2],5,[],[]],[[],47],[[-1,39],[[50,[[49,[48]]]]],[]],[[41,39],[[50,[[49,[48]]]]]],[[47,39],[[50,[[49,[48]]]]]],[[43,39],[[50,[[49,[48]]]]]],[[39,39],12],[[51,17],18],[[51,17],18],[[52,17],18],[[52,17],18],[[53,17],18],[[53,17],18],[[39,17],18],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,39],[[50,[[49,[48]]]]],[]],[[41,39],[[50,[[49,[48]]]]]],[[47,39],[[50,[[49,[48]]]]]],[[43,39],[[50,[[49,[48]]]]]],[-1,41,[[26,[9]]]],[-1,[[24,[43,19]]],[[26,[9]]]],[[-1,[10,[9,9]],38],[[50,[[49,[48]]]]],[]],[[41,[10,[9,9]],38],[[50,[[49,[48]]]]]],[[47,[10,[9,9]],38],[[50,[[49,[48]]]]]],[[43,[10,[9,9]],38],[[50,[[49,[48]]]]]],[51,[[23,[30]]]],[52,[[23,[30]]]],[53,[[23,[30]]]],[-1,-2,[],[]],[-1,9,[]],[-1,9,[]],[-1,9,[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[9,[[24,[39]]]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[-1,31,[]],[[-1,39,[10,[9,9]],38],[[50,[[49,[48]]]]],[]],[[41,39,[10,[9,9]],38],[[50,[[49,[48]]]]]],[[47,39,[10,[9,9]],38],[[50,[[49,[48]]]]]],[[43,39,[10,[9,9]],38],[[50,[[49,[48]]]]]],[[-1,39,38],[[50,[[49,[48]]]]],[]],[[41,39,38],[[50,[[49,[48]]]]]],[[47,39,38],[[50,[[49,[48]]]]]],[[43,39,38],[[50,[[49,[48]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]]],"c":[],"p":[[3,"Key",323],[3,"SessionMiddlewareBuilder",90],[8,"SessionStore",187],[3,"Session",0],[15,"tuple"],[3,"SessionMiddleware",0],[8,"Clone",324],[4,"SessionStatus",0],[3,"String",325],[3,"HashMap",326],[3,"Ref",327],[15,"bool"],[3,"SessionGetError",0],[3,"BoxBody",328],[3,"HttpResponse",329],[3,"SessionInsertError",0],[3,"Formatter",330],[6,"Result",330],[3,"Error",331],[3,"HttpRequest",332],[4,"Payload",333],[15,"str"],[4,"Option",334],[4,"Result",335],[8,"DeserializeOwned",336],[8,"Into",337],[8,"Serialize",338],[3,"ServiceRequest",339],[8,"Service",340],[8,"Error",341],[3,"TypeId",342],[4,"SessionLifecycle",90],[3,"BrowserSession",90],[3,"PersistentSession",90],[4,"TtlExtensionPolicy",90],[4,"CookieContentSecurity",90],[4,"SameSite",343],[3,"Duration",344],[3,"SessionKey",187],[3,"RedisActorSessionStoreBuilder",187],[3,"RedisActorSessionStore",187],[3,"RedisSessionStoreBuilder",187],[3,"RedisSessionStore",187],[8,"Fn",345],[8,"Send",346],[8,"Sync",346],[3,"CookieSessionStore",187],[8,"Future",347],[3,"Box",348],[3,"Pin",349],[4,"LoadError",187],[4,"SaveError",187],[4,"UpdateError",187],[8,"SessionExt",0]],"b":[[35,"impl-Display-for-SessionGetError"],[36,"impl-Debug-for-SessionGetError"],[37,"impl-Display-for-SessionInsertError"],[38,"impl-Debug-for-SessionInsertError"],[140,"impl-From%3CPersistentSession%3E-for-SessionLifecycle"],[141,"impl-From%3CBrowserSession%3E-for-SessionLifecycle"],[236,"impl-Display-for-LoadError"],[237,"impl-Debug-for-LoadError"],[238,"impl-Display-for-SaveError"],[239,"impl-Debug-for-SaveError"],[240,"impl-Debug-for-UpdateError"],[241,"impl-Display-for-UpdateError"]]},\ -"actix_settings":{"doc":"Easily manage Actix Web’s settings from a TOML file and …","t":"DDIEDNNNNNNNNNENNNENNNNEENEDENINNNNNNGEDNMMMMKMLLLLLLLLLLLLLLLLLLLLLLLLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLMMMMMLLKLLLLLLLLLMMMLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMM","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,"core::clone"],[318,"core::result"],[319,"serde::de"],[320,"serde::de"],[321,"core::fmt"],[322,"core::fmt"],[323,"std::env"],[324,"toml::de"],[325,"std::io::error"],[326,"core::str::error"],[327,"serde::de"],[328,"core::hash"],[329,"std::path"],[330,"core::error"],[331,"core::option"],[332,"alloc::string"],[333,"core::any"]],"d":["Settings types for Actix Web.","A host/port pair for the server to bind to.","Extension trait for applying parsed settings to the server …","The maximum number of pending connections.","Wrapper for server and application-specific settings.","The default number of connections. See struct docs.","The default keep-alive as defined by Actix Web.","The default connection limit. See struct docs.","The default number of connections. See struct docs.","The default number of workers. See struct docs.","The default timeout. Depends on context.","Marks development environment.","Disable keep-alive.","Environment variable does not exists or is invalid.","Errors that can be returned from methods in this crate.","File already exists on disk.","Invalid value.","I/O error.","The server keep-alive preference.","A specific number of connections.","A specific connection limit.","A specific number of connections.","A specific number of workers.","The maximum per-worker concurrent TLS connection limit.","The maximum per-worker number of concurrent connections.","Timeout in milliseconds.","Marker of intended deployment environment.","Marker type representing no defined application-specific …","The number of workers that the server should start.","Let the OS determine keep-alive duration.","A specialized FromStr trait that returns Error errors","Value is not an address.","Value is not a boolean.","Value is not an integer.","Marks production environment.","A specific keep-alive duration (in seconds).","Timeout in seconds.","Convenience type alias for BasicSettings with no defined …","A timeout duration in milliseconds or seconds.","TLS (HTTPS) configuration.","Error deserializing as TOML.","Actix Web server settings.","Actix Web server settings.","Application-specific settings.","Application-specific settings.","Apply some settings object value to self.","The maximum number of pending connections.","","","","","","","","","","","","","","","","","","","","","","","","","","","Path to certificate .pem file.","Timeout duration for connection shutdown.","Timeout duration for reading client request header.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","True if the Compress middleware should be enabled.","True if the Logger middleware should be enabled.","Tru if accepting TLS connections should be enabled.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Parse an instance of Self straight from the default TOML …","Parse an instance of Self straight from the default TOML …","","","","","","","","","","","","","Host part of address.","List of addresses for the server to bind to.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Server keep-alive preference.","The per-worker maximum concurrent TLS connection limit.","The per-worker maximum number of concurrent connections.","Marker of intended deployment environment.","The number of workers that the server should start.","Attempts to parse value and override the referenced field.","Attempts to read an environment variable, parse it, and …","Parse Self from string.","","","","","","","","","Parse an instance of Self from a TOML file located at …","Port part of address.","Path to private key .pem file.","Timeout duration for graceful worker shutdown.","","TLS (HTTPS) configuration.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Writes the default TOML template to a new file, located at …","","","","",""],"i":[0,0,0,0,0,2,3,4,5,7,8,6,3,20,0,20,20,20,0,2,4,5,7,0,0,8,0,0,0,3,0,20,20,20,6,3,8,0,0,0,20,40,11,40,11,41,10,20,1,2,3,4,5,6,7,8,9,10,11,13,20,1,2,3,4,5,6,7,8,9,10,11,13,9,10,10,1,2,3,4,5,6,7,8,9,10,11,13,1,2,3,4,5,6,7,8,9,10,11,13,1,2,3,4,5,6,7,8,9,10,11,13,10,10,9,1,2,3,4,5,6,7,8,9,10,11,13,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,11,11,11,13,13,13,20,20,1,2,3,4,5,6,7,8,9,10,11,13,20,20,20,20,20,20,1,2,3,4,5,6,7,8,9,10,11,13,11,11,1,2,3,4,5,6,7,8,9,10,11,13,1,10,20,1,2,3,4,5,6,7,8,9,10,11,13,10,10,10,10,10,11,11,33,1,2,3,4,5,6,7,8,11,1,9,10,20,10,1,2,3,4,5,6,7,8,9,10,11,13,20,20,1,2,3,4,5,6,7,8,9,10,11,13,20,1,2,3,4,5,6,7,8,9,10,11,13,20,1,2,3,4,5,6,7,8,9,10,11,13,20,1,2,3,4,5,6,7,8,9,10,11,13,11,42,42,42,42,42],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,-2],-1,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[[[11,[-1]]],[[11,[-1]]],12],[13,13],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[-1,[[15,[1]]],16],[-1,[[15,[2]]],16],[-1,[[15,[3]]],16],[-1,[[15,[4]]],16],[-1,[[15,[5]]],16],[-1,[[15,[6]]],16],[-1,[[15,[7]]],16],[-1,[[15,[8]]],16],[-1,[[15,[9]]],16],[-1,[[15,[10]]],16],[-1,[[15,[[11,[-2]]]]],16,17],[-1,[[15,[13]]],16],0,0,0,[[1,1],18],[[2,2],18],[[3,3],18],[[4,4],18],[[5,5],18],[[6,6],18],[[7,7],18],[[8,8],18],[[9,9],18],[[10,10],18],[[[11,[-1]],[11,[-1]]],18,19],[[13,13],18],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[20,21],22],[[20,21],22],[[1,21],22],[[2,21],22],[[3,21],22],[[4,21],22],[[5,21],22],[[6,21],22],[[7,21],22],[[8,21],22],[[9,21],22],[[10,21],22],[[[11,[-1]],21],22,23],[[13,21],22],[24,20],[25,20],[26,20],[27,20],[28,20],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],[[11,[-1]]],29],[30,[[15,[[11,[-1]],20]]],29],[[1,-1],14,31],[[2,-1],14,31],[[3,-1],14,31],[[4,-1],14,31],[[5,-1],14,31],[[6,-1],14,31],[[7,-1],14,31],[[8,-1],14,31],[[9,-1],14,31],[[10,-1],14,31],[[[11,[-1]],-2],14,32,31],[[13,-1],14,31],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[[-1,-2],[[15,[14,20]]],33,[[34,[30]]]],[[-1,-2],[[15,[14,20]]],33,[[34,[30]]]],[30,[[15,[-1,20]]],[]],[30,[[15,[1,20]]]],[30,[[15,[2,20]]]],[30,[[15,[3,20]]]],[30,[[15,[4,20]]]],[30,[[15,[5,20]]]],[30,[[15,[6,20]]]],[30,[[15,[7,20]]]],[30,[[15,[8,20]]]],[-1,[[15,[[11,[-2]],20]]],[[34,[35]]],29],0,0,0,[20,[[37,[36]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,38,[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[15,[14,20]]],[[34,[35]]]],0,0,0,0,0],"c":[],"p":[[3,"Address",0],[4,"Backlog",0],[4,"KeepAlive",0],[4,"MaxConnectionRate",0],[4,"MaxConnections",0],[4,"Mode",0],[4,"NumWorkers",0],[4,"Timeout",0],[3,"Tls",0],[3,"ActixSettings",0],[3,"BasicSettings",0],[8,"Clone",317],[3,"NoSettings",0],[15,"tuple"],[4,"Result",318],[8,"Deserializer",319],[8,"Deserialize",319],[15,"bool"],[8,"PartialEq",320],[4,"Error",0],[3,"Formatter",321],[6,"Result",321],[8,"Debug",321],[3,"ParseIntError",322],[4,"VarError",323],[3,"Error",324],[3,"Error",325],[3,"ParseBoolError",326],[8,"DeserializeOwned",319],[15,"str"],[8,"Hasher",327],[8,"Hash",327],[8,"Parse",0],[8,"AsRef",328],[3,"Path",329],[8,"Error",330],[4,"Option",331],[3,"String",332],[3,"TypeId",333],[6,"Settings",0],[8,"ApplySettings",0],[13,"InvalidValue",312]],"b":[[163,"impl-Display-for-Error"],[164,"impl-Debug-for-Error"],[177,"impl-From%3CParseIntError%3E-for-Error"],[178,"impl-From%3CVarError%3E-for-Error"],[179,"impl-From%3CError%3E-for-Error"],[180,"impl-From%3CError%3E-for-Error"],[181,"impl-From%3CParseBoolError%3E-for-Error"]],"a":{"https":[39],"ssl":[39]}},\ -"actix_web_httpauth":{"doc":"HTTP authentication schemes for Actix Web.","t":"AAAIDQAALLLLLLLLLKLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDENNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLAADNDDNNNEINNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDAALLLLLLLLLLLLLLKLLLLLLLDLLLLLLLLLLLLLLLLLLLLLLDDENNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLL","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","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"],[219,"actix_web_httpauth::headers::www_authenticate"],[245,"actix_web_httpauth::headers::www_authenticate::basic"],[268,"actix_web_httpauth::headers::www_authenticate::bearer"],[311,"actix_web_httpauth::middleware"],[328,"actix_web::response::response"],[329,"core::fmt"],[330,"core::fmt"],[331,"alloc::string"],[332,"core::result"],[333,"core::any"],[334,"alloc::borrow"],[335,"core::convert"],[336,"actix_web::request"],[337,"actix_http::payload"],[338,"core::option"],[339,"core::cmp"],[340,"core::hash"],[341,"core::clone"],[342,"core::cmp"],[343,"core::cmp"],[344,"base64::decode"],[345,"http::header::value"],[346,"core::hash"],[347,"http::header::value"],[348,"actix_http::http_message"],[349,"core::cmp"],[350,"bytes::bytes"],[351,"core::fmt"],[352,"actix_web::extract"],[353,"actix_web::service"],[354,"actix_service"]],"d":["Type-safe authentication information extractors.","Typed HTTP headers.","HTTP Authentication middleware.","Trait implemented for types that provides configuration …","Authentication error returned by authentication extractors.","Associated challenge type.","Extractor for the “Basic” HTTP Authentication Scheme.","Extractor for the “Bearer” HTTP Authentication Scheme.","","","Returns mutable reference to the inner challenge instance.","","","","Returns the argument unchanged.","","Calls U::from(self).","Convert the config instance into a HTTP challenge.","Creates new authentication error from the provided …","","Returns mutable reference to the inner status code.","","","","","","Attach Error to the current Authentication error.","Attach error description to the current Authentication …","Attach error URI to the current Authentication error.","Extractor for HTTP Basic auth.","BasicAuth extractor configuration used for WWW-Authenticate…","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","Returns client’s password.","Set challenge realm attribute.","","","","","","","","","Returns client’s user-ID.","","","Extractor for HTTP Bearer auth","BearerAuth extractor configuration.","Bearer authorization error types, described in RFC 6750.","The request requires higher privileges than provided by …","The request is missing a required parameter, includes an …","The access token provided is expired, revoked, malformed, …","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Set challenge realm attribute.","Set challenge scope attribute.","Returns HTTP status code suitable for current error type.","","","","","Returns bearer token provided by client.","","","","","","","","","","","","","Authorization header and various auth schemes.","WWW-Authenticate header and various auth challenges.","Authorization header, defined in RFC 7235","Malformed base64 string.","Credentials for Basic authentication scheme, defined in …","Credentials for Bearer authentication scheme, defined in …","Header value is malformed.","Required authentication field is missing.","Authentication scheme is missing.","Possible errors while parsing Authorization header.","Authentication scheme for Authorization header.","Unable to convert header into the str.","Malformed UTF-8 string.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Consumes Authorization header and returns inner Scheme …","","Creates Basic credentials with provided user_id and …","Creates new Bearer credentials with the token provided.","Try to parse an authentication scheme from the …","","","","","","","Returns client’s password if provided.","","","","","","","","","Gets reference to the credentials token.","","","","","","","","","","","","","","","","","Returns client’s user-ID.","","","","","Authentication challenge for WWW-Authenticate header.","WWW-Authenticate header, described in RFC 7235.","Challenge for the “Basic” HTTP Authentication Scheme.","Challenge for the “Bearer” HTTP Authentication Scheme.","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","Converts the challenge into a bytes suitable for HTTP …","","","","","","","","Challenge for WWW-Authenticate header with HTTP Basic auth …","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","Creates new Basic challenge with an empty realm field.","","","","","","","","","Creates new Basic challenge from the provided realm field …","Challenge for WWW-Authenticate header with HTTP Bearer …","Builder for the Bearer challenge.","Bearer authorization error types, described in RFC 6750.","The request requires higher privileges than provided by …","The request is missing a required parameter, includes an …","The access token provided is expired, revoked, malformed, …","","","","","Creates the builder for Bearer challenge.","","","","","","","Provides the error attribute, as defined in [RFC 6750, …","Provides the error_description attribute, as defined in […","Provides the error_uri attribute, as defined in [RFC 6750 …","Consumes the builder and returns built Bearer instance.","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","Provides the realm attribute, as defined in RFC 2617.","Provides the scope attribute, as defined in RFC 6749 §3.3.","","","","","","","","","","","","Middleware for checking HTTP authentication.","Construct HttpAuthentication middleware for the HTTP “…","Construct HttpAuthentication middleware for the HTTP “…","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","Construct HttpAuthentication middleware with the provided …"],"i":[0,0,0,0,0,7,0,0,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,0,0,17,17,19,17,19,17,19,17,19,17,17,19,17,19,19,19,17,19,17,19,17,17,19,17,19,17,19,17,19,19,17,19,0,0,0,13,13,13,25,25,26,13,25,26,13,25,26,13,25,26,13,13,25,13,25,26,13,13,25,26,13,26,13,25,26,13,25,13,25,25,13,25,26,13,13,26,25,26,13,25,26,13,25,26,13,25,26,13,0,0,0,37,0,0,37,37,37,0,0,37,37,30,30,37,30,21,33,37,30,21,33,30,21,33,30,21,33,30,21,33,30,30,21,33,37,37,30,30,21,21,33,33,37,37,37,37,30,30,30,21,33,30,37,30,21,33,30,30,21,33,31,30,21,33,30,21,33,21,37,30,21,33,37,30,21,33,33,37,30,21,33,37,30,21,33,30,30,21,33,37,30,21,33,21,37,30,21,33,0,0,0,0,49,49,49,49,49,49,49,49,49,49,49,49,49,49,2,49,49,49,49,49,49,49,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,13,13,13,52,12,52,12,12,12,12,12,52,12,12,52,52,52,52,52,12,12,52,12,12,52,12,12,52,52,12,12,52,12,52,12,12,52,12,52,12,0,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53],"f":[0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]]],-1,2],[[[1,[-1]]],3,2],[[[1,[-1]],4],5,[6,2]],[[[1,[-1]],4],5,2],[-1,-1,[]],[-1,1,7],[-1,-2,[],[]],[-1,[],[]],[-1,[[1,[-1]]],2],[[[1,[-1]]],8,2],[[[1,[-1]]],8,2],[-1,9,[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,-2,[],[]],[[[1,[12]],13],[[1,[12]]]],[[[1,[12]],-1],[[1,[12]]],[[16,[[15,[14]]]]]],[[[1,[12]],-1],[[1,[12]]],[[16,[[15,[14]]]]]],0,0,[17,18],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[17,17],[19,19],[[-1,-2],20,[],[]],[[-1,-2],20,[],[]],[[],17],[[17,4],5],[[19,4],5],[-1,-1,[]],[21,19],[-1,-1,[]],[[22,23]],[-1,-2,[],[]],[-1,-2,[],[]],[17],[19,[[24,[14]]]],[[17,-1],17,[[16,[[15,[14]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,11,[]],[19,14],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,[25,12],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[25,25],[26,26],[13,13],[[-1,-2],20,[],[]],[[-1,-2],20,[],[]],[[-1,-2],20,[],[]],[[13,13],27],[[],25],[[13,13],28],[[25,4],5],[[26,4],5],[[13,4],5],[[13,4],5],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[22,23]],[[13,-1],20,29],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[25],[[13,13],[[24,[27]]]],[[25,-1],25,[[16,[[15,[14]]]]]],[[25,-1],25,[[16,[[15,[14]]]]]],[13,8],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,9,[]],[26,14],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[[30,[-1]]],-1,31],[[[30,[-1]]],-1,31],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[30,[-1]]],[[30,[-1]]],[32,31]],[21,21],[33,33],[[-1,-2],20,[],[]],[[-1,-2],20,[],[]],[[-1,-2],20,[],[]],[[[30,[-1]],[30,[-1]]],27,[34,31]],[[21,21],27],[[33,33],27],[[],[[30,[-1]]],[35,31]],[[[30,[-1]],[30,[-1]]],28,[36,31]],[[21,21],28],[[33,33],28],[[37,4],5],[[37,4],5],[[[30,[-1]],4],5,[6,31]],[[[30,[-1]],4],5,31],[[21,4],5],[[21,4],5],[[33,4],5],[[33,4],5],[38,37],[-1,-1,[]],[39,37],[40,37],[-1,[[30,[-1]]],31],[-1,-1,[]],[41,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[30,[-1]],-2],20,[42,31],29],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[30,[-1]]],-1,31],[[],43],[[-1,[24,[-2]]],21,[[16,[[15,[14]]]]],[[16,[[15,[14]]]]]],[-1,33,[[16,[[15,[14]]]]]],[44,[[10,[-1,37]]],[]],[-1,[[10,[[30,[-2]],45]]],46,31],[44,[[10,[21,37]]]],[44,[[10,[33,37]]]],[[[30,[-1]],[30,[-1]]],[[24,[27]]],[47,31]],[[21,21],[[24,[27]]]],[[33,33],[[24,[27]]]],[21,[[24,[14]]]],[37,[[24,[48]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,9,[]],[-1,9,[]],[-1,9,[]],[-1,9,[]],[33,14],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[[20,[43,44]]]]],[]],[[[30,[-1]]],[[10,[44]]],31],[21,[[10,[44]]]],[33,[[10,[44]]]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[21,14],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[[49,[-1]]],[[49,[-1]]],[32,2]],[[-1,-2],20,[],[]],[[[49,[-1]],[49,[-1]]],27,[34,2]],[[],[[49,[-1]]],[35,2]],[[[49,[-1]],[49,[-1]]],28,[36,2]],[[[49,[-1]],4],5,[6,2]],[-1,-1,[]],[[[49,[-1]],-2],20,[42,2],29],[-1,-2,[],[]],[[],43],[-1,[[10,[[49,[-2]],45]]],46,2],[[[49,[-1]],[49,[-1]]],[[24,[27]]],[47,2]],[-1,50,[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[[20,[43,44]]]]],[]],[[[49,[-1]]],[[10,[44]]],2],[-1,11,[]],[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[18,18],[[-1,-2],20,[],[]],[[18,18],27],[[],18],[[18,18],28],[[18,4],[[10,[20,51]]]],[[18,4],5],[-1,-1,[]],[[18,-1],20,29],[-1,-2,[],[]],[[],18],[[18,18],[[24,[27]]]],[-1,-2,[],[]],[-1,9,[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[18,[[10,[44]]]],[-1,11,[]],[-1,-2,[],[]],[-1,18,[[16,[[15,[14]]]]]],0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],52],[12,12],[[-1,-2],20,[],[]],[[12,12],27],[[],52],[[],12],[[12,12],28],[[52,13],52],[[52,-1],52,[[16,[[15,[14]]]]]],[[52,-1],52,[[16,[[15,[14]]]]]],[52,12],[[52,4],5],[[12,4],[[10,[20,51]]]],[[12,4],5],[-1,-1,[]],[-1,-1,[]],[[12,-1],20,29],[-1,-2,[],[]],[-1,-2,[],[]],[[12,12],[[24,[27]]]],[[52,-1],52,[[16,[[15,[14]]]]]],[[52,-1],52,[[16,[[15,[14]]]]]],[-1,-2,[],[]],[-1,9,[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[12,[[10,[44]]]],[-1,11,[]],[-1,11,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,[[53,[19,-1]]],54],[-1,[[53,[26,-1]]],54],[-1,-2,[],[]],[-1,-2,[],[]],[[[53,[-1,-2]]],[[53,[-1,-2]]],[55,32],32],[[-1,-2],20,[],[]],[[[53,[-1,-2]],4],5,[55,6],6],[-1,-1,[]],[-1,-2,[],[]],[[[53,[-1,-2]],-3],[],55,54,[[57,[56]]]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,-2,[],[]],[-1,[[53,[-2,-1]]],54,55]],"c":[],"p":[[3,"AuthenticationError",3],[8,"Challenge",219],[3,"HttpResponse",328],[3,"Formatter",329],[6,"Result",329],[8,"Debug",329],[8,"AuthExtractorConfig",3],[3,"StatusCode",330],[3,"String",331],[4,"Result",332],[3,"TypeId",333],[3,"Bearer",268],[4,"Error",63],[15,"str"],[4,"Cow",334],[8,"Into",335],[3,"Config",29],[3,"Basic",245],[3,"BasicAuth",29],[15,"tuple"],[3,"Basic",121],[3,"HttpRequest",336],[4,"Payload",337],[4,"Option",338],[3,"Config",63],[3,"BearerAuth",63],[4,"Ordering",339],[15,"bool"],[8,"Hasher",340],[3,"Authorization",121],[8,"Scheme",121],[8,"Clone",341],[3,"Bearer",121],[8,"Ord",339],[8,"Default",342],[8,"PartialEq",339],[4,"ParseError",121],[3,"Utf8Error",343],[4,"DecodeError",344],[3,"ToStrError",345],[15,"never"],[8,"Hash",340],[3,"HeaderName",346],[3,"HeaderValue",345],[4,"ParseError",347],[8,"HttpMessage",348],[8,"PartialOrd",339],[8,"Error",349],[3,"WwwAuthenticate",219],[3,"Bytes",350],[3,"Error",329],[3,"BearerBuilder",268],[3,"HttpAuthentication",311],[8,"Fn",351],[8,"FromRequest",352],[3,"ServiceRequest",353],[8,"Service",354]],"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-Display-for-ParseError"],[156,"impl-Debug-for-ParseError"],[157,"impl-Debug-for-Authorization%3CS%3E"],[158,"impl-Display-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%3CUtf8Error%3E-for-ParseError"],[165,"impl-From%3CDecodeError%3E-for-ParseError"],[166,"impl-From%3CToStrError%3E-for-ParseError"],[253,"impl-Display-for-Basic"],[254,"impl-Debug-for-Basic"],[290,"impl-Display-for-Bearer"],[291,"impl-Debug-for-Bearer"]]}\ +"actix_settings":{"doc":"Easily manage Actix Web’s settings from a TOML file and …","t":"DDIEDNNNNNNNNNENNNENNNNEENEDENINNNNNNGEDNMMMMKMLLLLLLLLLLLLLLLLLLLLLLLLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLMMMMMLLKLLLLLLLLLMMMLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMM","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,"core::clone"],[318,"core::result"],[319,"serde::de"],[320,"serde::de"],[321,"core::fmt"],[322,"core::fmt"],[323,"toml::de"],[324,"std::env"],[325,"std::io::error"],[326,"core::num::error"],[327,"serde::de"],[328,"core::hash"],[329,"std::path"],[330,"core::error"],[331,"core::option"],[332,"alloc::string"],[333,"core::any"]],"d":["Settings types for Actix Web.","A host/port pair for the server to bind to.","Extension trait for applying parsed settings to the server …","The maximum number of pending connections.","Wrapper for server and application-specific settings.","The default number of connections. See struct docs.","The default keep-alive as defined by Actix Web.","The default connection limit. See struct docs.","The default number of connections. See struct docs.","The default number of workers. See struct docs.","The default timeout. Depends on context.","Marks development environment.","Disable keep-alive.","Environment variable does not exists or is invalid.","Errors that can be returned from methods in this crate.","File already exists on disk.","Invalid value.","I/O error.","The server keep-alive preference.","A specific number of connections.","A specific connection limit.","A specific number of connections.","A specific number of workers.","The maximum per-worker concurrent TLS connection limit.","The maximum per-worker number of concurrent connections.","Timeout in milliseconds.","Marker of intended deployment environment.","Marker type representing no defined application-specific …","The number of workers that the server should start.","Let the OS determine keep-alive duration.","A specialized FromStr trait that returns Error errors","Value is not an address.","Value is not a boolean.","Value is not an integer.","Marks production environment.","A specific keep-alive duration (in seconds).","Timeout in seconds.","Convenience type alias for BasicSettings with no defined …","A timeout duration in milliseconds or seconds.","TLS (HTTPS) configuration.","Error deserializing as TOML.","Actix Web server settings.","Actix Web server settings.","Application-specific settings.","Application-specific settings.","Apply some settings object value to self.","The maximum number of pending connections.","","","","","","","","","","","","","","","","","","","","","","","","","","","Path to certificate .pem file.","Timeout duration for connection shutdown.","Timeout duration for reading client request header.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","True if the Compress middleware should be enabled.","True if the Logger middleware should be enabled.","Tru if accepting TLS connections should be enabled.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Parse an instance of Self straight from the default TOML …","Parse an instance of Self straight from the default TOML …","","","","","","","","","","","","","Host part of address.","List of addresses for the server to bind to.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Server keep-alive preference.","The per-worker maximum concurrent TLS connection limit.","The per-worker maximum number of concurrent connections.","Marker of intended deployment environment.","The number of workers that the server should start.","Attempts to parse value and override the referenced field.","Attempts to read an environment variable, parse it, and …","Parse Self from string.","","","","","","","","","Parse an instance of Self from a TOML file located at …","Port part of address.","Path to private key .pem file.","Timeout duration for graceful worker shutdown.","","TLS (HTTPS) configuration.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Writes the default TOML template to a new file, located at …","","","","",""],"i":[0,0,0,0,0,2,3,4,5,7,8,6,3,20,0,20,20,20,0,2,4,5,7,0,0,8,0,0,0,3,0,20,20,20,6,3,8,0,0,0,20,40,11,40,11,41,10,20,1,2,3,4,5,6,7,8,9,10,11,13,20,1,2,3,4,5,6,7,8,9,10,11,13,9,10,10,1,2,3,4,5,6,7,8,9,10,11,13,1,2,3,4,5,6,7,8,9,10,11,13,1,2,3,4,5,6,7,8,9,10,11,13,10,10,9,1,2,3,4,5,6,7,8,9,10,11,13,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,11,11,11,13,13,13,20,20,1,2,3,4,5,6,7,8,9,10,11,13,20,20,20,20,20,20,1,2,3,4,5,6,7,8,9,10,11,13,11,11,1,2,3,4,5,6,7,8,9,10,11,13,1,10,20,1,2,3,4,5,6,7,8,9,10,11,13,10,10,10,10,10,11,11,33,1,2,3,4,5,6,7,8,11,1,9,10,20,10,1,2,3,4,5,6,7,8,9,10,11,13,20,20,1,2,3,4,5,6,7,8,9,10,11,13,20,1,2,3,4,5,6,7,8,9,10,11,13,20,1,2,3,4,5,6,7,8,9,10,11,13,20,1,2,3,4,5,6,7,8,9,10,11,13,11,42,42,42,42,42],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,-2],-1,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9],[10,10],[[[11,[-1]]],[[11,[-1]]],12],[13,13],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[[-1,-2],14,[],[]],[-1,[[15,[1]]],16],[-1,[[15,[2]]],16],[-1,[[15,[3]]],16],[-1,[[15,[4]]],16],[-1,[[15,[5]]],16],[-1,[[15,[6]]],16],[-1,[[15,[7]]],16],[-1,[[15,[8]]],16],[-1,[[15,[9]]],16],[-1,[[15,[10]]],16],[-1,[[15,[[11,[-2]]]]],16,17],[-1,[[15,[13]]],16],0,0,0,[[1,1],18],[[2,2],18],[[3,3],18],[[4,4],18],[[5,5],18],[[6,6],18],[[7,7],18],[[8,8],18],[[9,9],18],[[10,10],18],[[[11,[-1]],[11,[-1]]],18,19],[[13,13],18],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[-1,-2],18,[],[]],[[20,21],22],[[20,21],22],[[1,21],22],[[2,21],22],[[3,21],22],[[4,21],22],[[5,21],22],[[6,21],22],[[7,21],22],[[8,21],22],[[9,21],22],[[10,21],22],[[[11,[-1]],21],22,23],[[13,21],22],[24,20],[25,20],[-1,-1,[]],[26,20],[27,20],[28,20],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],[[11,[-1]]],29],[30,[[15,[[11,[-1]],20]]],29],[[1,-1],14,31],[[2,-1],14,31],[[3,-1],14,31],[[4,-1],14,31],[[5,-1],14,31],[[6,-1],14,31],[[7,-1],14,31],[[8,-1],14,31],[[9,-1],14,31],[[10,-1],14,31],[[[11,[-1]],-2],14,32,31],[[13,-1],14,31],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[[-1,-2],[[15,[14,20]]],33,[[34,[30]]]],[[-1,-2],[[15,[14,20]]],33,[[34,[30]]]],[30,[[15,[-1,20]]],[]],[30,[[15,[1,20]]]],[30,[[15,[2,20]]]],[30,[[15,[3,20]]]],[30,[[15,[4,20]]]],[30,[[15,[5,20]]]],[30,[[15,[6,20]]]],[30,[[15,[7,20]]]],[30,[[15,[8,20]]]],[-1,[[15,[[11,[-2]],20]]],[[34,[35]]],29],0,0,0,[20,[[37,[36]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,38,[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,[[15,[-2]]],[],[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,39,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[15,[14,20]]],[[34,[35]]]],0,0,0,0,0],"c":[],"p":[[3,"Address",0],[4,"Backlog",0],[4,"KeepAlive",0],[4,"MaxConnectionRate",0],[4,"MaxConnections",0],[4,"Mode",0],[4,"NumWorkers",0],[4,"Timeout",0],[3,"Tls",0],[3,"ActixSettings",0],[3,"BasicSettings",0],[8,"Clone",317],[3,"NoSettings",0],[15,"tuple"],[4,"Result",318],[8,"Deserializer",319],[8,"Deserialize",319],[15,"bool"],[8,"PartialEq",320],[4,"Error",0],[3,"Formatter",321],[6,"Result",321],[8,"Debug",321],[3,"ParseBoolError",322],[3,"Error",323],[4,"VarError",324],[3,"Error",325],[3,"ParseIntError",326],[8,"DeserializeOwned",319],[15,"str"],[8,"Hasher",327],[8,"Hash",327],[8,"Parse",0],[8,"AsRef",328],[3,"Path",329],[8,"Error",330],[4,"Option",331],[3,"String",332],[3,"TypeId",333],[6,"Settings",0],[8,"ApplySettings",0],[13,"InvalidValue",312]],"b":[[163,"impl-Debug-for-Error"],[164,"impl-Display-for-Error"],[177,"impl-From%3CParseBoolError%3E-for-Error"],[178,"impl-From%3CError%3E-for-Error"],[180,"impl-From%3CVarError%3E-for-Error"],[181,"impl-From%3CError%3E-for-Error"],[182,"impl-From%3CParseIntError%3E-for-Error"]],"a":{"https":[39],"ssl":[39]}},\ +"actix_web_httpauth":{"doc":"HTTP authentication schemes for Actix Web.","t":"AAAIDQAALLLLLLLLLKLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDENNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLAADNDDNNNEINNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDAALLLLLLLLLLLLLLKLLLLLLLDLLLLLLLLLLLLLLLLLLLLLLDDENNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLL","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","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"],[219,"actix_web_httpauth::headers::www_authenticate"],[245,"actix_web_httpauth::headers::www_authenticate::basic"],[268,"actix_web_httpauth::headers::www_authenticate::bearer"],[311,"actix_web_httpauth::middleware"],[328,"actix_web::response::response"],[329,"core::fmt"],[330,"core::fmt"],[331,"alloc::string"],[332,"core::result"],[333,"core::any"],[334,"alloc::borrow"],[335,"core::convert"],[336,"actix_web::request"],[337,"actix_http::payload"],[338,"core::option"],[339,"core::cmp"],[340,"core::hash"],[341,"core::clone"],[342,"core::cmp"],[343,"core::cmp"],[344,"base64::decode"],[345,"http::header::value"],[346,"core::hash"],[347,"http::header::value"],[348,"actix_http::http_message"],[349,"core::cmp"],[350,"bytes::bytes"],[351,"core::fmt"],[352,"actix_web::extract"],[353,"actix_web::service"],[354,"actix_service"]],"d":["Type-safe authentication information extractors.","Typed HTTP headers.","HTTP Authentication middleware.","Trait implemented for types that provides configuration …","Authentication error returned by authentication extractors.","Associated challenge type.","Extractor for the “Basic” HTTP Authentication Scheme.","Extractor for the “Bearer” HTTP Authentication Scheme.","","","Returns mutable reference to the inner challenge instance.","","","","Returns the argument unchanged.","","Calls U::from(self).","Convert the config instance into a HTTP challenge.","Creates new authentication error from the provided …","","Returns mutable reference to the inner status code.","","","","","","Attach Error to the current Authentication error.","Attach error description to the current Authentication …","Attach error URI to the current Authentication error.","Extractor for HTTP Basic auth.","BasicAuth extractor configuration used for WWW-Authenticate…","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","Returns client’s password.","Set challenge realm attribute.","","","","","","","","","Returns client’s user-ID.","","","Extractor for HTTP Bearer auth","BearerAuth extractor configuration.","Bearer authorization error types, described in RFC 6750.","The request requires higher privileges than provided by …","The request is missing a required parameter, includes an …","The access token provided is expired, revoked, malformed, …","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Set challenge realm attribute.","Set challenge scope attribute.","Returns HTTP status code suitable for current error type.","","","","","Returns bearer token provided by client.","","","","","","","","","","","","","Authorization header and various auth schemes.","WWW-Authenticate header and various auth challenges.","Authorization header, defined in RFC 7235","Malformed base64 string.","Credentials for Basic authentication scheme, defined in …","Credentials for Bearer authentication scheme, defined in …","Header value is malformed.","Required authentication field is missing.","Authentication scheme is missing.","Possible errors while parsing Authorization header.","Authentication scheme for Authorization header.","Unable to convert header into the str.","Malformed UTF-8 string.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Consumes Authorization header and returns inner Scheme …","","Creates Basic credentials with provided user_id and …","Creates new Bearer credentials with the token provided.","Try to parse an authentication scheme from the …","","","","","","","Returns client’s password if provided.","","","","","","","","","Gets reference to the credentials token.","","","","","","","","","","","","","","","","","Returns client’s user-ID.","","","","","Authentication challenge for WWW-Authenticate header.","WWW-Authenticate header, described in RFC 7235.","Challenge for the “Basic” HTTP Authentication Scheme.","Challenge for the “Bearer” HTTP Authentication Scheme.","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","Converts the challenge into a bytes suitable for HTTP …","","","","","","","","Challenge for WWW-Authenticate header with HTTP Basic auth …","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","Creates new Basic challenge with an empty realm field.","","","","","","","","","Creates new Basic challenge from the provided realm field …","Challenge for WWW-Authenticate header with HTTP Bearer …","Builder for the Bearer challenge.","Bearer authorization error types, described in RFC 6750.","The request requires higher privileges than provided by …","The request is missing a required parameter, includes an …","The access token provided is expired, revoked, malformed, …","","","","","Creates the builder for Bearer challenge.","","","","","","","Provides the error attribute, as defined in [RFC 6750, …","Provides the error_description attribute, as defined in […","Provides the error_uri attribute, as defined in [RFC 6750 …","Consumes the builder and returns built Bearer instance.","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","Provides the realm attribute, as defined in RFC 2617.","Provides the scope attribute, as defined in RFC 6749 §3.3.","","","","","","","","","","","","Middleware for checking HTTP authentication.","Construct HttpAuthentication middleware for the HTTP “…","Construct HttpAuthentication middleware for the HTTP “…","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","Construct HttpAuthentication middleware with the provided …"],"i":[0,0,0,0,0,7,0,0,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,0,0,17,17,19,17,19,17,19,17,19,17,17,19,17,19,19,19,17,19,17,19,17,17,19,17,19,17,19,17,19,19,17,19,0,0,0,13,13,13,25,25,26,13,25,26,13,25,26,13,25,26,13,13,25,13,25,26,13,13,25,26,13,26,13,25,26,13,25,13,25,25,13,25,26,13,13,26,25,26,13,25,26,13,25,26,13,25,26,13,0,0,0,37,0,0,37,37,37,0,0,37,37,30,30,37,30,21,33,37,30,21,33,30,21,33,30,21,33,30,21,33,30,30,21,33,37,37,30,30,21,21,33,33,37,37,37,37,30,30,30,21,33,30,37,30,21,33,30,30,21,33,31,30,21,33,30,21,33,21,37,30,21,33,37,30,21,33,33,37,30,21,33,37,30,21,33,30,30,21,33,37,30,21,33,21,37,30,21,33,0,0,0,0,49,49,49,49,49,49,49,49,49,49,49,49,49,49,2,49,49,49,49,49,49,49,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,13,13,13,52,12,52,12,12,12,12,12,52,12,12,52,52,52,52,52,12,12,52,12,12,52,12,12,52,52,12,12,52,12,52,12,12,52,12,52,12,0,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53],"f":[0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]]],-1,2],[[[1,[-1]]],3,2],[[[1,[-1]],4],5,[6,2]],[[[1,[-1]],4],5,2],[-1,-1,[]],[-1,1,7],[-1,-2,[],[]],[-1,[],[]],[-1,[[1,[-1]]],2],[[[1,[-1]]],8,2],[[[1,[-1]]],8,2],[-1,9,[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,-2,[],[]],[[[1,[12]],13],[[1,[12]]]],[[[1,[12]],-1],[[1,[12]]],[[16,[[15,[14]]]]]],[[[1,[12]],-1],[[1,[12]]],[[16,[[15,[14]]]]]],0,0,[17,18],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[17,17],[19,19],[[-1,-2],20,[],[]],[[-1,-2],20,[],[]],[[],17],[[17,4],5],[[19,4],5],[-1,-1,[]],[21,19],[-1,-1,[]],[[22,23]],[-1,-2,[],[]],[-1,-2,[],[]],[17],[19,[[24,[14]]]],[[17,-1],17,[[16,[[15,[14]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,11,[]],[19,14],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,[25,12],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[25,25],[26,26],[13,13],[[-1,-2],20,[],[]],[[-1,-2],20,[],[]],[[-1,-2],20,[],[]],[[13,13],27],[[],25],[[13,13],28],[[25,4],5],[[26,4],5],[[13,4],5],[[13,4],5],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[22,23]],[[13,-1],20,29],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[25],[[13,13],[[24,[27]]]],[[25,-1],25,[[16,[[15,[14]]]]]],[[25,-1],25,[[16,[[15,[14]]]]]],[13,8],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,9,[]],[26,14],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[[30,[-1]]],-1,31],[[[30,[-1]]],-1,31],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[30,[-1]]],[[30,[-1]]],[32,31]],[21,21],[33,33],[[-1,-2],20,[],[]],[[-1,-2],20,[],[]],[[-1,-2],20,[],[]],[[[30,[-1]],[30,[-1]]],27,[34,31]],[[21,21],27],[[33,33],27],[[],[[30,[-1]]],[35,31]],[[[30,[-1]],[30,[-1]]],28,[36,31]],[[21,21],28],[[33,33],28],[[37,4],5],[[37,4],5],[[[30,[-1]],4],5,[6,31]],[[[30,[-1]],4],5,31],[[21,4],5],[[21,4],5],[[33,4],5],[[33,4],5],[38,37],[-1,-1,[]],[39,37],[40,37],[-1,[[30,[-1]]],31],[-1,-1,[]],[41,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[30,[-1]],-2],20,[42,31],29],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[30,[-1]]],-1,31],[[],43],[[-1,[24,[-2]]],21,[[16,[[15,[14]]]]],[[16,[[15,[14]]]]]],[-1,33,[[16,[[15,[14]]]]]],[44,[[10,[-1,37]]],[]],[-1,[[10,[[30,[-2]],45]]],46,31],[44,[[10,[21,37]]]],[44,[[10,[33,37]]]],[[[30,[-1]],[30,[-1]]],[[24,[27]]],[47,31]],[[21,21],[[24,[27]]]],[[33,33],[[24,[27]]]],[21,[[24,[14]]]],[37,[[24,[48]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,9,[]],[-1,9,[]],[-1,9,[]],[-1,9,[]],[33,14],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[[20,[43,44]]]]],[]],[[[30,[-1]]],[[10,[44]]],31],[21,[[10,[44]]]],[33,[[10,[44]]]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[-1,11,[]],[21,14],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[[49,[-1]]],[[49,[-1]]],[32,2]],[[-1,-2],20,[],[]],[[[49,[-1]],[49,[-1]]],27,[34,2]],[[],[[49,[-1]]],[35,2]],[[[49,[-1]],[49,[-1]]],28,[36,2]],[[[49,[-1]],4],5,[6,2]],[-1,-1,[]],[[[49,[-1]],-2],20,[42,2],29],[-1,-2,[],[]],[[],43],[-1,[[10,[[49,[-2]],45]]],46,2],[[[49,[-1]],[49,[-1]]],[[24,[27]]],[47,2]],[-1,50,[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[[20,[43,44]]]]],[]],[[[49,[-1]]],[[10,[44]]],2],[-1,11,[]],[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[18,18],[[-1,-2],20,[],[]],[[18,18],27],[[],18],[[18,18],28],[[18,4],[[10,[20,51]]]],[[18,4],5],[-1,-1,[]],[[18,-1],20,29],[-1,-2,[],[]],[[],18],[[18,18],[[24,[27]]]],[-1,-2,[],[]],[-1,9,[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[18,[[10,[44]]]],[-1,11,[]],[-1,-2,[],[]],[-1,18,[[16,[[15,[14]]]]]],0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],52],[12,12],[[-1,-2],20,[],[]],[[12,12],27],[[],52],[[],12],[[12,12],28],[[52,13],52],[[52,-1],52,[[16,[[15,[14]]]]]],[[52,-1],52,[[16,[[15,[14]]]]]],[52,12],[[52,4],5],[[12,4],[[10,[20,51]]]],[[12,4],5],[-1,-1,[]],[-1,-1,[]],[[12,-1],20,29],[-1,-2,[],[]],[-1,-2,[],[]],[[12,12],[[24,[27]]]],[[52,-1],52,[[16,[[15,[14]]]]]],[[52,-1],52,[[16,[[15,[14]]]]]],[-1,-2,[],[]],[-1,9,[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[12,[[10,[44]]]],[-1,11,[]],[-1,11,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,[[53,[19,-1]]],54],[-1,[[53,[26,-1]]],54],[-1,-2,[],[]],[-1,-2,[],[]],[[[53,[-1,-2]]],[[53,[-1,-2]]],[55,32],32],[[-1,-2],20,[],[]],[[[53,[-1,-2]],4],5,[55,6],6],[-1,-1,[]],[-1,-2,[],[]],[[[53,[-1,-2]],-3],[],55,54,[[57,[56]]]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,11,[]],[-1,-2,[],[]],[-1,[[53,[-2,-1]]],54,55]],"c":[],"p":[[3,"AuthenticationError",3],[8,"Challenge",219],[3,"HttpResponse",328],[3,"Formatter",329],[6,"Result",329],[8,"Debug",329],[8,"AuthExtractorConfig",3],[3,"StatusCode",330],[3,"String",331],[4,"Result",332],[3,"TypeId",333],[3,"Bearer",268],[4,"Error",63],[15,"str"],[4,"Cow",334],[8,"Into",335],[3,"Config",29],[3,"Basic",245],[3,"BasicAuth",29],[15,"tuple"],[3,"Basic",121],[3,"HttpRequest",336],[4,"Payload",337],[4,"Option",338],[3,"Config",63],[3,"BearerAuth",63],[4,"Ordering",339],[15,"bool"],[8,"Hasher",340],[3,"Authorization",121],[8,"Scheme",121],[8,"Clone",341],[3,"Bearer",121],[8,"Ord",339],[8,"Default",342],[8,"PartialEq",339],[4,"ParseError",121],[3,"Utf8Error",343],[4,"DecodeError",344],[3,"ToStrError",345],[15,"never"],[8,"Hash",340],[3,"HeaderName",346],[3,"HeaderValue",345],[4,"ParseError",347],[8,"HttpMessage",348],[8,"PartialOrd",339],[8,"Error",349],[3,"WwwAuthenticate",219],[3,"Bytes",350],[3,"Error",329],[3,"BearerBuilder",268],[3,"HttpAuthentication",311],[8,"Fn",351],[8,"FromRequest",352],[3,"ServiceRequest",353],[8,"Service",354]],"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-Display-for-ParseError"],[156,"impl-Debug-for-ParseError"],[157,"impl-Debug-for-Authorization%3CS%3E"],[158,"impl-Display-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%3CUtf8Error%3E-for-ParseError"],[165,"impl-From%3CDecodeError%3E-for-ParseError"],[166,"impl-From%3CToStrError%3E-for-ParseError"],[253,"impl-Display-for-Basic"],[254,"impl-Debug-for-Basic"],[290,"impl-Display-for-Bearer"],[291,"impl-Debug-for-Bearer"]]},\ +"actix_ws":{"doc":"WebSockets for Actix Web, without actors.","t":"NNNNNNEDDNNNNNNNNNNNEDNNNNNNNENDNDNNNLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Abnormal","Again","Away","BadOpCode","Binary","Close","CloseCode","CloseReason","Closed","Continuation","ContinuationFragment","ContinuationNotStarted","ContinuationStarted","Error","Extension","Invalid","InvalidLength","InvalidOpcode","Io","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_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","description","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","handle","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_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","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip"],"q":[[0,"actix_ws"],[143,"core::result"],[144,"bytes::bytes"],[145,"core::convert"],[146,"core::option"],[147,"core::fmt"],[148,"core::fmt"],[149,"std::io::error"],[150,"actix_http::ws::proto"],[151,"actix_web::request"],[152,"actix_web::types::payload"],[153,"actix_web::response::response"],[154,"actix_web::error::error"],[155,"core::pin"],[156,"core::task::wake"],[157,"core::task::poll"],[158,"core::error"],[159,"bytestring"],[160,"core::any"]],"d":["Indicates an abnormal closure. If the abnormal closure was …","Indicates that the server is overloaded and the client …","Indicates that an endpoint is “going away”, such as a …","Bad opcode.","Binary message.","Close message with optional reason.","Status code used to indicate why an endpoint is closing …","Reason for closing the connection","The error representing a closed websocket session","Continuation.","Unknown continuation fragment.","Continuation has not started.","Received new continuation but it is already started.","Indicates that a server is terminating the connection …","Indicates that an endpoint (client) is terminating the …","Indicates that an endpoint is terminating the connection …","Invalid control frame length","Encountered invalid opcode.","I/O error.","Received a masked frame from server.","A WebSocket message.","A stream of Messages from a websocket client","No-op. Useful for low-level services.","Indicates a normal closure, meaning that the purpose for …","A payload reached size limit.","Ping message.","Indicates that an endpoint is terminating the connection …","Pong message.","Indicates that an endpoint is terminating the connection …","WebSocket protocol errors.","Indicates that the server is restarting. A client may …","A handle into the websocket session.","Indicates that an endpoint is terminating the connection …","A response body for Websocket HTTP Requests","Text message.","Received an unmasked frame from client.","Indicates that an endpoint is terminating the connection …","Send raw bytes into the websocket","","","","","","","","","","","","","","","","","","","","","","","Send a close message, and consume the session","Exit code","Optional description of the exit code","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","Begin handling websocket traffic","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Ping the client","","","Pong the client","Wait for the next item from the message stream","","Send text into the websocket","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[7,7,7,15,10,10,0,0,0,10,15,15,15,7,7,7,15,15,15,15,0,0,10,7,15,10,7,10,7,0,7,0,7,0,10,15,7,1,28,25,1,3,10,7,8,15,28,25,1,3,10,7,8,15,1,7,8,1,7,8,1,8,8,10,7,8,3,3,10,7,8,15,15,28,25,1,3,10,7,7,8,8,8,15,15,15,15,15,0,28,25,1,3,10,7,8,15,1,28,25,1,25,15,1,1,7,8,3,15,28,25,1,3,10,7,8,15,28,25,1,3,10,7,8,15,28,25,28,25,1,3,10,7,8,15,28,25,1,3,10,7,8,15],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,-1],[[4,[2,3]]],[[6,[5]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,1],[7,7],[8,8],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[1,[9,[8]]],[[4,[2,3]]]],0,0,[[10,10],11],[[7,7],11],[[8,8],11],[[3,12],13],[[3,12],13],[[10,12],[[4,[2,14]]]],[[7,12],[[4,[2,14]]]],[[8,12],[[4,[2,14]]]],[[15,12],[[4,[2,14]]]],[[15,12],[[4,[2,14]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[16,7],[[[2,[7,-1]]],8,[[6,[17]]]],[-1,-1,[]],[7,8],[18,15],[-1,-1,[]],[19,15],[20,15],[21,15],[[22,23],[[4,[[2,[24,1,25]],26]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[1,[27,[18]]],[[4,[2,3]]]],[[[29,[28]],30],[[31,[9]]]],[[[29,[25]],30],[[31,[9]]]],[[1,[27,[18]]],[[4,[2,3]]]],[25,[[9,[[4,[10,15]]]]]],[15,[[9,[32]]]],[[1,-1],[[4,[2,3]]],[[6,[33]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,17,[]],[-1,17,[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[-1,[[4,[-2]]],[],[]],[[[29,[-1]],30],[[31,[[9,[4]]]]],[]],[[[29,[-1]],30],[[31,[[9,[4]]]]],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]]],"c":[],"p":[[3,"Session",0],[15,"tuple"],[3,"Closed",0],[4,"Result",143],[3,"Bytes",144],[8,"Into",145],[4,"CloseCode",0],[3,"CloseReason",0],[4,"Option",146],[4,"Message",0],[15,"bool"],[3,"Formatter",147],[6,"Result",147],[3,"Error",147],[4,"ProtocolError",0],[15,"u16"],[3,"String",148],[15,"u8"],[15,"usize"],[3,"Error",149],[4,"OpCode",150],[3,"HttpRequest",151],[3,"Payload",152],[3,"HttpResponse",153],[3,"MessageStream",0],[3,"Error",154],[15,"slice"],[3,"StreamingBody",0],[3,"Pin",155],[3,"Context",156],[4,"Poll",157],[8,"Error",158],[3,"ByteString",159],[3,"TypeId",160]],"b":[[66,"impl-Display-for-Closed"],[67,"impl-Debug-for-Closed"],[71,"impl-Display-for-ProtocolError"],[72,"impl-Debug-for-ProtocolError"],[80,"impl-From%3C(CloseCode,+T)%3E-for-CloseReason"],[82,"impl-From%3CCloseCode%3E-for-CloseReason"],[83,"impl-From%3Cu8%3E-for-ProtocolError"],[85,"impl-From%3Cusize%3E-for-ProtocolError"],[86,"impl-From%3CError%3E-for-ProtocolError"],[87,"impl-From%3COpCode%3E-for-ProtocolError"]]}\ }'); if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)}; if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex}; diff --git a/src-files.js b/src-files.js index 43a5983d7..9f3748280 100644 --- a/src-files.js +++ b/src-files.js @@ -6,6 +6,7 @@ var srcIndex = JSON.parse('{\ "actix_redis":["",[],["lib.rs","redis.rs"]],\ "actix_session":["",[["storage",[],["cookie.rs","interface.rs","mod.rs","redis_actor.rs","redis_rs.rs","session_key.rs","utils.rs"]]],["config.rs","lib.rs","middleware.rs","session.rs","session_ext.rs"]],\ "actix_settings":["",[["settings",[],["address.rs","backlog.rs","keep_alive.rs","max_connection_rate.rs","max_connections.rs","mod.rs","mode.rs","num_workers.rs","timeout.rs","tls.rs"]]],["error.rs","lib.rs","parse.rs"]],\ -"actix_web_httpauth":["",[["extractors",[],["basic.rs","bearer.rs","config.rs","errors.rs","mod.rs"]],["headers",[["authorization",[["scheme",[],["basic.rs","bearer.rs","mod.rs"]]],["errors.rs","header.rs","mod.rs"]],["www_authenticate",[["challenge",[["bearer",[],["builder.rs","challenge.rs","errors.rs","mod.rs"]]],["basic.rs","mod.rs"]]],["header.rs","mod.rs"]]],["mod.rs"]]],["lib.rs","middleware.rs","utils.rs"]]\ +"actix_web_httpauth":["",[["extractors",[],["basic.rs","bearer.rs","config.rs","errors.rs","mod.rs"]],["headers",[["authorization",[["scheme",[],["basic.rs","bearer.rs","mod.rs"]]],["errors.rs","header.rs","mod.rs"]],["www_authenticate",[["challenge",[["bearer",[],["builder.rs","challenge.rs","errors.rs","mod.rs"]]],["basic.rs","mod.rs"]]],["header.rs","mod.rs"]]],["mod.rs"]]],["lib.rs","middleware.rs","utils.rs"]],\ +"actix_ws":["",[],["fut.rs","lib.rs","session.rs"]]\ }'); createSrcSidebar(); diff --git a/src/actix_ws/fut.rs.html b/src/actix_ws/fut.rs.html new file mode 100644 index 000000000..3f9d99f33 --- /dev/null +++ b/src/actix_ws/fut.rs.html @@ -0,0 +1,367 @@ +fut.rs - source
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+
use std::{
+    collections::VecDeque,
+    future::poll_fn,
+    io,
+    pin::Pin,
+    task::{Context, Poll},
+};
+
+use actix_codec::{Decoder, Encoder};
+use actix_http::{
+    ws::{Codec, Frame, Message, ProtocolError},
+    Payload,
+};
+use actix_web::{
+    web::{Bytes, BytesMut},
+    Error,
+};
+use futures_core::stream::Stream;
+use tokio::sync::mpsc::Receiver;
+
+/// A response body for Websocket HTTP Requests
+pub struct StreamingBody {
+    session_rx: Receiver<Message>,
+
+    messages: VecDeque<Message>,
+    buf: BytesMut,
+    codec: Codec,
+    closing: bool,
+}
+
+/// A stream of Messages from a websocket client
+///
+/// Messages can be accessed via the stream's `.next()` method
+pub struct MessageStream {
+    payload: Payload,
+
+    messages: VecDeque<Message>,
+    buf: BytesMut,
+    codec: Codec,
+    closing: bool,
+}
+
+impl StreamingBody {
+    pub(super) fn new(session_rx: Receiver<Message>) -> Self {
+        StreamingBody {
+            session_rx,
+            messages: VecDeque::new(),
+            buf: BytesMut::new(),
+            codec: Codec::new(),
+            closing: false,
+        }
+    }
+}
+
+impl MessageStream {
+    pub(super) fn new(payload: Payload) -> Self {
+        MessageStream {
+            payload,
+            messages: VecDeque::new(),
+            buf: BytesMut::new(),
+            codec: Codec::new(),
+            closing: false,
+        }
+    }
+
+    /// Wait for the next item from the message stream
+    ///
+    /// ```rust,ignore
+    /// while let Some(Ok(msg)) = stream.recv().await {
+    ///     // handle message
+    /// }
+    /// ```
+    pub async fn recv(&mut self) -> Option<Result<Message, ProtocolError>> {
+        poll_fn(|cx| Pin::new(&mut *self).poll_next(cx)).await
+    }
+}
+
+impl Stream for StreamingBody {
+    type Item = Result<Bytes, Error>;
+
+    fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
+        let this = self.get_mut();
+
+        if this.closing {
+            return Poll::Ready(None);
+        }
+
+        loop {
+            match Pin::new(&mut this.session_rx).poll_recv(cx) {
+                Poll::Ready(Some(msg)) => {
+                    this.messages.push_back(msg);
+                }
+                Poll::Ready(None) => {
+                    this.closing = true;
+                    break;
+                }
+                Poll::Pending => break,
+            }
+        }
+
+        while let Some(msg) = this.messages.pop_front() {
+            if let Err(e) = this.codec.encode(msg, &mut this.buf) {
+                return Poll::Ready(Some(Err(e.into())));
+            }
+        }
+
+        if !this.buf.is_empty() {
+            return Poll::Ready(Some(Ok(this.buf.split().freeze())));
+        }
+
+        Poll::Pending
+    }
+}
+
+impl Stream for MessageStream {
+    type Item = Result<Message, ProtocolError>;
+
+    fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
+        let this = self.get_mut();
+
+        // Return the first message in the queue if one exists
+        //
+        // This is faster than polling and parsing
+        if let Some(msg) = this.messages.pop_front() {
+            return Poll::Ready(Some(Ok(msg)));
+        }
+
+        if !this.closing {
+            // Read in bytes until there's nothing left to read
+            loop {
+                match Pin::new(&mut this.payload).poll_next(cx) {
+                    Poll::Ready(Some(Ok(bytes))) => {
+                        this.buf.extend_from_slice(&bytes);
+                    }
+                    Poll::Ready(Some(Err(e))) => {
+                        return Poll::Ready(Some(Err(ProtocolError::Io(io::Error::new(
+                            io::ErrorKind::Other,
+                            e.to_string(),
+                        )))));
+                    }
+                    Poll::Ready(None) => {
+                        this.closing = true;
+                        break;
+                    }
+                    Poll::Pending => break,
+                }
+            }
+        }
+
+        // Create messages until there's no more bytes left
+        while let Some(frame) = this.codec.decode(&mut this.buf)? {
+            let message = match frame {
+                Frame::Text(bytes) => {
+                    let s = std::str::from_utf8(&bytes)
+                        .map_err(|e| {
+                            ProtocolError::Io(io::Error::new(io::ErrorKind::Other, e.to_string()))
+                        })?
+                        .to_string();
+                    Message::Text(s.into())
+                }
+                Frame::Binary(bytes) => Message::Binary(bytes),
+                Frame::Ping(bytes) => Message::Ping(bytes),
+                Frame::Pong(bytes) => Message::Pong(bytes),
+                Frame::Close(reason) => Message::Close(reason),
+                Frame::Continuation(item) => Message::Continuation(item),
+            };
+
+            this.messages.push_back(message);
+        }
+
+        // Return the first message in the queue
+        if let Some(msg) = this.messages.pop_front() {
+            return Poll::Ready(Some(Ok(msg)));
+        }
+
+        // If we've exhausted our message queue and we're closing, close the stream
+        if this.closing {
+            return Poll::Ready(None);
+        }
+
+        Poll::Pending
+    }
+}
+
\ No newline at end of file diff --git a/src/actix_ws/lib.rs.html b/src/actix_ws/lib.rs.html new file mode 100644 index 000000000..804ba5cdb --- /dev/null +++ b/src/actix_ws/lib.rs.html @@ -0,0 +1,169 @@ +lib.rs - source
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+
//! WebSockets for Actix Web, without actors.
+//!
+//! For usage, see documentation on [`handle()`].
+
+#![deny(rust_2018_idioms, nonstandard_style, future_incompatible)]
+#![warn(missing_docs)]
+#![doc(html_logo_url = "https://actix.rs/img/logo.png")]
+#![doc(html_favicon_url = "https://actix.rs/favicon.ico")]
+#![cfg_attr(docsrs, feature(doc_auto_cfg))]
+
+pub use actix_http::ws::{CloseCode, CloseReason, Message, ProtocolError};
+use actix_http::{
+    body::{BodyStream, MessageBody},
+    ws::handshake,
+};
+use actix_web::{web, HttpRequest, HttpResponse};
+use tokio::sync::mpsc::channel;
+
+mod fut;
+mod session;
+
+pub use self::{
+    fut::{MessageStream, StreamingBody},
+    session::{Closed, Session},
+};
+
+/// Begin handling websocket traffic
+///
+/// ```no_run
+/// use actix_web::{middleware::Logger, web, App, Error, HttpRequest, HttpResponse, HttpServer};
+/// use actix_ws::Message;
+/// use futures::stream::StreamExt as _;
+///
+/// async fn ws(req: HttpRequest, body: web::Payload) -> Result<HttpResponse, Error> {
+///     let (response, mut session, mut msg_stream) = actix_ws::handle(&req, body)?;
+///
+///     actix_rt::spawn(async move {
+///         while let Some(Ok(msg)) = msg_stream.next().await {
+///             match msg {
+///                 Message::Ping(bytes) => {
+///                     if session.pong(&bytes).await.is_err() {
+///                         return;
+///                     }
+///                 }
+///                 Message::Text(s) => println!("Got text, {}", s),
+///                 _ => break,
+///             }
+///         }
+///
+///         let _ = session.close(None).await;
+///     });
+///
+///     Ok(response)
+/// }
+///
+/// #[actix_rt::main]
+/// async fn main() -> Result<(), anyhow::Error> {
+///     HttpServer::new(move || {
+///         App::new()
+///             .wrap(Logger::default())
+///             .route("/ws", web::get().to(ws))
+///     })
+///     .bind("127.0.0.1:8080")?
+///     .run()
+///     .await?;
+///
+///     Ok(())
+/// }
+/// ```
+pub fn handle(
+    req: &HttpRequest,
+    body: web::Payload,
+) -> Result<(HttpResponse, Session, MessageStream), actix_web::Error> {
+    let mut response = handshake(req.head())?;
+    let (tx, rx) = channel(32);
+
+    Ok((
+        response
+            .message_body(BodyStream::new(StreamingBody::new(rx)).boxed())?
+            .into(),
+        Session::new(tx),
+        MessageStream::new(body.into_inner()),
+    ))
+}
+
\ No newline at end of file diff --git a/src/actix_ws/session.rs.html b/src/actix_ws/session.rs.html new file mode 100644 index 000000000..59be53904 --- /dev/null +++ b/src/actix_ws/session.rs.html @@ -0,0 +1,287 @@ +session.rs - source
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+
use std::sync::{
+    atomic::{AtomicBool, Ordering},
+    Arc,
+};
+
+use actix_http::ws::{CloseReason, Message};
+use actix_web::web::Bytes;
+use bytestring::ByteString;
+use tokio::sync::mpsc::Sender;
+
+/// A handle into the websocket session.
+///
+/// This type can be used to send messages into the websocket.
+#[derive(Clone)]
+pub struct Session {
+    inner: Option<Sender<Message>>,
+    closed: Arc<AtomicBool>,
+}
+
+/// The error representing a closed websocket session
+#[derive(Debug)]
+pub struct Closed;
+
+impl std::fmt::Display for Closed {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+        write!(f, "Session is closed")
+    }
+}
+
+impl std::error::Error for Closed {}
+
+impl Session {
+    pub(super) fn new(inner: Sender<Message>) -> Self {
+        Session {
+            inner: Some(inner),
+            closed: Arc::new(AtomicBool::new(false)),
+        }
+    }
+
+    fn pre_check(&mut self) {
+        if self.closed.load(Ordering::Relaxed) {
+            self.inner.take();
+        }
+    }
+
+    /// Send text into the websocket
+    ///
+    /// ```rust,ignore
+    /// if session.text("Some text").await.is_err() {
+    ///     // session closed
+    /// }
+    /// ```
+    pub async fn text(&mut self, msg: impl Into<ByteString>) -> Result<(), Closed> {
+        self.pre_check();
+        if let Some(inner) = self.inner.as_mut() {
+            inner
+                .send(Message::Text(msg.into()))
+                .await
+                .map_err(|_| Closed)
+        } else {
+            Err(Closed)
+        }
+    }
+
+    /// Send raw bytes into the websocket
+    ///
+    /// ```rust,ignore
+    /// if session.binary(b"some bytes").await.is_err() {
+    ///     // session closed
+    /// }
+    /// ```
+    pub async fn binary(&mut self, msg: impl Into<Bytes>) -> Result<(), Closed> {
+        self.pre_check();
+        if let Some(inner) = self.inner.as_mut() {
+            inner
+                .send(Message::Binary(msg.into()))
+                .await
+                .map_err(|_| Closed)
+        } else {
+            Err(Closed)
+        }
+    }
+
+    /// Ping the client
+    ///
+    /// For many applications, it will be important to send regular pings to keep track of if the
+    /// client has disconnected
+    ///
+    /// ```rust,ignore
+    /// if session.ping(b"").await.is_err() {
+    ///     // session is closed
+    /// }
+    /// ```
+    pub async fn ping(&mut self, msg: &[u8]) -> Result<(), Closed> {
+        self.pre_check();
+        if let Some(inner) = self.inner.as_mut() {
+            inner
+                .send(Message::Ping(Bytes::copy_from_slice(msg)))
+                .await
+                .map_err(|_| Closed)
+        } else {
+            Err(Closed)
+        }
+    }
+
+    /// Pong the client
+    ///
+    /// ```rust,ignore
+    /// match msg {
+    ///     Message::Ping(bytes) => {
+    ///         let _ = session.pong(&bytes).await;
+    ///     }
+    ///     _ => (),
+    /// }
+    pub async fn pong(&mut self, msg: &[u8]) -> Result<(), Closed> {
+        self.pre_check();
+        if let Some(inner) = self.inner.as_mut() {
+            inner
+                .send(Message::Pong(Bytes::copy_from_slice(msg)))
+                .await
+                .map_err(|_| Closed)
+        } else {
+            Err(Closed)
+        }
+    }
+
+    /// Send a close message, and consume the session
+    ///
+    /// All clones will return `Err(Closed)` if used after this call
+    ///
+    /// ```rust,ignore
+    /// session.close(None).await
+    /// ```
+    pub async fn close(mut self, reason: Option<CloseReason>) -> Result<(), Closed> {
+        self.pre_check();
+        if let Some(inner) = self.inner.take() {
+            self.closed.store(true, Ordering::Relaxed);
+            inner.send(Message::Close(reason)).await.map_err(|_| Closed)
+        } else {
+            Err(Closed)
+        }
+    }
+}
+
\ No newline at end of file diff --git a/trait.impl/core/clone/trait.Clone.js b/trait.impl/core/clone/trait.Clone.js index bfe3f35ba..2ea4f3ccf 100644 --- a/trait.impl/core/clone/trait.Clone.js +++ b/trait.impl/core/clone/trait.Clone.js @@ -3,6 +3,7 @@ "actix_identity":[["impl Clone for IdentityMiddleware"],["impl Clone for LogoutBehaviour"],["impl Clone for IdentityMiddlewareBuilder"]], "actix_limitation":[["impl Clone for Limiter"],["impl Clone for Status"]], "actix_session":[["impl Clone for PersistentSession"],["impl Clone for TtlExtensionPolicy"],["impl Clone for CookieContentSecurity"],["impl Clone for SessionStatus"],["impl Clone for Session"],["impl Clone for SessionLifecycle"],["impl Clone for RedisSessionStore"],["impl Clone for BrowserSession"],["impl<Store: Clone + SessionStore> Clone for SessionMiddleware<Store>"]], -"actix_settings":[["impl Clone for NumWorkers"],["impl Clone for Backlog"],["impl Clone for KeepAlive"],["impl Clone for NoSettings"],["impl Clone for MaxConnectionRate"],["impl Clone for Timeout"],["impl Clone for Address"],["impl Clone for Mode"],["impl Clone for ActixSettings"],["impl<A: Clone> Clone for BasicSettings<A>"],["impl Clone for Tls"],["impl Clone for MaxConnections"]], -"actix_web_httpauth":[["impl Clone for Config"],["impl Clone for BearerAuth"],["impl<C: Clone + Challenge> Clone for WwwAuthenticate<C>"],["impl Clone for Bearer"],["impl Clone for Error"],["impl Clone for Config"],["impl Clone for BasicAuth"],["impl<T, F: Clone> Clone for HttpAuthentication<T, F>where\n T: FromRequest + Clone,"],["impl Clone for Basic"],["impl Clone for Basic"],["impl<S: Clone + Scheme> Clone for Authorization<S>"],["impl Clone for Bearer"]] +"actix_settings":[["impl Clone for MaxConnections"],["impl Clone for Backlog"],["impl Clone for Timeout"],["impl Clone for NoSettings"],["impl<A: Clone> Clone for BasicSettings<A>"],["impl Clone for Tls"],["impl Clone for KeepAlive"],["impl Clone for MaxConnectionRate"],["impl Clone for ActixSettings"],["impl Clone for NumWorkers"],["impl Clone for Mode"],["impl Clone for Address"]], +"actix_web_httpauth":[["impl Clone for Config"],["impl Clone for BearerAuth"],["impl<C: Clone + Challenge> Clone for WwwAuthenticate<C>"],["impl Clone for Bearer"],["impl Clone for Error"],["impl Clone for Config"],["impl Clone for BasicAuth"],["impl<T, F: Clone> Clone for HttpAuthentication<T, F>where\n T: FromRequest + Clone,"],["impl Clone for Basic"],["impl Clone for Basic"],["impl<S: Clone + Scheme> Clone for Authorization<S>"],["impl Clone for Bearer"]], +"actix_ws":[["impl Clone for Session"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.Eq.js b/trait.impl/core/cmp/trait.Eq.js index 1a874320b..f10d8bd0c 100644 --- a/trait.impl/core/cmp/trait.Eq.js +++ b/trait.impl/core/cmp/trait.Eq.js @@ -1,5 +1,5 @@ (function() {var implementors = { "actix_session":[["impl Eq for SessionKey"],["impl Eq for SessionStatus"]], -"actix_settings":[["impl Eq for Timeout"],["impl Eq for Address"],["impl Eq for Tls"],["impl Eq for NoSettings"],["impl Eq for Backlog"],["impl<A: Eq> Eq for BasicSettings<A>"],["impl Eq for NumWorkers"],["impl Eq for ActixSettings"],["impl Eq for Mode"],["impl Eq for MaxConnectionRate"],["impl Eq for KeepAlive"],["impl Eq for MaxConnections"]], +"actix_settings":[["impl Eq for NoSettings"],["impl Eq for Mode"],["impl Eq for ActixSettings"],["impl Eq for KeepAlive"],["impl<A: Eq> Eq for BasicSettings<A>"],["impl Eq for MaxConnectionRate"],["impl Eq for Timeout"],["impl Eq for NumWorkers"],["impl Eq for Backlog"],["impl Eq for MaxConnections"],["impl Eq for Tls"],["impl Eq for Address"]], "actix_web_httpauth":[["impl<C: Eq + Challenge> Eq for WwwAuthenticate<C>"],["impl Eq for Bearer"],["impl Eq for Basic"],["impl Eq for Bearer"],["impl<S: Eq + Scheme> Eq for Authorization<S>"],["impl Eq for Error"],["impl Eq for Basic"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/cmp/trait.PartialEq.js b/trait.impl/core/cmp/trait.PartialEq.js index fe33f42b9..5cf5a1d40 100644 --- a/trait.impl/core/cmp/trait.PartialEq.js +++ b/trait.impl/core/cmp/trait.PartialEq.js @@ -1,5 +1,5 @@ (function() {var implementors = { "actix_session":[["impl PartialEq for SessionKey"],["impl PartialEq for SessionStatus"]], -"actix_settings":[["impl PartialEq for MaxConnections"],["impl PartialEq for Address"],["impl PartialEq for NumWorkers"],["impl PartialEq for Timeout"],["impl PartialEq for Mode"],["impl PartialEq for Backlog"],["impl PartialEq for KeepAlive"],["impl PartialEq for MaxConnectionRate"],["impl PartialEq for NoSettings"],["impl PartialEq for Tls"],["impl PartialEq for ActixSettings"],["impl<A: PartialEq> PartialEq for BasicSettings<A>"]], +"actix_settings":[["impl PartialEq for Address"],["impl PartialEq for KeepAlive"],["impl PartialEq for NoSettings"],["impl PartialEq for Mode"],["impl PartialEq for MaxConnections"],["impl PartialEq for NumWorkers"],["impl PartialEq for Tls"],["impl PartialEq for MaxConnectionRate"],["impl PartialEq for Timeout"],["impl PartialEq for Backlog"],["impl PartialEq for ActixSettings"],["impl<A: PartialEq> PartialEq for BasicSettings<A>"]], "actix_web_httpauth":[["impl PartialEq for Bearer"],["impl PartialEq for Basic"],["impl<S: PartialEq + Scheme> PartialEq for Authorization<S>"],["impl PartialEq for Error"],["impl PartialEq for Bearer"],["impl PartialEq for Basic"],["impl<C: PartialEq + Challenge> PartialEq for WwwAuthenticate<C>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/convert/trait.From.js b/trait.impl/core/convert/trait.From.js index 3d8192d5f..4b9b23846 100644 --- a/trait.impl/core/convert/trait.From.js +++ b/trait.impl/core/convert/trait.From.js @@ -4,6 +4,6 @@ "actix_protobuf":[["impl From<PayloadError> for ProtoBufPayloadError"],["impl From<DecodeError> for ProtoBufPayloadError"]], "actix_redis":[["impl From<Error> for Error"]], "actix_session":[["impl From<Error> for SessionInsertError"],["impl From<SessionKey> for String"],["impl From<PersistentSession> for SessionLifecycle"],["impl From<BrowserSession> for SessionLifecycle"],["impl From<Error> for SessionGetError"]], -"actix_settings":[["impl From<Error> for Error"],["impl From<ParseBoolError> for Error"],["impl From<VarError> for Error"],["impl From<Error> for Error"],["impl From<ParseIntError> for Error"],["impl From<Error> for Error"]], +"actix_settings":[["impl From<ParseIntError> for Error"],["impl From<Error> for Error"],["impl From<VarError> for Error"],["impl From<ParseBoolError> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"]], "actix_web_httpauth":[["impl From<Basic> for BasicAuth"],["impl From<DecodeError> for ParseError"],["impl From<ToStrError> for ParseError"],["impl From<Utf8Error> for ParseError"],["impl<S: Scheme> From<S> for Authorization<S>"],["impl<T> From<T> for AuthenticationError<<T as AuthExtractorConfig>::Inner>where\n T: AuthExtractorConfig,"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/error/trait.Error.js b/trait.impl/core/error/trait.Error.js index ddd66d404..c594bfc73 100644 --- a/trait.impl/core/error/trait.Error.js +++ b/trait.impl/core/error/trait.Error.js @@ -5,5 +5,6 @@ "actix_redis":[["impl Error for Error"]], "actix_session":[["impl Error for UpdateError"],["impl Error for SessionInsertError"],["impl Error for SessionGetError"],["impl Error for SaveError"],["impl Error for LoadError"]], "actix_settings":[["impl Error for Error"]], -"actix_web_httpauth":[["impl Error for ParseError"],["impl<C: Challenge + 'static> Error for AuthenticationError<C>"]] +"actix_web_httpauth":[["impl Error for ParseError"],["impl<C: Challenge + 'static> Error for AuthenticationError<C>"]], +"actix_ws":[["impl Error for Closed"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.Debug.js b/trait.impl/core/fmt/trait.Debug.js index 795946a9d..48ef83790 100644 --- a/trait.impl/core/fmt/trait.Debug.js +++ b/trait.impl/core/fmt/trait.Debug.js @@ -5,6 +5,7 @@ "actix_protobuf":[["impl<T> Debug for ProtoBuf<T>where\n T: Debug + Message,"],["impl Debug for ProtoBufPayloadError"]], "actix_redis":[["impl Debug for Error"],["impl Debug for Command"]], "actix_session":[["impl Debug for SessionKey"],["impl Debug for SessionInsertError"],["impl Debug for PersistentSession"],["impl Debug for SessionGetError"],["impl Debug for CookieContentSecurity"],["impl Debug for SaveError"],["impl Debug for TtlExtensionPolicy"],["impl Debug for SessionStatus"],["impl Debug for UpdateError"],["impl Debug for SessionLifecycle"],["impl Debug for LoadError"],["impl Debug for BrowserSession"]], -"actix_settings":[["impl Debug for Error"],["impl Debug for NumWorkers"],["impl Debug for KeepAlive"],["impl Debug for NoSettings"],["impl Debug for MaxConnectionRate"],["impl Debug for Backlog"],["impl Debug for Tls"],["impl Debug for ActixSettings"],["impl<A: Debug> Debug for BasicSettings<A>"],["impl Debug for Mode"],["impl Debug for Timeout"],["impl Debug for MaxConnections"],["impl Debug for Address"]], -"actix_web_httpauth":[["impl Debug for BasicAuth"],["impl Debug for Basic"],["impl Debug for ParseError"],["impl Debug for BearerBuilder"],["impl Debug for BearerAuth"],["impl<S: Debug + Scheme> Debug for Authorization<S>"],["impl Debug for Basic"],["impl<T, F: Debug> Debug for HttpAuthentication<T, F>where\n T: FromRequest + Debug,"],["impl Debug for Error"],["impl Debug for Bearer"],["impl<C: Debug + Challenge> Debug for AuthenticationError<C>"],["impl<C: Debug + Challenge> Debug for WwwAuthenticate<C>"],["impl Debug for Config"],["impl Debug for Bearer"],["impl Debug for Config"]] +"actix_settings":[["impl Debug for MaxConnections"],["impl Debug for KeepAlive"],["impl Debug for Mode"],["impl Debug for NoSettings"],["impl Debug for Backlog"],["impl Debug for Tls"],["impl Debug for ActixSettings"],["impl Debug for NumWorkers"],["impl Debug for Error"],["impl Debug for Address"],["impl<A: Debug> Debug for BasicSettings<A>"],["impl Debug for MaxConnectionRate"],["impl Debug for Timeout"]], +"actix_web_httpauth":[["impl Debug for BasicAuth"],["impl Debug for Basic"],["impl Debug for ParseError"],["impl Debug for BearerBuilder"],["impl Debug for BearerAuth"],["impl<S: Debug + Scheme> Debug for Authorization<S>"],["impl Debug for Basic"],["impl<T, F: Debug> Debug for HttpAuthentication<T, F>where\n T: FromRequest + Debug,"],["impl Debug for Error"],["impl Debug for Bearer"],["impl<C: Debug + Challenge> Debug for AuthenticationError<C>"],["impl<C: Debug + Challenge> Debug for WwwAuthenticate<C>"],["impl Debug for Config"],["impl Debug for Bearer"],["impl Debug for Config"]], +"actix_ws":[["impl Debug for Closed"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/fmt/trait.Display.js b/trait.impl/core/fmt/trait.Display.js index 2615e3f5d..b315e9388 100644 --- a/trait.impl/core/fmt/trait.Display.js +++ b/trait.impl/core/fmt/trait.Display.js @@ -6,5 +6,6 @@ "actix_redis":[["impl Display for Error"]], "actix_session":[["impl Display for UpdateError"],["impl Display for SessionGetError"],["impl Display for LoadError"],["impl Display for SaveError"],["impl Display for SessionInsertError"]], "actix_settings":[["impl Display for Error"]], -"actix_web_httpauth":[["impl Display for Bearer"],["impl Display for ParseError"],["impl<C: Challenge> Display for AuthenticationError<C>"],["impl<S: Scheme> Display for Authorization<S>"],["impl Display for Basic"],["impl Display for Bearer"],["impl Display for Error"],["impl Display for Basic"]] +"actix_web_httpauth":[["impl Display for Bearer"],["impl Display for ParseError"],["impl<C: Challenge> Display for AuthenticationError<C>"],["impl<S: Scheme> Display for Authorization<S>"],["impl Display for Basic"],["impl Display for Bearer"],["impl Display for Error"],["impl Display for Basic"]], +"actix_ws":[["impl Display for Closed"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/hash/trait.Hash.js b/trait.impl/core/hash/trait.Hash.js index d772afd7c..c0e2a00b8 100644 --- a/trait.impl/core/hash/trait.Hash.js +++ b/trait.impl/core/hash/trait.Hash.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"actix_settings":[["impl Hash for ActixSettings"],["impl Hash for Tls"],["impl Hash for MaxConnections"],["impl Hash for Timeout"],["impl Hash for NoSettings"],["impl Hash for Backlog"],["impl Hash for Mode"],["impl Hash for Address"],["impl<A: Hash> Hash for BasicSettings<A>"],["impl Hash for MaxConnectionRate"],["impl Hash for NumWorkers"],["impl Hash for KeepAlive"]], +"actix_settings":[["impl Hash for Address"],["impl Hash for NumWorkers"],["impl Hash for MaxConnectionRate"],["impl Hash for Backlog"],["impl Hash for NoSettings"],["impl Hash for KeepAlive"],["impl Hash for Mode"],["impl Hash for MaxConnections"],["impl Hash for Tls"],["impl Hash for Timeout"],["impl<A: Hash> Hash for BasicSettings<A>"],["impl Hash for ActixSettings"]], "actix_web_httpauth":[["impl<S: Hash + Scheme> Hash for Authorization<S>"],["impl<C: Hash + Challenge> Hash for WwwAuthenticate<C>"],["impl Hash for Bearer"],["impl Hash for Error"],["impl Hash for Basic"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Freeze.js b/trait.impl/core/marker/trait.Freeze.js index e15c0f72a..9452443cc 100644 --- a/trait.impl/core/marker/trait.Freeze.js +++ b/trait.impl/core/marker/trait.Freeze.js @@ -6,5 +6,6 @@ "actix_redis":[["impl Freeze for Command",1,["actix_redis::redis::Command"]],["impl Freeze for RedisActor",1,["actix_redis::redis::RedisActor"]],["impl Freeze for Error",1,["actix_redis::Error"]]], "actix_session":[["impl Freeze for SessionLifecycle",1,["actix_session::config::SessionLifecycle"]],["impl Freeze for BrowserSession",1,["actix_session::config::BrowserSession"]],["impl Freeze for PersistentSession",1,["actix_session::config::PersistentSession"]],["impl Freeze for TtlExtensionPolicy",1,["actix_session::config::TtlExtensionPolicy"]],["impl Freeze for CookieContentSecurity",1,["actix_session::config::CookieContentSecurity"]],["impl<Store> Freeze for SessionMiddlewareBuilder<Store>where\n Store: Freeze,",1,["actix_session::config::SessionMiddlewareBuilder"]],["impl<Store> Freeze for SessionMiddleware<Store>",1,["actix_session::middleware::SessionMiddleware"]],["impl Freeze for Session",1,["actix_session::session::Session"]],["impl Freeze for SessionStatus",1,["actix_session::session::SessionStatus"]],["impl Freeze for SessionGetError",1,["actix_session::session::SessionGetError"]],["impl Freeze for SessionInsertError",1,["actix_session::session::SessionInsertError"]],["impl Freeze for LoadError",1,["actix_session::storage::interface::LoadError"]],["impl Freeze for SaveError",1,["actix_session::storage::interface::SaveError"]],["impl Freeze for UpdateError",1,["actix_session::storage::interface::UpdateError"]],["impl Freeze for SessionKey",1,["actix_session::storage::session_key::SessionKey"]],["impl Freeze for CookieSessionStore",1,["actix_session::storage::cookie::CookieSessionStore"]],["impl Freeze for RedisActorSessionStore",1,["actix_session::storage::redis_actor::RedisActorSessionStore"]],["impl Freeze for RedisActorSessionStoreBuilder",1,["actix_session::storage::redis_actor::RedisActorSessionStoreBuilder"]],["impl Freeze for RedisSessionStore",1,["actix_session::storage::redis_rs::RedisSessionStore"]],["impl Freeze for RedisSessionStoreBuilder",1,["actix_session::storage::redis_rs::RedisSessionStoreBuilder"]]], "actix_settings":[["impl Freeze for Error",1,["actix_settings::error::Error"]],["impl Freeze for Address",1,["actix_settings::settings::address::Address"]],["impl Freeze for Backlog",1,["actix_settings::settings::backlog::Backlog"]],["impl Freeze for KeepAlive",1,["actix_settings::settings::keep_alive::KeepAlive"]],["impl Freeze for MaxConnectionRate",1,["actix_settings::settings::max_connection_rate::MaxConnectionRate"]],["impl Freeze for MaxConnections",1,["actix_settings::settings::max_connections::MaxConnections"]],["impl Freeze for Mode",1,["actix_settings::settings::mode::Mode"]],["impl Freeze for NumWorkers",1,["actix_settings::settings::num_workers::NumWorkers"]],["impl Freeze for Timeout",1,["actix_settings::settings::timeout::Timeout"]],["impl Freeze for Tls",1,["actix_settings::settings::tls::Tls"]],["impl Freeze for ActixSettings",1,["actix_settings::settings::ActixSettings"]],["impl<A> Freeze for BasicSettings<A>where\n A: Freeze,",1,["actix_settings::BasicSettings"]],["impl Freeze for NoSettings",1,["actix_settings::NoSettings"]]], -"actix_web_httpauth":[["impl Freeze for Config",1,["actix_web_httpauth::extractors::basic::Config"]],["impl Freeze for BasicAuth",1,["actix_web_httpauth::extractors::basic::BasicAuth"]],["impl Freeze for Error",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors::Error"]],["impl Freeze for Config",1,["actix_web_httpauth::extractors::bearer::Config"]],["impl Freeze for BearerAuth",1,["actix_web_httpauth::extractors::bearer::BearerAuth"]],["impl<C> Freeze for AuthenticationError<C>where\n C: Freeze,",1,["actix_web_httpauth::extractors::errors::AuthenticationError"]],["impl Freeze for ParseError",1,["actix_web_httpauth::headers::authorization::errors::ParseError"]],["impl<S> Freeze for Authorization<S>where\n S: Freeze,",1,["actix_web_httpauth::headers::authorization::header::Authorization"]],["impl Freeze for Basic",1,["actix_web_httpauth::headers::authorization::scheme::basic::Basic"]],["impl Freeze for Bearer",1,["actix_web_httpauth::headers::authorization::scheme::bearer::Bearer"]],["impl Freeze for Basic",1,["actix_web_httpauth::headers::www_authenticate::challenge::basic::Basic"]],["impl Freeze for BearerBuilder",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder::BearerBuilder"]],["impl Freeze for Bearer",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge::Bearer"]],["impl<C> Freeze for WwwAuthenticate<C>where\n C: Freeze,",1,["actix_web_httpauth::headers::www_authenticate::header::WwwAuthenticate"]],["impl<T, F> Freeze for HttpAuthentication<T, F>",1,["actix_web_httpauth::middleware::HttpAuthentication"]]] +"actix_web_httpauth":[["impl Freeze for Config",1,["actix_web_httpauth::extractors::basic::Config"]],["impl Freeze for BasicAuth",1,["actix_web_httpauth::extractors::basic::BasicAuth"]],["impl Freeze for Error",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors::Error"]],["impl Freeze for Config",1,["actix_web_httpauth::extractors::bearer::Config"]],["impl Freeze for BearerAuth",1,["actix_web_httpauth::extractors::bearer::BearerAuth"]],["impl<C> Freeze for AuthenticationError<C>where\n C: Freeze,",1,["actix_web_httpauth::extractors::errors::AuthenticationError"]],["impl Freeze for ParseError",1,["actix_web_httpauth::headers::authorization::errors::ParseError"]],["impl<S> Freeze for Authorization<S>where\n S: Freeze,",1,["actix_web_httpauth::headers::authorization::header::Authorization"]],["impl Freeze for Basic",1,["actix_web_httpauth::headers::authorization::scheme::basic::Basic"]],["impl Freeze for Bearer",1,["actix_web_httpauth::headers::authorization::scheme::bearer::Bearer"]],["impl Freeze for Basic",1,["actix_web_httpauth::headers::www_authenticate::challenge::basic::Basic"]],["impl Freeze for BearerBuilder",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder::BearerBuilder"]],["impl Freeze for Bearer",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge::Bearer"]],["impl<C> Freeze for WwwAuthenticate<C>where\n C: Freeze,",1,["actix_web_httpauth::headers::www_authenticate::header::WwwAuthenticate"]],["impl<T, F> Freeze for HttpAuthentication<T, F>",1,["actix_web_httpauth::middleware::HttpAuthentication"]]], +"actix_ws":[["impl Freeze for StreamingBody",1,["actix_ws::fut::StreamingBody"]],["impl Freeze for MessageStream",1,["actix_ws::fut::MessageStream"]],["impl Freeze for Session",1,["actix_ws::session::Session"]],["impl Freeze for Closed",1,["actix_ws::session::Closed"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Send.js b/trait.impl/core/marker/trait.Send.js index 2b02b1b6a..2fa93e147 100644 --- a/trait.impl/core/marker/trait.Send.js +++ b/trait.impl/core/marker/trait.Send.js @@ -6,5 +6,6 @@ "actix_redis":[["impl Send for Command",1,["actix_redis::redis::Command"]],["impl !Send for RedisActor",1,["actix_redis::redis::RedisActor"]],["impl Send for Error",1,["actix_redis::Error"]]], "actix_session":[["impl Send for SessionLifecycle",1,["actix_session::config::SessionLifecycle"]],["impl Send for BrowserSession",1,["actix_session::config::BrowserSession"]],["impl Send for PersistentSession",1,["actix_session::config::PersistentSession"]],["impl Send for TtlExtensionPolicy",1,["actix_session::config::TtlExtensionPolicy"]],["impl Send for CookieContentSecurity",1,["actix_session::config::CookieContentSecurity"]],["impl<Store> Send for SessionMiddlewareBuilder<Store>where\n Store: Send,",1,["actix_session::config::SessionMiddlewareBuilder"]],["impl<Store> !Send for SessionMiddleware<Store>",1,["actix_session::middleware::SessionMiddleware"]],["impl !Send for Session",1,["actix_session::session::Session"]],["impl Send for SessionStatus",1,["actix_session::session::SessionStatus"]],["impl Send for SessionGetError",1,["actix_session::session::SessionGetError"]],["impl Send for SessionInsertError",1,["actix_session::session::SessionInsertError"]],["impl Send for LoadError",1,["actix_session::storage::interface::LoadError"]],["impl Send for SaveError",1,["actix_session::storage::interface::SaveError"]],["impl Send for UpdateError",1,["actix_session::storage::interface::UpdateError"]],["impl Send for SessionKey",1,["actix_session::storage::session_key::SessionKey"]],["impl Send for CookieSessionStore",1,["actix_session::storage::cookie::CookieSessionStore"]],["impl !Send for RedisActorSessionStore",1,["actix_session::storage::redis_actor::RedisActorSessionStore"]],["impl !Send for RedisActorSessionStoreBuilder",1,["actix_session::storage::redis_actor::RedisActorSessionStoreBuilder"]],["impl Send for RedisSessionStore",1,["actix_session::storage::redis_rs::RedisSessionStore"]],["impl Send for RedisSessionStoreBuilder",1,["actix_session::storage::redis_rs::RedisSessionStoreBuilder"]]], "actix_settings":[["impl Send for Error",1,["actix_settings::error::Error"]],["impl Send for Address",1,["actix_settings::settings::address::Address"]],["impl Send for Backlog",1,["actix_settings::settings::backlog::Backlog"]],["impl Send for KeepAlive",1,["actix_settings::settings::keep_alive::KeepAlive"]],["impl Send for MaxConnectionRate",1,["actix_settings::settings::max_connection_rate::MaxConnectionRate"]],["impl Send for MaxConnections",1,["actix_settings::settings::max_connections::MaxConnections"]],["impl Send for Mode",1,["actix_settings::settings::mode::Mode"]],["impl Send for NumWorkers",1,["actix_settings::settings::num_workers::NumWorkers"]],["impl Send for Timeout",1,["actix_settings::settings::timeout::Timeout"]],["impl Send for Tls",1,["actix_settings::settings::tls::Tls"]],["impl Send for ActixSettings",1,["actix_settings::settings::ActixSettings"]],["impl<A> Send for BasicSettings<A>where\n A: Send,",1,["actix_settings::BasicSettings"]],["impl Send for NoSettings",1,["actix_settings::NoSettings"]]], -"actix_web_httpauth":[["impl Send for Config",1,["actix_web_httpauth::extractors::basic::Config"]],["impl Send for BasicAuth",1,["actix_web_httpauth::extractors::basic::BasicAuth"]],["impl Send for Error",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors::Error"]],["impl Send for Config",1,["actix_web_httpauth::extractors::bearer::Config"]],["impl Send for BearerAuth",1,["actix_web_httpauth::extractors::bearer::BearerAuth"]],["impl<C> Send for AuthenticationError<C>",1,["actix_web_httpauth::extractors::errors::AuthenticationError"]],["impl Send for ParseError",1,["actix_web_httpauth::headers::authorization::errors::ParseError"]],["impl<S> Send for Authorization<S>",1,["actix_web_httpauth::headers::authorization::header::Authorization"]],["impl Send for Basic",1,["actix_web_httpauth::headers::authorization::scheme::basic::Basic"]],["impl Send for Bearer",1,["actix_web_httpauth::headers::authorization::scheme::bearer::Bearer"]],["impl Send for Basic",1,["actix_web_httpauth::headers::www_authenticate::challenge::basic::Basic"]],["impl Send for BearerBuilder",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder::BearerBuilder"]],["impl Send for Bearer",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge::Bearer"]],["impl<C> Send for WwwAuthenticate<C>",1,["actix_web_httpauth::headers::www_authenticate::header::WwwAuthenticate"]],["impl<T, F> Send for HttpAuthentication<T, F>where\n F: Send + Sync,\n T: Send,",1,["actix_web_httpauth::middleware::HttpAuthentication"]]] +"actix_web_httpauth":[["impl Send for Config",1,["actix_web_httpauth::extractors::basic::Config"]],["impl Send for BasicAuth",1,["actix_web_httpauth::extractors::basic::BasicAuth"]],["impl Send for Error",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors::Error"]],["impl Send for Config",1,["actix_web_httpauth::extractors::bearer::Config"]],["impl Send for BearerAuth",1,["actix_web_httpauth::extractors::bearer::BearerAuth"]],["impl<C> Send for AuthenticationError<C>",1,["actix_web_httpauth::extractors::errors::AuthenticationError"]],["impl Send for ParseError",1,["actix_web_httpauth::headers::authorization::errors::ParseError"]],["impl<S> Send for Authorization<S>",1,["actix_web_httpauth::headers::authorization::header::Authorization"]],["impl Send for Basic",1,["actix_web_httpauth::headers::authorization::scheme::basic::Basic"]],["impl Send for Bearer",1,["actix_web_httpauth::headers::authorization::scheme::bearer::Bearer"]],["impl Send for Basic",1,["actix_web_httpauth::headers::www_authenticate::challenge::basic::Basic"]],["impl Send for BearerBuilder",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder::BearerBuilder"]],["impl Send for Bearer",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge::Bearer"]],["impl<C> Send for WwwAuthenticate<C>",1,["actix_web_httpauth::headers::www_authenticate::header::WwwAuthenticate"]],["impl<T, F> Send for HttpAuthentication<T, F>where\n F: Send + Sync,\n T: Send,",1,["actix_web_httpauth::middleware::HttpAuthentication"]]], +"actix_ws":[["impl Send for StreamingBody",1,["actix_ws::fut::StreamingBody"]],["impl !Send for MessageStream",1,["actix_ws::fut::MessageStream"]],["impl Send for Session",1,["actix_ws::session::Session"]],["impl Send for Closed",1,["actix_ws::session::Closed"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.StructuralEq.js b/trait.impl/core/marker/trait.StructuralEq.js index f91f67356..cfeb08495 100644 --- a/trait.impl/core/marker/trait.StructuralEq.js +++ b/trait.impl/core/marker/trait.StructuralEq.js @@ -1,5 +1,5 @@ (function() {var implementors = { "actix_session":[["impl StructuralEq for SessionStatus"],["impl StructuralEq for SessionKey"]], -"actix_settings":[["impl<A> StructuralEq for BasicSettings<A>"],["impl StructuralEq for KeepAlive"],["impl StructuralEq for NoSettings"],["impl StructuralEq for Timeout"],["impl StructuralEq for NumWorkers"],["impl StructuralEq for MaxConnections"],["impl StructuralEq for ActixSettings"],["impl StructuralEq for MaxConnectionRate"],["impl StructuralEq for Backlog"],["impl StructuralEq for Tls"],["impl StructuralEq for Mode"],["impl StructuralEq for Address"]], +"actix_settings":[["impl StructuralEq for NoSettings"],["impl StructuralEq for MaxConnections"],["impl StructuralEq for Backlog"],["impl StructuralEq for NumWorkers"],["impl StructuralEq for ActixSettings"],["impl StructuralEq for Tls"],["impl StructuralEq for MaxConnectionRate"],["impl StructuralEq for Mode"],["impl StructuralEq for KeepAlive"],["impl StructuralEq for Address"],["impl StructuralEq for Timeout"],["impl<A> StructuralEq for BasicSettings<A>"]], "actix_web_httpauth":[["impl StructuralEq for Error"],["impl StructuralEq for Bearer"],["impl StructuralEq for Bearer"],["impl<S: Scheme> StructuralEq for Authorization<S>"],["impl StructuralEq for Basic"],["impl<C: Challenge> StructuralEq for WwwAuthenticate<C>"],["impl StructuralEq for Basic"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.StructuralPartialEq.js b/trait.impl/core/marker/trait.StructuralPartialEq.js index 48f151fea..f488fa145 100644 --- a/trait.impl/core/marker/trait.StructuralPartialEq.js +++ b/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -1,5 +1,5 @@ (function() {var implementors = { "actix_session":[["impl StructuralPartialEq for SessionStatus"],["impl StructuralPartialEq for SessionKey"]], -"actix_settings":[["impl StructuralPartialEq for Backlog"],["impl StructuralPartialEq for Tls"],["impl StructuralPartialEq for MaxConnections"],["impl StructuralPartialEq for NumWorkers"],["impl StructuralPartialEq for NoSettings"],["impl StructuralPartialEq for Mode"],["impl StructuralPartialEq for Timeout"],["impl StructuralPartialEq for MaxConnectionRate"],["impl StructuralPartialEq for KeepAlive"],["impl<A> StructuralPartialEq for BasicSettings<A>"],["impl StructuralPartialEq for ActixSettings"],["impl StructuralPartialEq for Address"]], +"actix_settings":[["impl StructuralPartialEq for Tls"],["impl StructuralPartialEq for ActixSettings"],["impl StructuralPartialEq for Backlog"],["impl StructuralPartialEq for NumWorkers"],["impl StructuralPartialEq for MaxConnections"],["impl<A> StructuralPartialEq for BasicSettings<A>"],["impl StructuralPartialEq for Address"],["impl StructuralPartialEq for NoSettings"],["impl StructuralPartialEq for KeepAlive"],["impl StructuralPartialEq for MaxConnectionRate"],["impl StructuralPartialEq for Mode"],["impl StructuralPartialEq for Timeout"]], "actix_web_httpauth":[["impl StructuralPartialEq for Error"],["impl<S: Scheme> StructuralPartialEq for Authorization<S>"],["impl StructuralPartialEq for Bearer"],["impl StructuralPartialEq for Basic"],["impl StructuralPartialEq for Basic"],["impl StructuralPartialEq for Bearer"],["impl<C: Challenge> StructuralPartialEq for WwwAuthenticate<C>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Sync.js b/trait.impl/core/marker/trait.Sync.js index 479c68a19..c2697be08 100644 --- a/trait.impl/core/marker/trait.Sync.js +++ b/trait.impl/core/marker/trait.Sync.js @@ -6,5 +6,6 @@ "actix_redis":[["impl Sync for Command",1,["actix_redis::redis::Command"]],["impl !Sync for RedisActor",1,["actix_redis::redis::RedisActor"]],["impl Sync for Error",1,["actix_redis::Error"]]], "actix_session":[["impl Sync for SessionLifecycle",1,["actix_session::config::SessionLifecycle"]],["impl Sync for BrowserSession",1,["actix_session::config::BrowserSession"]],["impl Sync for PersistentSession",1,["actix_session::config::PersistentSession"]],["impl Sync for TtlExtensionPolicy",1,["actix_session::config::TtlExtensionPolicy"]],["impl Sync for CookieContentSecurity",1,["actix_session::config::CookieContentSecurity"]],["impl<Store> Sync for SessionMiddlewareBuilder<Store>where\n Store: Sync,",1,["actix_session::config::SessionMiddlewareBuilder"]],["impl<Store> !Sync for SessionMiddleware<Store>",1,["actix_session::middleware::SessionMiddleware"]],["impl !Sync for Session",1,["actix_session::session::Session"]],["impl Sync for SessionStatus",1,["actix_session::session::SessionStatus"]],["impl Sync for SessionGetError",1,["actix_session::session::SessionGetError"]],["impl Sync for SessionInsertError",1,["actix_session::session::SessionInsertError"]],["impl Sync for LoadError",1,["actix_session::storage::interface::LoadError"]],["impl Sync for SaveError",1,["actix_session::storage::interface::SaveError"]],["impl Sync for UpdateError",1,["actix_session::storage::interface::UpdateError"]],["impl Sync for SessionKey",1,["actix_session::storage::session_key::SessionKey"]],["impl Sync for CookieSessionStore",1,["actix_session::storage::cookie::CookieSessionStore"]],["impl !Sync for RedisActorSessionStore",1,["actix_session::storage::redis_actor::RedisActorSessionStore"]],["impl !Sync for RedisActorSessionStoreBuilder",1,["actix_session::storage::redis_actor::RedisActorSessionStoreBuilder"]],["impl Sync for RedisSessionStore",1,["actix_session::storage::redis_rs::RedisSessionStore"]],["impl Sync for RedisSessionStoreBuilder",1,["actix_session::storage::redis_rs::RedisSessionStoreBuilder"]]], "actix_settings":[["impl Sync for Error",1,["actix_settings::error::Error"]],["impl Sync for Address",1,["actix_settings::settings::address::Address"]],["impl Sync for Backlog",1,["actix_settings::settings::backlog::Backlog"]],["impl Sync for KeepAlive",1,["actix_settings::settings::keep_alive::KeepAlive"]],["impl Sync for MaxConnectionRate",1,["actix_settings::settings::max_connection_rate::MaxConnectionRate"]],["impl Sync for MaxConnections",1,["actix_settings::settings::max_connections::MaxConnections"]],["impl Sync for Mode",1,["actix_settings::settings::mode::Mode"]],["impl Sync for NumWorkers",1,["actix_settings::settings::num_workers::NumWorkers"]],["impl Sync for Timeout",1,["actix_settings::settings::timeout::Timeout"]],["impl Sync for Tls",1,["actix_settings::settings::tls::Tls"]],["impl Sync for ActixSettings",1,["actix_settings::settings::ActixSettings"]],["impl<A> Sync for BasicSettings<A>where\n A: Sync,",1,["actix_settings::BasicSettings"]],["impl Sync for NoSettings",1,["actix_settings::NoSettings"]]], -"actix_web_httpauth":[["impl Sync for Config",1,["actix_web_httpauth::extractors::basic::Config"]],["impl Sync for BasicAuth",1,["actix_web_httpauth::extractors::basic::BasicAuth"]],["impl Sync for Error",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors::Error"]],["impl Sync for Config",1,["actix_web_httpauth::extractors::bearer::Config"]],["impl Sync for BearerAuth",1,["actix_web_httpauth::extractors::bearer::BearerAuth"]],["impl<C> Sync for AuthenticationError<C>",1,["actix_web_httpauth::extractors::errors::AuthenticationError"]],["impl Sync for ParseError",1,["actix_web_httpauth::headers::authorization::errors::ParseError"]],["impl<S> Sync for Authorization<S>",1,["actix_web_httpauth::headers::authorization::header::Authorization"]],["impl Sync for Basic",1,["actix_web_httpauth::headers::authorization::scheme::basic::Basic"]],["impl Sync for Bearer",1,["actix_web_httpauth::headers::authorization::scheme::bearer::Bearer"]],["impl Sync for Basic",1,["actix_web_httpauth::headers::www_authenticate::challenge::basic::Basic"]],["impl Sync for BearerBuilder",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder::BearerBuilder"]],["impl Sync for Bearer",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge::Bearer"]],["impl<C> Sync for WwwAuthenticate<C>",1,["actix_web_httpauth::headers::www_authenticate::header::WwwAuthenticate"]],["impl<T, F> Sync for HttpAuthentication<T, F>where\n F: Send + Sync,\n T: Sync,",1,["actix_web_httpauth::middleware::HttpAuthentication"]]] +"actix_web_httpauth":[["impl Sync for Config",1,["actix_web_httpauth::extractors::basic::Config"]],["impl Sync for BasicAuth",1,["actix_web_httpauth::extractors::basic::BasicAuth"]],["impl Sync for Error",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors::Error"]],["impl Sync for Config",1,["actix_web_httpauth::extractors::bearer::Config"]],["impl Sync for BearerAuth",1,["actix_web_httpauth::extractors::bearer::BearerAuth"]],["impl<C> Sync for AuthenticationError<C>",1,["actix_web_httpauth::extractors::errors::AuthenticationError"]],["impl Sync for ParseError",1,["actix_web_httpauth::headers::authorization::errors::ParseError"]],["impl<S> Sync for Authorization<S>",1,["actix_web_httpauth::headers::authorization::header::Authorization"]],["impl Sync for Basic",1,["actix_web_httpauth::headers::authorization::scheme::basic::Basic"]],["impl Sync for Bearer",1,["actix_web_httpauth::headers::authorization::scheme::bearer::Bearer"]],["impl Sync for Basic",1,["actix_web_httpauth::headers::www_authenticate::challenge::basic::Basic"]],["impl Sync for BearerBuilder",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder::BearerBuilder"]],["impl Sync for Bearer",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge::Bearer"]],["impl<C> Sync for WwwAuthenticate<C>",1,["actix_web_httpauth::headers::www_authenticate::header::WwwAuthenticate"]],["impl<T, F> Sync for HttpAuthentication<T, F>where\n F: Send + Sync,\n T: Sync,",1,["actix_web_httpauth::middleware::HttpAuthentication"]]], +"actix_ws":[["impl Sync for StreamingBody",1,["actix_ws::fut::StreamingBody"]],["impl !Sync for MessageStream",1,["actix_ws::fut::MessageStream"]],["impl Sync for Session",1,["actix_ws::session::Session"]],["impl Sync for Closed",1,["actix_ws::session::Closed"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/marker/trait.Unpin.js b/trait.impl/core/marker/trait.Unpin.js index e05b4a3dc..d5a2adb0f 100644 --- a/trait.impl/core/marker/trait.Unpin.js +++ b/trait.impl/core/marker/trait.Unpin.js @@ -6,5 +6,6 @@ "actix_redis":[["impl Unpin for Command",1,["actix_redis::redis::Command"]],["impl Unpin for RedisActor",1,["actix_redis::redis::RedisActor"]],["impl Unpin for Error",1,["actix_redis::Error"]]], "actix_session":[["impl Unpin for SessionLifecycle",1,["actix_session::config::SessionLifecycle"]],["impl Unpin for BrowserSession",1,["actix_session::config::BrowserSession"]],["impl Unpin for PersistentSession",1,["actix_session::config::PersistentSession"]],["impl Unpin for TtlExtensionPolicy",1,["actix_session::config::TtlExtensionPolicy"]],["impl Unpin for CookieContentSecurity",1,["actix_session::config::CookieContentSecurity"]],["impl<Store> Unpin for SessionMiddlewareBuilder<Store>where\n Store: Unpin,",1,["actix_session::config::SessionMiddlewareBuilder"]],["impl<Store> Unpin for SessionMiddleware<Store>",1,["actix_session::middleware::SessionMiddleware"]],["impl Unpin for Session",1,["actix_session::session::Session"]],["impl Unpin for SessionStatus",1,["actix_session::session::SessionStatus"]],["impl Unpin for SessionGetError",1,["actix_session::session::SessionGetError"]],["impl Unpin for SessionInsertError",1,["actix_session::session::SessionInsertError"]],["impl Unpin for LoadError",1,["actix_session::storage::interface::LoadError"]],["impl Unpin for SaveError",1,["actix_session::storage::interface::SaveError"]],["impl Unpin for UpdateError",1,["actix_session::storage::interface::UpdateError"]],["impl Unpin for SessionKey",1,["actix_session::storage::session_key::SessionKey"]],["impl Unpin for CookieSessionStore",1,["actix_session::storage::cookie::CookieSessionStore"]],["impl Unpin for RedisActorSessionStore",1,["actix_session::storage::redis_actor::RedisActorSessionStore"]],["impl Unpin for RedisActorSessionStoreBuilder",1,["actix_session::storage::redis_actor::RedisActorSessionStoreBuilder"]],["impl Unpin for RedisSessionStore",1,["actix_session::storage::redis_rs::RedisSessionStore"]],["impl Unpin for RedisSessionStoreBuilder",1,["actix_session::storage::redis_rs::RedisSessionStoreBuilder"]]], "actix_settings":[["impl Unpin for Error",1,["actix_settings::error::Error"]],["impl Unpin for Address",1,["actix_settings::settings::address::Address"]],["impl Unpin for Backlog",1,["actix_settings::settings::backlog::Backlog"]],["impl Unpin for KeepAlive",1,["actix_settings::settings::keep_alive::KeepAlive"]],["impl Unpin for MaxConnectionRate",1,["actix_settings::settings::max_connection_rate::MaxConnectionRate"]],["impl Unpin for MaxConnections",1,["actix_settings::settings::max_connections::MaxConnections"]],["impl Unpin for Mode",1,["actix_settings::settings::mode::Mode"]],["impl Unpin for NumWorkers",1,["actix_settings::settings::num_workers::NumWorkers"]],["impl Unpin for Timeout",1,["actix_settings::settings::timeout::Timeout"]],["impl Unpin for Tls",1,["actix_settings::settings::tls::Tls"]],["impl Unpin for ActixSettings",1,["actix_settings::settings::ActixSettings"]],["impl<A> Unpin for BasicSettings<A>where\n A: Unpin,",1,["actix_settings::BasicSettings"]],["impl Unpin for NoSettings",1,["actix_settings::NoSettings"]]], -"actix_web_httpauth":[["impl Unpin for Config",1,["actix_web_httpauth::extractors::basic::Config"]],["impl Unpin for BasicAuth",1,["actix_web_httpauth::extractors::basic::BasicAuth"]],["impl Unpin for Error",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors::Error"]],["impl Unpin for Config",1,["actix_web_httpauth::extractors::bearer::Config"]],["impl Unpin for BearerAuth",1,["actix_web_httpauth::extractors::bearer::BearerAuth"]],["impl<C> Unpin for AuthenticationError<C>where\n C: Unpin,",1,["actix_web_httpauth::extractors::errors::AuthenticationError"]],["impl Unpin for ParseError",1,["actix_web_httpauth::headers::authorization::errors::ParseError"]],["impl<S> Unpin for Authorization<S>where\n S: Unpin,",1,["actix_web_httpauth::headers::authorization::header::Authorization"]],["impl Unpin for Basic",1,["actix_web_httpauth::headers::authorization::scheme::basic::Basic"]],["impl Unpin for Bearer",1,["actix_web_httpauth::headers::authorization::scheme::bearer::Bearer"]],["impl Unpin for Basic",1,["actix_web_httpauth::headers::www_authenticate::challenge::basic::Basic"]],["impl Unpin for BearerBuilder",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder::BearerBuilder"]],["impl Unpin for Bearer",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge::Bearer"]],["impl<C> Unpin for WwwAuthenticate<C>where\n C: Unpin,",1,["actix_web_httpauth::headers::www_authenticate::header::WwwAuthenticate"]],["impl<T, F> Unpin for HttpAuthentication<T, F>where\n T: Unpin,",1,["actix_web_httpauth::middleware::HttpAuthentication"]]] +"actix_web_httpauth":[["impl Unpin for Config",1,["actix_web_httpauth::extractors::basic::Config"]],["impl Unpin for BasicAuth",1,["actix_web_httpauth::extractors::basic::BasicAuth"]],["impl Unpin for Error",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors::Error"]],["impl Unpin for Config",1,["actix_web_httpauth::extractors::bearer::Config"]],["impl Unpin for BearerAuth",1,["actix_web_httpauth::extractors::bearer::BearerAuth"]],["impl<C> Unpin for AuthenticationError<C>where\n C: Unpin,",1,["actix_web_httpauth::extractors::errors::AuthenticationError"]],["impl Unpin for ParseError",1,["actix_web_httpauth::headers::authorization::errors::ParseError"]],["impl<S> Unpin for Authorization<S>where\n S: Unpin,",1,["actix_web_httpauth::headers::authorization::header::Authorization"]],["impl Unpin for Basic",1,["actix_web_httpauth::headers::authorization::scheme::basic::Basic"]],["impl Unpin for Bearer",1,["actix_web_httpauth::headers::authorization::scheme::bearer::Bearer"]],["impl Unpin for Basic",1,["actix_web_httpauth::headers::www_authenticate::challenge::basic::Basic"]],["impl Unpin for BearerBuilder",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder::BearerBuilder"]],["impl Unpin for Bearer",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge::Bearer"]],["impl<C> Unpin for WwwAuthenticate<C>where\n C: Unpin,",1,["actix_web_httpauth::headers::www_authenticate::header::WwwAuthenticate"]],["impl<T, F> Unpin for HttpAuthentication<T, F>where\n T: Unpin,",1,["actix_web_httpauth::middleware::HttpAuthentication"]]], +"actix_ws":[["impl Unpin for StreamingBody",1,["actix_ws::fut::StreamingBody"]],["impl Unpin for MessageStream",1,["actix_ws::fut::MessageStream"]],["impl Unpin for Session",1,["actix_ws::session::Session"]],["impl Unpin for Closed",1,["actix_ws::session::Closed"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js index 1b52cce50..c851b2ea4 100644 --- a/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -6,5 +6,6 @@ "actix_redis":[["impl RefUnwindSafe for Command",1,["actix_redis::redis::Command"]],["impl !RefUnwindSafe for RedisActor",1,["actix_redis::redis::RedisActor"]],["impl !RefUnwindSafe for Error",1,["actix_redis::Error"]]], "actix_session":[["impl RefUnwindSafe for SessionLifecycle",1,["actix_session::config::SessionLifecycle"]],["impl RefUnwindSafe for BrowserSession",1,["actix_session::config::BrowserSession"]],["impl RefUnwindSafe for PersistentSession",1,["actix_session::config::PersistentSession"]],["impl RefUnwindSafe for TtlExtensionPolicy",1,["actix_session::config::TtlExtensionPolicy"]],["impl RefUnwindSafe for CookieContentSecurity",1,["actix_session::config::CookieContentSecurity"]],["impl<Store> RefUnwindSafe for SessionMiddlewareBuilder<Store>where\n Store: RefUnwindSafe,",1,["actix_session::config::SessionMiddlewareBuilder"]],["impl<Store> RefUnwindSafe for SessionMiddleware<Store>where\n Store: RefUnwindSafe,",1,["actix_session::middleware::SessionMiddleware"]],["impl !RefUnwindSafe for Session",1,["actix_session::session::Session"]],["impl RefUnwindSafe for SessionStatus",1,["actix_session::session::SessionStatus"]],["impl RefUnwindSafe for SessionGetError",1,["actix_session::session::SessionGetError"]],["impl RefUnwindSafe for SessionInsertError",1,["actix_session::session::SessionInsertError"]],["impl RefUnwindSafe for LoadError",1,["actix_session::storage::interface::LoadError"]],["impl RefUnwindSafe for SaveError",1,["actix_session::storage::interface::SaveError"]],["impl RefUnwindSafe for UpdateError",1,["actix_session::storage::interface::UpdateError"]],["impl RefUnwindSafe for SessionKey",1,["actix_session::storage::session_key::SessionKey"]],["impl RefUnwindSafe for CookieSessionStore",1,["actix_session::storage::cookie::CookieSessionStore"]],["impl !RefUnwindSafe for RedisActorSessionStore",1,["actix_session::storage::redis_actor::RedisActorSessionStore"]],["impl !RefUnwindSafe for RedisActorSessionStoreBuilder",1,["actix_session::storage::redis_actor::RedisActorSessionStoreBuilder"]],["impl !RefUnwindSafe for RedisSessionStore",1,["actix_session::storage::redis_rs::RedisSessionStore"]],["impl !RefUnwindSafe for RedisSessionStoreBuilder",1,["actix_session::storage::redis_rs::RedisSessionStoreBuilder"]]], "actix_settings":[["impl !RefUnwindSafe for Error",1,["actix_settings::error::Error"]],["impl RefUnwindSafe for Address",1,["actix_settings::settings::address::Address"]],["impl RefUnwindSafe for Backlog",1,["actix_settings::settings::backlog::Backlog"]],["impl RefUnwindSafe for KeepAlive",1,["actix_settings::settings::keep_alive::KeepAlive"]],["impl RefUnwindSafe for MaxConnectionRate",1,["actix_settings::settings::max_connection_rate::MaxConnectionRate"]],["impl RefUnwindSafe for MaxConnections",1,["actix_settings::settings::max_connections::MaxConnections"]],["impl RefUnwindSafe for Mode",1,["actix_settings::settings::mode::Mode"]],["impl RefUnwindSafe for NumWorkers",1,["actix_settings::settings::num_workers::NumWorkers"]],["impl RefUnwindSafe for Timeout",1,["actix_settings::settings::timeout::Timeout"]],["impl RefUnwindSafe for Tls",1,["actix_settings::settings::tls::Tls"]],["impl RefUnwindSafe for ActixSettings",1,["actix_settings::settings::ActixSettings"]],["impl<A> RefUnwindSafe for BasicSettings<A>where\n A: RefUnwindSafe,",1,["actix_settings::BasicSettings"]],["impl RefUnwindSafe for NoSettings",1,["actix_settings::NoSettings"]]], -"actix_web_httpauth":[["impl RefUnwindSafe for Config",1,["actix_web_httpauth::extractors::basic::Config"]],["impl RefUnwindSafe for BasicAuth",1,["actix_web_httpauth::extractors::basic::BasicAuth"]],["impl RefUnwindSafe for Error",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors::Error"]],["impl RefUnwindSafe for Config",1,["actix_web_httpauth::extractors::bearer::Config"]],["impl RefUnwindSafe for BearerAuth",1,["actix_web_httpauth::extractors::bearer::BearerAuth"]],["impl<C> RefUnwindSafe for AuthenticationError<C>where\n C: RefUnwindSafe,",1,["actix_web_httpauth::extractors::errors::AuthenticationError"]],["impl RefUnwindSafe for ParseError",1,["actix_web_httpauth::headers::authorization::errors::ParseError"]],["impl<S> RefUnwindSafe for Authorization<S>where\n S: RefUnwindSafe,",1,["actix_web_httpauth::headers::authorization::header::Authorization"]],["impl RefUnwindSafe for Basic",1,["actix_web_httpauth::headers::authorization::scheme::basic::Basic"]],["impl RefUnwindSafe for Bearer",1,["actix_web_httpauth::headers::authorization::scheme::bearer::Bearer"]],["impl RefUnwindSafe for Basic",1,["actix_web_httpauth::headers::www_authenticate::challenge::basic::Basic"]],["impl RefUnwindSafe for BearerBuilder",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder::BearerBuilder"]],["impl RefUnwindSafe for Bearer",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge::Bearer"]],["impl<C> RefUnwindSafe for WwwAuthenticate<C>where\n C: RefUnwindSafe,",1,["actix_web_httpauth::headers::www_authenticate::header::WwwAuthenticate"]],["impl<T, F> RefUnwindSafe for HttpAuthentication<T, F>where\n F: RefUnwindSafe,\n T: RefUnwindSafe,",1,["actix_web_httpauth::middleware::HttpAuthentication"]]] +"actix_web_httpauth":[["impl RefUnwindSafe for Config",1,["actix_web_httpauth::extractors::basic::Config"]],["impl RefUnwindSafe for BasicAuth",1,["actix_web_httpauth::extractors::basic::BasicAuth"]],["impl RefUnwindSafe for Error",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors::Error"]],["impl RefUnwindSafe for Config",1,["actix_web_httpauth::extractors::bearer::Config"]],["impl RefUnwindSafe for BearerAuth",1,["actix_web_httpauth::extractors::bearer::BearerAuth"]],["impl<C> RefUnwindSafe for AuthenticationError<C>where\n C: RefUnwindSafe,",1,["actix_web_httpauth::extractors::errors::AuthenticationError"]],["impl RefUnwindSafe for ParseError",1,["actix_web_httpauth::headers::authorization::errors::ParseError"]],["impl<S> RefUnwindSafe for Authorization<S>where\n S: RefUnwindSafe,",1,["actix_web_httpauth::headers::authorization::header::Authorization"]],["impl RefUnwindSafe for Basic",1,["actix_web_httpauth::headers::authorization::scheme::basic::Basic"]],["impl RefUnwindSafe for Bearer",1,["actix_web_httpauth::headers::authorization::scheme::bearer::Bearer"]],["impl RefUnwindSafe for Basic",1,["actix_web_httpauth::headers::www_authenticate::challenge::basic::Basic"]],["impl RefUnwindSafe for BearerBuilder",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder::BearerBuilder"]],["impl RefUnwindSafe for Bearer",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge::Bearer"]],["impl<C> RefUnwindSafe for WwwAuthenticate<C>where\n C: RefUnwindSafe,",1,["actix_web_httpauth::headers::www_authenticate::header::WwwAuthenticate"]],["impl<T, F> RefUnwindSafe for HttpAuthentication<T, F>where\n F: RefUnwindSafe,\n T: RefUnwindSafe,",1,["actix_web_httpauth::middleware::HttpAuthentication"]]], +"actix_ws":[["impl !RefUnwindSafe for StreamingBody",1,["actix_ws::fut::StreamingBody"]],["impl !RefUnwindSafe for MessageStream",1,["actix_ws::fut::MessageStream"]],["impl !RefUnwindSafe for Session",1,["actix_ws::session::Session"]],["impl RefUnwindSafe for Closed",1,["actix_ws::session::Closed"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js index 5e6d94eac..fd92dc6d9 100644 --- a/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -6,5 +6,6 @@ "actix_redis":[["impl UnwindSafe for Command",1,["actix_redis::redis::Command"]],["impl !UnwindSafe for RedisActor",1,["actix_redis::redis::RedisActor"]],["impl !UnwindSafe for Error",1,["actix_redis::Error"]]], "actix_session":[["impl UnwindSafe for SessionLifecycle",1,["actix_session::config::SessionLifecycle"]],["impl UnwindSafe for BrowserSession",1,["actix_session::config::BrowserSession"]],["impl UnwindSafe for PersistentSession",1,["actix_session::config::PersistentSession"]],["impl UnwindSafe for TtlExtensionPolicy",1,["actix_session::config::TtlExtensionPolicy"]],["impl UnwindSafe for CookieContentSecurity",1,["actix_session::config::CookieContentSecurity"]],["impl<Store> UnwindSafe for SessionMiddlewareBuilder<Store>where\n Store: UnwindSafe,",1,["actix_session::config::SessionMiddlewareBuilder"]],["impl<Store> UnwindSafe for SessionMiddleware<Store>where\n Store: RefUnwindSafe,",1,["actix_session::middleware::SessionMiddleware"]],["impl !UnwindSafe for Session",1,["actix_session::session::Session"]],["impl UnwindSafe for SessionStatus",1,["actix_session::session::SessionStatus"]],["impl UnwindSafe for SessionGetError",1,["actix_session::session::SessionGetError"]],["impl UnwindSafe for SessionInsertError",1,["actix_session::session::SessionInsertError"]],["impl UnwindSafe for LoadError",1,["actix_session::storage::interface::LoadError"]],["impl UnwindSafe for SaveError",1,["actix_session::storage::interface::SaveError"]],["impl UnwindSafe for UpdateError",1,["actix_session::storage::interface::UpdateError"]],["impl UnwindSafe for SessionKey",1,["actix_session::storage::session_key::SessionKey"]],["impl UnwindSafe for CookieSessionStore",1,["actix_session::storage::cookie::CookieSessionStore"]],["impl !UnwindSafe for RedisActorSessionStore",1,["actix_session::storage::redis_actor::RedisActorSessionStore"]],["impl !UnwindSafe for RedisActorSessionStoreBuilder",1,["actix_session::storage::redis_actor::RedisActorSessionStoreBuilder"]],["impl !UnwindSafe for RedisSessionStore",1,["actix_session::storage::redis_rs::RedisSessionStore"]],["impl !UnwindSafe for RedisSessionStoreBuilder",1,["actix_session::storage::redis_rs::RedisSessionStoreBuilder"]]], "actix_settings":[["impl !UnwindSafe for Error",1,["actix_settings::error::Error"]],["impl UnwindSafe for Address",1,["actix_settings::settings::address::Address"]],["impl UnwindSafe for Backlog",1,["actix_settings::settings::backlog::Backlog"]],["impl UnwindSafe for KeepAlive",1,["actix_settings::settings::keep_alive::KeepAlive"]],["impl UnwindSafe for MaxConnectionRate",1,["actix_settings::settings::max_connection_rate::MaxConnectionRate"]],["impl UnwindSafe for MaxConnections",1,["actix_settings::settings::max_connections::MaxConnections"]],["impl UnwindSafe for Mode",1,["actix_settings::settings::mode::Mode"]],["impl UnwindSafe for NumWorkers",1,["actix_settings::settings::num_workers::NumWorkers"]],["impl UnwindSafe for Timeout",1,["actix_settings::settings::timeout::Timeout"]],["impl UnwindSafe for Tls",1,["actix_settings::settings::tls::Tls"]],["impl UnwindSafe for ActixSettings",1,["actix_settings::settings::ActixSettings"]],["impl<A> UnwindSafe for BasicSettings<A>where\n A: UnwindSafe,",1,["actix_settings::BasicSettings"]],["impl UnwindSafe for NoSettings",1,["actix_settings::NoSettings"]]], -"actix_web_httpauth":[["impl UnwindSafe for Config",1,["actix_web_httpauth::extractors::basic::Config"]],["impl UnwindSafe for BasicAuth",1,["actix_web_httpauth::extractors::basic::BasicAuth"]],["impl UnwindSafe for Error",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors::Error"]],["impl UnwindSafe for Config",1,["actix_web_httpauth::extractors::bearer::Config"]],["impl UnwindSafe for BearerAuth",1,["actix_web_httpauth::extractors::bearer::BearerAuth"]],["impl<C> UnwindSafe for AuthenticationError<C>where\n C: UnwindSafe,",1,["actix_web_httpauth::extractors::errors::AuthenticationError"]],["impl UnwindSafe for ParseError",1,["actix_web_httpauth::headers::authorization::errors::ParseError"]],["impl<S> UnwindSafe for Authorization<S>where\n S: UnwindSafe,",1,["actix_web_httpauth::headers::authorization::header::Authorization"]],["impl UnwindSafe for Basic",1,["actix_web_httpauth::headers::authorization::scheme::basic::Basic"]],["impl UnwindSafe for Bearer",1,["actix_web_httpauth::headers::authorization::scheme::bearer::Bearer"]],["impl UnwindSafe for Basic",1,["actix_web_httpauth::headers::www_authenticate::challenge::basic::Basic"]],["impl UnwindSafe for BearerBuilder",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder::BearerBuilder"]],["impl UnwindSafe for Bearer",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge::Bearer"]],["impl<C> UnwindSafe for WwwAuthenticate<C>where\n C: UnwindSafe,",1,["actix_web_httpauth::headers::www_authenticate::header::WwwAuthenticate"]],["impl<T, F> UnwindSafe for HttpAuthentication<T, F>where\n F: RefUnwindSafe,\n T: UnwindSafe,",1,["actix_web_httpauth::middleware::HttpAuthentication"]]] +"actix_web_httpauth":[["impl UnwindSafe for Config",1,["actix_web_httpauth::extractors::basic::Config"]],["impl UnwindSafe for BasicAuth",1,["actix_web_httpauth::extractors::basic::BasicAuth"]],["impl UnwindSafe for Error",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::errors::Error"]],["impl UnwindSafe for Config",1,["actix_web_httpauth::extractors::bearer::Config"]],["impl UnwindSafe for BearerAuth",1,["actix_web_httpauth::extractors::bearer::BearerAuth"]],["impl<C> UnwindSafe for AuthenticationError<C>where\n C: UnwindSafe,",1,["actix_web_httpauth::extractors::errors::AuthenticationError"]],["impl UnwindSafe for ParseError",1,["actix_web_httpauth::headers::authorization::errors::ParseError"]],["impl<S> UnwindSafe for Authorization<S>where\n S: UnwindSafe,",1,["actix_web_httpauth::headers::authorization::header::Authorization"]],["impl UnwindSafe for Basic",1,["actix_web_httpauth::headers::authorization::scheme::basic::Basic"]],["impl UnwindSafe for Bearer",1,["actix_web_httpauth::headers::authorization::scheme::bearer::Bearer"]],["impl UnwindSafe for Basic",1,["actix_web_httpauth::headers::www_authenticate::challenge::basic::Basic"]],["impl UnwindSafe for BearerBuilder",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::builder::BearerBuilder"]],["impl UnwindSafe for Bearer",1,["actix_web_httpauth::headers::www_authenticate::challenge::bearer::challenge::Bearer"]],["impl<C> UnwindSafe for WwwAuthenticate<C>where\n C: UnwindSafe,",1,["actix_web_httpauth::headers::www_authenticate::header::WwwAuthenticate"]],["impl<T, F> UnwindSafe for HttpAuthentication<T, F>where\n F: RefUnwindSafe,\n T: UnwindSafe,",1,["actix_web_httpauth::middleware::HttpAuthentication"]]], +"actix_ws":[["impl !UnwindSafe for StreamingBody",1,["actix_ws::fut::StreamingBody"]],["impl !UnwindSafe for MessageStream",1,["actix_ws::fut::MessageStream"]],["impl !UnwindSafe for Session",1,["actix_ws::session::Session"]],["impl UnwindSafe for Closed",1,["actix_ws::session::Closed"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/futures_core/stream/trait.Stream.js b/trait.impl/futures_core/stream/trait.Stream.js new file mode 100644 index 000000000..7e6d5326d --- /dev/null +++ b/trait.impl/futures_core/stream/trait.Stream.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"actix_ws":[["impl Stream for StreamingBody"],["impl Stream for MessageStream"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/trait.impl/serde/de/trait.Deserialize.js b/trait.impl/serde/de/trait.Deserialize.js index c6a4d300d..59381d7c9 100644 --- a/trait.impl/serde/de/trait.Deserialize.js +++ b/trait.impl/serde/de/trait.Deserialize.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"actix_settings":[["impl<'de> Deserialize<'de> for Address"],["impl<'de> Deserialize<'de> for Backlog"],["impl<'de> Deserialize<'de> for Timeout"],["impl<'de> Deserialize<'de> for NumWorkers"],["impl<'de> Deserialize<'de> for MaxConnectionRate"],["impl<'de> Deserialize<'de> for Tls"],["impl<'de> Deserialize<'de> for KeepAlive"],["impl<'de> Deserialize<'de> for NoSettings"],["impl<'de> Deserialize<'de> for MaxConnections"],["impl<'de> Deserialize<'de> for ActixSettings"],["impl<'de> Deserialize<'de> for Mode"],["impl<'de, A> Deserialize<'de> for BasicSettings<A>where\n A: Deserialize<'de>,"]] +"actix_settings":[["impl<'de> Deserialize<'de> for NumWorkers"],["impl<'de> Deserialize<'de> for Address"],["impl<'de> Deserialize<'de> for Tls"],["impl<'de> Deserialize<'de> for Timeout"],["impl<'de> Deserialize<'de> for Backlog"],["impl<'de, A> Deserialize<'de> for BasicSettings<A>where\n A: Deserialize<'de>,"],["impl<'de> Deserialize<'de> for NoSettings"],["impl<'de> Deserialize<'de> for MaxConnections"],["impl<'de> Deserialize<'de> for ActixSettings"],["impl<'de> Deserialize<'de> for Mode"],["impl<'de> Deserialize<'de> for MaxConnectionRate"],["impl<'de> Deserialize<'de> for KeepAlive"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ 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 ba15273b1..adda258b9 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> StructuralEq for BasicSettings<A>

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

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

","Eq","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: 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<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> StructuralPartialEq for BasicSettings<A>

","StructuralPartialEq","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<'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"]] +"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: Eq> Eq for BasicSettings<A>

","Eq","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<'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> StructuralPartialEq for BasicSettings<A>

","StructuralPartialEq","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> StructuralEq for BasicSettings<A>

","StructuralEq","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<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"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file