Trait gotham::state::FromState

source ·
pub trait FromState: StateData + Sized {
    // Required methods
    fn try_borrow_from(state: &State) -> Option<&Self>;
    fn borrow_from(state: &State) -> &Self;
    fn try_borrow_mut_from(state: &mut State) -> Option<&mut Self>;
    fn borrow_mut_from(state: &mut State) -> &mut Self;
    fn try_take_from(state: &mut State) -> Option<Self>;
    fn take_from(state: &mut State) -> Self;
}
Expand description

A trait for accessing data that is stored in State.

This provides the easier T::try_borrow_from(&state) API (for example), as an alternative to state.try_borrow::<T>().

Required Methods§

source

fn try_borrow_from(state: &State) -> Option<&Self>

Tries to borrow a value from the State storage.

§Examples
#[derive(StateData, Eq, PartialEq, Debug)]
struct MyStruct {
    val: &'static str,
}

state.put(MyStruct {
    val: "This is the value!",
});

match MyStruct::try_borrow_from(&state) {
    Some(&MyStruct { val }) => assert_eq!(val, "This is the value!"),
    _ => panic!("expected `MyStruct` to be present"),
}
source

fn borrow_from(state: &State) -> &Self

Borrows a value from the State storage.

§Panics

If Self is not present in State.

§Examples
#[derive(StateData, Eq, PartialEq, Debug)]
struct MyStruct {
    val: &'static str,
}

state.put(MyStruct {
    val: "This is the value!",
});

let my_struct = MyStruct::borrow_from(&state);
assert_eq!(my_struct.val, "This is the value!");
source

fn try_borrow_mut_from(state: &mut State) -> Option<&mut Self>

Tries to mutably borrow a value from the State storage.

§Examples
#[derive(StateData, Eq, PartialEq, Debug)]
struct MyStruct {
    val: &'static str,
}

state.put(MyStruct {
    val: "This is the value!",
});

match MyStruct::try_borrow_mut_from(&mut state) {
    Some(&mut MyStruct { ref mut val }) => *val = "This is the new value!",
    _ => panic!("expected `MyStruct` to be present"),
}
source

fn borrow_mut_from(state: &mut State) -> &mut Self

Mutably borrows a value from the State storage.

§Panics

If Self is not present in State.

§Examples
#[derive(StateData, Eq, PartialEq, Debug)]
struct MyStruct {
    val: &'static str,
}

state.put(MyStruct {
    val: "This is the value!",
});

let my_struct = MyStruct::borrow_mut_from(&mut state);
my_struct.val = "This is the new value!";
source

fn try_take_from(state: &mut State) -> Option<Self>

Tries to move a value out of the State storage and return ownership.

§Examples
#[derive(StateData, Eq, PartialEq, Debug)]
struct MyStruct {
    val: &'static str,
}

state.put(MyStruct {
    val: "This is the value!",
});

match MyStruct::try_take_from(&mut state) {
    Some(MyStruct { val }) => assert_eq!(val, "This is the value!"),
    _ => panic!("expected `MyStruct` to be present"),
}
source

fn take_from(state: &mut State) -> Self

Moves a value out of the State storage and returns ownership.

§Panics

If Self is not present in State.

§Examples
#[derive(StateData, Eq, PartialEq, Debug)]
struct MyStruct {
    val: &'static str,
}

state.put(MyStruct {
    val: "This is the value!",
});

let my_struct = MyStruct::take_from(&mut state);
assert_eq!(my_struct.val, "This is the value!");

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<T> FromState for T
where T: StateData,