MCPcopy Index your code
hub / github.com/ciphermodelabs/ciphercore / graphs_deep_equal

Function graphs_deep_equal

ciphercore-base/src/graphs.rs:4646–4702  ·  view source on GitHub ↗
(graph1: Graph, graph2: Graph)

Source from the content-addressed store, hash-verified

4644}
4645
4646fn graphs_deep_equal(graph1: Graph, graph2: Graph) -> bool {
4647 let graph1_body = graph1.body.borrow();
4648 let graph2_body = graph2.body.borrow();
4649 if graph1_body.finalized != graph2_body.finalized {
4650 return false;
4651 }
4652 if graph1_body.nodes.len() != graph2_body.nodes.len() {
4653 return false;
4654 }
4655 for j in 0..graph1_body.nodes.len() {
4656 let node1 = graph1_body.nodes[j].clone();
4657 let node2 = graph2_body.nodes[j].clone();
4658 let node1_body = node1.body.borrow();
4659 let node2_body = node2.body.borrow();
4660 if node1_body.operation != node2_body.operation {
4661 return false;
4662 }
4663 let node_dependencies1: Vec<u64> = node1_body
4664 .node_dependencies
4665 .iter()
4666 .map(|n| n.upgrade().get_id())
4667 .collect();
4668 let node_dependencies2: Vec<u64> = node2_body
4669 .node_dependencies
4670 .iter()
4671 .map(|n| n.upgrade().get_id())
4672 .collect();
4673 if node_dependencies1 != node_dependencies2 {
4674 return false;
4675 }
4676 let graph_dependencies1: Vec<u64> = node1_body
4677 .graph_dependencies
4678 .iter()
4679 .map(|g| g.upgrade().get_id())
4680 .collect();
4681 let graph_dependencies2: Vec<u64> = node2_body
4682 .graph_dependencies
4683 .iter()
4684 .map(|g| g.upgrade().get_id())
4685 .collect();
4686 if graph_dependencies1 != graph_dependencies2 {
4687 return false;
4688 }
4689 }
4690 if graph1_body
4691 .output_node
4692 .clone()
4693 .map(|n| n.upgrade().get_id())
4694 != graph2_body
4695 .output_node
4696 .clone()
4697 .map(|n| n.upgrade().get_id())
4698 {
4699 return false;
4700 }
4701 true
4702}
4703

Callers 1

contexts_deep_equalFunction · 0.85

Calls 3

cloneMethod · 0.80
upgradeMethod · 0.80
get_idMethod · 0.45

Tested by

no test coverage detected