modi 0.1.1

An out-of-the-box modular dependency injection web application framework.
Documentation
use std::{ cell::Cell, rc::Rc };
pub use salvo::prelude::*;
use crate::dyn_mod::manifest::Manifest;

pub trait Depends {
    fn depends(&self) -> Vec<Manifest>;
}

#[derive(Clone)]
pub struct DmRouter {
    inner: Rc<Cell<Router>>,
}

impl DmRouter {
    pub fn new() -> Self {
        Self { inner: Rc::new(Cell::new(Router::new())) }
    }
    pub fn push(&self, router_part: Router) -> Self {
        self.inner.set(self.inner.take().push(router_part));
        self.clone()
    }
    pub fn append(&self, routers: &mut Vec<Router>) -> Self {
        self.inner.set(self.inner.take().append(routers));
        self.clone()
    }
    pub fn hoop<H: Handler>(self, hoop: H) -> Self {
        self.inner.set(self.inner.take().hoop(hoop));
        self
    }
    pub fn router(self) -> Router {
        self.inner.take()
    }
}