blanket_rs/resource/
root.rs

1use crate::builder::{Build, Builder, Dependency};
2use std::cell::RefCell;
3use std::path::PathBuf;
4use std::rc::Rc;
5
6pub struct Root {}
7
8impl std::fmt::Debug for Root {
9    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
10        write!(f, "--root--")
11    }
12}
13
14impl Build for Root {
15    fn as_any(&self) -> &dyn std::any::Any {
16        self
17    }
18    fn equals(&self, other: Rc<RefCell<dyn Build>>) -> bool {
19        let other = other.borrow();
20        let any = other.as_any();
21        match any.downcast_ref::<Self>() {
22            Some(_) => true,
23            None => false,
24        }
25    }
26    fn register(
27        self,
28        builder: &mut Builder,
29    ) -> Result<(Option<PathBuf>, Dependency, Vec<Dependency>), Box<dyn std::error::Error>> {
30        let dependency = builder.make_dependency(self)?;
31        Ok((Some(PathBuf::from("/")), dependency, vec![]))
32    }
33    fn generate(&mut self) -> Result<(), Box<dyn std::error::Error>> {
34        println!("Root::generate");
35        Ok(())
36    }
37}