peace_rt_model_core/
items_state_stored_stale.rs1use std::ops::{Deref, DerefMut};
2
3use indexmap::IndexMap;
4use peace_item_model::ItemId;
5
6use crate::StateStoredAndDiscovered;
7
8#[derive(Clone, Debug, Default)]
14pub struct ItemsStateStoredStale(IndexMap<ItemId, StateStoredAndDiscovered>);
15
16impl ItemsStateStoredStale {
17 pub fn new() -> Self {
19 Self(IndexMap::new())
20 }
21
22 pub fn with_capacity(capacity: usize) -> Self {
25 Self(IndexMap::with_capacity(capacity))
26 }
27
28 pub fn into_inner(self) -> IndexMap<ItemId, StateStoredAndDiscovered> {
30 self.0
31 }
32
33 pub fn stale(&self) -> bool {
35 !self.0.is_empty()
36 }
37}
38
39impl Deref for ItemsStateStoredStale {
40 type Target = IndexMap<ItemId, StateStoredAndDiscovered>;
41
42 fn deref(&self) -> &Self::Target {
43 &self.0
44 }
45}
46
47impl DerefMut for ItemsStateStoredStale {
48 fn deref_mut(&mut self) -> &mut Self::Target {
49 &mut self.0
50 }
51}
52
53impl FromIterator<(ItemId, StateStoredAndDiscovered)> for ItemsStateStoredStale {
54 fn from_iter<I: IntoIterator<Item = (ItemId, StateStoredAndDiscovered)>>(iter: I) -> Self {
55 Self(IndexMap::from_iter(iter))
56 }
57}