swamp_system_state/
lib.rs1use swamp_message::{Message, MessageStorage, Messages};
6use swamp_resource::{Resource, ResourceStorage};
7
8#[derive(Debug, Default)]
9pub struct State {
10 resources: ResourceStorage,
11 messages: MessageStorage,
12}
13
14impl State {
15 #[must_use]
16 pub fn new() -> Self {
17 Self {
18 resources: ResourceStorage::new(),
19 messages: MessageStorage::new(),
20 }
21 }
22
23 #[must_use]
24 pub const fn messages(&self) -> &MessageStorage {
25 &self.messages
26 }
27
28 pub fn messages_mut(&mut self) -> &mut MessageStorage {
29 &mut self.messages
30 }
31
32 #[must_use]
33 pub const fn resources(&self) -> &ResourceStorage {
34 &self.resources
35 }
36
37 pub fn resources_mut(&mut self) -> &mut ResourceStorage {
38 &mut self.resources
39 }
40
41 #[inline]
42 #[must_use]
43 pub fn resource<R: Resource>(&self) -> &R {
44 self.resources.fetch::<R>()
45 }
46
47 #[inline]
48 pub fn resource_mut<R: Resource>(&mut self) -> &mut R {
49 self.resources.fetch_mut::<R>()
50 }
51
52 pub fn message_mut<M: Message>(&mut self) -> &mut Messages<M> {
54 self.messages.get_mut::<M>().expect("Failed to get message")
55 }
56
57 pub fn message<M: Message>(&mut self) -> &Messages<M> {
59 self.messages.get::<M>().expect("Failed to get message")
60 }
61}