[−][src]Struct gotham::state::State
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
impl State
[src]
pub fn put<T>(&mut self, t: T) where
T: StateData,
[src]
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);
pub fn has<T>(&self) -> bool where
T: StateData,
[src]
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>());
pub fn try_borrow<T>(&self) -> Option<&T> where
T: StateData,
[src]
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());
pub fn borrow<T>(&self) -> &T where
T: StateData,
[src]
T: StateData,
Borrows a value from the State
storage.
Panics
If a value of type T
is not present in State
.
Examples
state.put(MyStruct { value: 1 }); assert_eq!(state.borrow::<MyStruct>().value, 1);
pub fn try_borrow_mut<T>(&mut self) -> Option<&mut T> where
T: StateData,
[src]
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());
pub fn borrow_mut<T>(&mut self) -> &mut T where
T: StateData,
[src]
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());
pub fn try_take<T>(&mut self) -> Option<T> where
T: StateData,
[src]
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());
pub fn take<T>(&mut self) -> T where
T: StateData,
[src]
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
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,