scsys_core/state/
interface.rs1use core::marker::PhantomData;
6
7#[derive(Clone, Copy, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
10#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
11pub struct State<K, V> {
12 pub(crate) data: V,
13 pub(crate) _state: PhantomData<K>,
14}
15
16impl<K, V> State<K, V> {
17 pub fn new(data: V) -> Self {
18 Self {
19 data,
20 _state: PhantomData::<K>,
21 }
22 }
23
24 pub fn data(&self) -> &V {
25 &self.data
26 }
27
28 pub fn is_state<R: 'static>(&self) -> bool
29 where
30 K: 'static,
31 {
32 use core::any::TypeId;
33 TypeId::of::<PhantomData<K>>() == TypeId::of::<PhantomData<R>>()
34 }
35}