#生命周期 #系统 #派生 #clojure #组件

derive-system

Rust版本的https://github.com/stuartsierra/component实现

1个不稳定版本

0.1.0 2021年5月27日

#7 in #生命周期

MIT许可证

14KB
226

derive-system

Rust版本的https://github.com/stuartsierra/component

此库与lifecycle一起使用。

它仍在开发中,许多功能尚未支持(未命名结构体、单元结构体、枚举等)。

用法

[dependencies]
lifecycle = "0.1.0"
system-derive = "0.1.0"

示例

use derive_system::System;
use lifecycle::Lifecycle;

struct App;
impl Lifecycle for App {
    fn start(self) -> Self {
        println!("App::start");
        Self
    }

    fn stop(self) -> Self {
        println!("App::stop");
        Self
    }
}

struct Scheduler;
impl Lifecycle for Scheduler {
    fn start(self) -> Self {
        println!("Scheduler::start");
        Self
    }

    fn stop(self) -> Self {
        println!("Scheduler::stop");
        Self
    }
}

struct Database;
impl Lifecycle for Database {
    fn start(self) -> Self {
        println!("Database::start");
        Self
    }

    fn stop(self) -> Self {
        println!("Database::stop");
        Self
    }
}

#[derive(System)]
pub struct ExampleSystem {
    app: App,
    scheduler: Scheduler,
    database: Database,
}

fn main() {
    let mut system = ExampleSystem {
        app: App,
        scheduler: Scheduler,
        database: Database,
    };

    system = system.start();

    let _ = system.stop();
}

这将输出

App::start
Scheduler::start
Database::start
Database::stop
Scheduler::stop
App::stop

依赖

~1.5MB
~36K SLoC