trait-kit 0.4.2

Module Standard Interface and Capability Management Center — A lightweight Rust library that provides a standard interface for module definition and Kit capability management.
Documentation
// Kit<Ready> cannot call register() — typestate enforces Unbuilt-only.
use std::sync::Arc;
use trait_kit::prelude::*;

struct MyModule;
impl_module_meta!(MyModule, "my-module");
impl AutoBuilder for MyModule {
    type Capability = Arc<u32>;
    type Error = TraitKitError;
    fn build(_kit: &Kit) -> Result<Self::Capability, Self::Error> {
        Ok(Arc::new(1))
    }
}

fn main() {
    let mut kit = Kit::new();
    kit.register::<MyModule>().unwrap();
    let ready = kit.build().unwrap();
    // ERROR: register() is only available on Kit<Unbuilt>
    ready.register::<MyModule>().unwrap();
}