ruwebframe 0.1.8

a simple webframe for rust actix-web, based on rudi and rbatis.
Documentation
use crate::rudi::dicontainer::direg;
use crate::rulog;
use std::sync::{Arc, Mutex};

// 单例 Bean 的统一 trait
pub trait BeanSingleton: Sized + Send + Sync + 'static {
    /// 全局唯一标识
    //const BEAN_NAME: &'static str;
    fn bean_name() -> &'static str {
        std::any::type_name::<Self>() // "rudi::di_example::DiExample" — 天然唯一!
    }
    /// 工厂方法
    fn new_bean() -> Self;

    /// 查找(统一返回 Arc<Mutex<Self>>)
    fn find_bean() -> Option<Arc<Mutex<Self>>> {
        rulog::info2("find_bean bean =》", Self::bean_name());
        direg::get_bean::<Mutex<Self>>(Self::bean_name())
        // direg::get_bean::<Mutex<Self>>(Self::BEAN_NAME)
    }

    /// 注册
    fn register_bean() {
        rulog::info2("register  bean =》", Self::bean_name());
        direg::register (Self::bean_name(), || Mutex::new(Self::new_bean()));
        // direg::register_singleton(Self::BEAN_NAME, || Mutex::new(Self::new_bean()));
    }
    fn register_bean_singleton() {
        rulog::info2("register_singleton bean =》", Self::bean_name());
        direg::register_singleton(Self::bean_name(), || Mutex::new(Self::new_bean()));
        // direg::register_singleton(Self::BEAN_NAME, || Mutex::new(Self::new_bean()));
    }
}