ruwebframe 0.1.8

a simple webframe for rust actix-web, based on rudi and rbatis.
Documentation
use std::sync::{Mutex, Once, OnceLock};
use ctor::ctor;
use crate::ruweb::webrouter::RouteContainer;

// ✅ 存储 Mutex
pub static ROUTE_CONTAINER: OnceLock<Mutex<RouteContainer>> = OnceLock::new();
pub static INIT_ONCE: Once = Once::new();

// ✅ 返回 &'static Mutex<RouteConfigContainer>
pub fn init_container() -> &'static Mutex<RouteContainer> {
    INIT_ONCE.call_once(|| {
        let container = RouteContainer::new();
        ROUTE_CONTAINER.set(Mutex::new(container)) ;
        println!("✅ Route Container initialized");
    });
    ROUTE_CONTAINER.get().unwrap()
}

// 使用
pub fn with_container_mut<F, R>(f: F) -> R
where
    F: FnOnce(&mut RouteContainer) -> R,
{
    let mut guard = init_container().lock().unwrap();
    f(&mut guard)
}

pub fn with_container<F, R>(f: F) -> R
where
    F: FnOnce(&RouteContainer) -> R,
{
    let guard = init_container().lock().unwrap();
    f(&guard)
}

// ✅ 容器初始化 ctor(在 container.rs 中)
#[ctor(unsafe)]
fn init_container_ctor() {
    init_container();
}

pub fn list_routes_items() {
      init_container().lock().unwrap() .list_routes_items();
}