Struct socketioxide::extract::State

source ·
pub struct State<T>(pub T);
Available on crate feature state only.
Expand description

An Extractor that contains a Clone of a state previously set with SocketIoBuilder::with_state. It implements std::ops::Deref to access the inner type so you can use it as a normal reference.

The specified state type must be the same as the one set with SocketIoBuilder::with_state. If it is not the case, the handler won’t be called and an error log will be print if the tracing feature is enabled.

The state is shared between the entire socket.io app context.

§Example

#[derive(Default, Clone)]
struct MyAppData {
    user_cnt: Arc<AtomicUsize>,
}
impl MyAppData {
    fn add_user(&self) {
        self.user_cnt.fetch_add(1, Ordering::SeqCst);
    }
    fn rm_user(&self) {
        self.user_cnt.fetch_sub(1, Ordering::SeqCst);
    }
}
let (_, io) = SocketIo::builder().with_state(MyAppData::default()).build_svc();
io.ns("/", |socket: SocketRef, state: State<MyAppData>| {
    state.add_user();
    println!("User count: {}", state.user_cnt.load(Ordering::SeqCst));
});

Tuple Fields§

§0: T

Trait Implementations§

source§

impl<T> Deref for State<T>

§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<T> DerefMut for State<T>

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl<A: Adapter, T: Clone + Send + Sync + 'static> FromConnectParts<A> for State<T>

§

type Error = StateNotFound<T>

The error type returned by the extractor
source§

fn from_connect_parts( s: &Arc<Socket<A>>, _: &Option<String>, ) -> Result<Self, StateNotFound<T>>

Extract the arguments from the connect event. If it fails, the handler is not called
source§

impl<A: Adapter, T: Clone + Send + Sync + 'static> FromDisconnectParts<A> for State<T>

§

type Error = StateNotFound<T>

The error type returned by the extractor
source§

fn from_disconnect_parts( s: &Arc<Socket<A>>, _: DisconnectReason, ) -> Result<Self, StateNotFound<T>>

Extract the arguments from the disconnect event. If it fails, the handler is not called
source§

impl<A: Adapter, T: Clone + Send + Sync + 'static> FromMessageParts<A> for State<T>

§

type Error = StateNotFound<T>

The error type returned by the extractor
source§

fn from_message_parts( s: &Arc<Socket<A>>, _: &mut Value, _: &mut Vec<Bytes>, _: &Option<i64>, ) -> Result<Self, StateNotFound<T>>

Extract the arguments from the message event. If it fails, the handler is not called.

Auto Trait Implementations§

§

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

§

impl<T> RefUnwindSafe for State<T>
where T: RefUnwindSafe,

§

impl<T> Send for State<T>
where T: Send,

§

impl<T> Sync for State<T>
where T: Sync,

§

impl<T> Unpin for State<T>
where T: Unpin,

§

impl<T> UnwindSafe for State<T>
where T: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

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

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

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 T
where 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 T
where 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 T
where 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.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

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
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more