dot_ix_model/common/
edge_descs.rs1use std::ops::{Deref, DerefMut};
2
3use indexmap::IndexMap;
4use serde::{Deserialize, Serialize};
5
6use crate::common::EdgeId;
7
8#[derive(Clone, Debug, Default, PartialEq, Eq, Deserialize, Serialize)]
10pub struct EdgeDescs(IndexMap<EdgeId, String>);
11
12impl EdgeDescs {
13 pub fn new() -> Self {
15 Self::default()
16 }
17
18 pub fn with_capacity(capacity: usize) -> Self {
21 Self(IndexMap::with_capacity(capacity))
22 }
23
24 pub fn into_inner(self) -> IndexMap<EdgeId, String> {
26 self.0
27 }
28}
29
30impl Deref for EdgeDescs {
31 type Target = IndexMap<EdgeId, String>;
32
33 fn deref(&self) -> &Self::Target {
34 &self.0
35 }
36}
37
38impl DerefMut for EdgeDescs {
39 fn deref_mut(&mut self) -> &mut Self::Target {
40 &mut self.0
41 }
42}
43
44impl From<IndexMap<EdgeId, String>> for EdgeDescs {
45 fn from(inner: IndexMap<EdgeId, String>) -> Self {
46 Self(inner)
47 }
48}
49
50impl FromIterator<(EdgeId, String)> for EdgeDescs {
51 fn from_iter<I: IntoIterator<Item = (EdgeId, String)>>(iter: I) -> Self {
52 Self(IndexMap::from_iter(iter))
53 }
54}