Skip to main content

pretty_graph/node/universal/
link.rs

1use crate::Node;
2
3
4impl Node {
5    /// Get linked nodes
6    ///
7    /// # Example
8    /// ```rust
9    /// use pretty_graph::Node;
10    ///
11    ///let node_3 = Node::new();
12    ///let node_2 = Node::new();
13    ///let node_1 = Node::new();
14    ///
15    ///node_1.link("node_2", node_2);
16    ///node_1.link("node_3", node_3);
17    ///
18    ///for k in node_1.linked_nodes() {
19    ///    // ...
20    ///}
21    /// ```
22    pub fn linked_nodes(&self) -> Vec<Node> {
23        self.body.read().unwrap().linked_nodes()
24    }
25}
26
27
28#[cfg(test)]
29mod tests {
30    use crate::Node;
31
32    #[test]
33    fn test_linked_nodes() {
34        let node_3 = Node::from(Some(vec![
35            ("key", "value")
36        ]), None);
37
38        let node_2 = Node::from(Some(vec![
39            ("key", "value")
40        ]), None);
41
42        let node_1 = Node::new();
43        node_1.link("node_3", node_3);
44        node_1.link("node_2", node_2);
45        
46        for node in node_1.linked_nodes() {
47            let v = node.get("key");
48            assert_eq!(Some("value".to_string()), v);
49        }
50    }
51
52    #[test]
53    fn test_vector_linked_nodes() {
54        let node_2 = Node::new();
55        let node_3 = Node::new();
56
57        let node_1 = Node::vec_from(None, Some(vec![node_2, node_3]));
58        let _ = node_1.linked_nodes();
59    }
60}