[][src]Struct gotham::state::State

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);

Implementations

impl State[src]

pub fn put<T>(&mut self, t: T) where
    T: StateData
[src]

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]

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]

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]

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]

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]

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]

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]

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]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

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