dot_ix_model/common/
images.rs1use std::ops::{Deref, DerefMut};
2
3use indexmap::IndexMap;
4use serde::{Deserialize, Serialize};
5
6use crate::common::{dot_src_and_styles::GraphvizImage, ImageId};
7
8#[derive(Clone, Debug, Default, PartialEq, Eq, Deserialize, Serialize)]
39pub struct Images(IndexMap<ImageId, GraphvizImage>);
40
41impl Images {
42 pub fn new() -> Self {
44 Self::default()
45 }
46
47 pub fn with_capacity(capacity: usize) -> Self {
50 Self(IndexMap::with_capacity(capacity))
51 }
52
53 pub fn into_inner(self) -> IndexMap<ImageId, GraphvizImage> {
55 self.0
56 }
57}
58
59impl Deref for Images {
60 type Target = IndexMap<ImageId, GraphvizImage>;
61
62 fn deref(&self) -> &Self::Target {
63 &self.0
64 }
65}
66
67impl DerefMut for Images {
68 fn deref_mut(&mut self) -> &mut Self::Target {
69 &mut self.0
70 }
71}
72
73impl From<IndexMap<ImageId, GraphvizImage>> for Images {
74 fn from(inner: IndexMap<ImageId, GraphvizImage>) -> Self {
75 Self(inner)
76 }
77}
78
79impl FromIterator<(ImageId, GraphvizImage)> for Images {
80 fn from_iter<I: IntoIterator<Item = (ImageId, GraphvizImage)>>(iter: I) -> Self {
81 Self(IndexMap::from_iter(iter))
82 }
83}