codama_koroks/
root_korok.rs

1use crate::{CrateKorok, KorokTrait};
2use codama_errors::{CodamaResult, IteratorCombineErrors};
3use codama_nodes::Node;
4use codama_stores::RootStore;
5
6#[derive(Debug, PartialEq)]
7pub struct RootKorok<'a> {
8    pub crates: Vec<CrateKorok<'a>>,
9    pub node: Option<Node>,
10    pub store: &'a RootStore,
11}
12
13impl<'a> RootKorok<'a> {
14    pub fn parse(root_store: &'a RootStore) -> CodamaResult<Self> {
15        Ok(Self {
16            crates: root_store
17                .crates
18                .iter()
19                .map(CrateKorok::parse)
20                .collect_and_combine_errors()?,
21            node: None,
22            store: root_store,
23        })
24    }
25}
26
27impl KorokTrait for RootKorok<'_> {
28    fn node(&self) -> &Option<Node> {
29        &self.node
30    }
31
32    fn set_node(&mut self, node: Option<Node>) {
33        self.node = node;
34    }
35}