codama_koroks/
root_korok.rs1use 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}