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