Struct gotham::state::State
[−]
[src]
pub struct State { /* fields omitted */ }
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);
Methods
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());
ⓘImportant traits for &'a mut Wpub 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());
ⓘImportant traits for &'a mut Wpub 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());