rsiot/components/cmp_webstorage/
config.rs1use crate::message::*;
2
3pub type FnInput<TMsg> = fn(Message<TMsg>) -> Option<Message<TMsg>>;
4
5pub type FnOutput<TMsg> = fn(Message<TMsg>) -> Option<Message<TMsg>>;
6
7pub struct Config<TMsg>
9where
10 TMsg: MsgDataBound,
11{
12 pub storage_kind: ConfigStorageKind,
14
15 #[doc = include_str!("test/config_fn_input.rs")]
21 pub fn_input: FnInput<TMsg>,
23
24 #[doc = include_str!("test/config_fn_output.rs")]
30 pub fn_output: FnOutput<TMsg>,
32
33 #[doc = include_str!("test/config_default_messages.rs")]
39 pub default_messages: Vec<Message<TMsg>>,
41}
42
43impl<TMsg> Default for Config<TMsg>
44where
45 TMsg: MsgDataBound,
46{
47 fn default() -> Self {
48 Self {
49 storage_kind: ConfigStorageKind::LocalStorage,
50 fn_input: |_| None,
51 fn_output: |_| None,
52 default_messages: vec![],
53 }
54 }
55}
56
57#[derive(Clone, Copy, Debug)]
59pub enum ConfigStorageKind {
60 LocalStorage,
62 SessionStorage,
64}