pub struct State { /* private fields */ }
Expand description
Provides storage for request state, and stores one item of each type. The types used for
storage must implement the gotham::state::StateData
trait to allow its storage. The
gotham_derive
crate provides a custom derive for StateData
to make this more convenient.
Examples
extern crate gotham;
#[macro_use]
extern crate gotham_derive;
use gotham::state::State;
#[derive(StateData)]
struct MyStruct {
value: i32
}
state.put(MyStruct { value: 1 });
assert_eq!(state.borrow::<MyStruct>().value, 1);
Implementations
sourceimpl State
impl State
sourcepub fn put<T>(&mut self, t: T) where
T: StateData,
pub fn put<T>(&mut self, t: T) where
T: StateData,
Puts a value into the State
storage. One value of each type is retained. Successive calls
to put
will overwrite the existing value of the same type.
Examples
state.put(MyStruct { value: 1 });
assert_eq!(state.borrow::<MyStruct>().value, 1);
state.put(AnotherStruct { value: "a string" });
state.put(MyStruct { value: 100 });
assert_eq!(state.borrow::<AnotherStruct>().value, "a string");
assert_eq!(state.borrow::<MyStruct>().value, 100);
sourcepub fn has<T>(&self) -> bool where
T: StateData,
pub fn has<T>(&self) -> bool where
T: StateData,
Determines if the current value exists in State
storage.
Examples
state.put(MyStruct { value: 1 });
assert!(state.has::<MyStruct>());
assert_eq!(state.borrow::<MyStruct>().value, 1);
assert!(!state.has::<AnotherStruct>());
sourcepub fn try_borrow<T>(&self) -> Option<&T> where
T: StateData,
pub fn try_borrow<T>(&self) -> Option<&T> where
T: StateData,
Tries to borrow a value from the State
storage.
Examples
state.put(MyStruct { value: 1 });
assert!(state.try_borrow::<MyStruct>().is_some());
assert_eq!(state.try_borrow::<MyStruct>().unwrap().value, 1);
assert!(state.try_borrow::<AnotherStruct>().is_none());
sourcepub fn try_borrow_mut<T>(&mut self) -> Option<&mut T> where
T: StateData,
pub fn try_borrow_mut<T>(&mut self) -> Option<&mut T> where
T: StateData,
Tries to mutably borrow a value from the State
storage.
Examples
state.put(MyStruct { value: 100 });
if let Some(a) = state.try_borrow_mut::<MyStruct>() {
a.value += 10;
}
assert_eq!(state.borrow::<MyStruct>().value, 110);
assert!(state.try_borrow_mut::<AnotherStruct>().is_none());
sourcepub fn borrow_mut<T>(&mut self) -> &mut T where
T: StateData,
pub fn borrow_mut<T>(&mut self) -> &mut T where
T: StateData,
Mutably borrows a value from the State
storage.
Panics
If a value of type T
is not present in State
.
Examples
state.put(MyStruct { value: 100 });
{
let a = state.borrow_mut::<MyStruct>();
a.value += 10;
}
assert_eq!(state.borrow::<MyStruct>().value, 110);
assert!(state.try_borrow_mut::<AnotherStruct>().is_none());
sourcepub fn try_take<T>(&mut self) -> Option<T> where
T: StateData,
pub fn try_take<T>(&mut self) -> Option<T> where
T: StateData,
Tries to move a value out of the State
storage and return ownership.
Examples
state.put(MyStruct { value: 110 });
assert_eq!(state.try_take::<MyStruct>().unwrap().value, 110);
assert!(state.try_take::<MyStruct>().is_none());
assert!(state.try_borrow_mut::<MyStruct>().is_none());
assert!(state.try_borrow::<MyStruct>().is_none());
assert!(state.try_take::<AnotherStruct>().is_none());
sourcepub fn take<T>(&mut self) -> T where
T: StateData,
pub fn take<T>(&mut self) -> T where
T: StateData,
Moves a value out of the State
storage and returns ownership.
Panics
If a value of type T
is not present in State
.
Examples
state.put(MyStruct { value: 110 });
assert_eq!(state.take::<MyStruct>().value, 110);
assert!(state.try_take::<MyStruct>().is_none());
assert!(state.try_borrow_mut::<MyStruct>().is_none());
assert!(state.try_borrow::<MyStruct>().is_none());
Auto Trait Implementations
impl !RefUnwindSafe for State
impl Send for State
impl !Sync for State
impl Unpin for State
impl !UnwindSafe for State
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more