#message #events #monitoring #watch #module #low #framework

lowbulls

lowbull 是一个促进消息处理和事件监控的 Rust 包

10 个版本

0.1.22 2024 年 5 月 14 日
0.1.21 2024 年 5 月 14 日

#538Rust 模式

Apache-2.0

16KB
170

LowBulls

github Latest Version Documentation License

'低成本业务和 UI 逻辑分离器'

lowbull 是一个提供消息处理和事件监控框架的 Rust 包。

概述

此包定义了两个主要模块:corewatchcore 模块包含消息处理的基础特性和类型,而 watch 模块提供了监控事件的实用工具。

用法

要使用 lowbull,将其添加到您的 Cargo.toml 依赖项中

[dependencies]
lowbull = "0.1.11"

然后,您可以通过导入必要的模块在 Rust 代码中使用该包

use lowbull::core::LowBullMaster;
use lowbull::watch::LowBullWatcher;
use anyhow::Result;

// Your code here...

示例

以下是一个演示 lowbull 用法的简单示例

use lowbull::core::LowBullMaster;
use lowbull::watch::LowBullWatcher;
use lowbull::anyhow::Result;

// Define message types
#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)]
enum Message {
    StartRender,
    StopRender,
}

// Define response types
#[derive(Debug, Hash, PartialEq, Eq)]
enum Response {
    None,
}

#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)]
enum ResourceKey {
    GetTest,
    GetRender,
}
    
#[derive(Debug, Hash, PartialEq, Eq)]
enum Resource {
    Render(bool),
    Test(bool),
}

// Implement a message handler
struct Master {
    render: bool,
    #[cfg(debug_assertions)]
    handle_watcher: watch::LowBullWatcher<HandleKey>,
    #[cfg(debug_assertions)]
    resource_watcher: RefCell<watch::LowBullWatcher<ResourceKey>>,
}

impl LowBullMaster<HandleKey, Response, ResourceKey, Resource> for Master {
    fn handle(&mut self, key: HandleKey) -> Result<Response> {
        if cfg!(debug_assertions) {
            self.handle_watcher.watch(key);
        }

        match key {
            HandleKey::StartRender => {
                self.render = true;
                Ok(Response::None)
            }
            HandleKey::StopRender => {
                self.render = false;
                Ok(Response::None)
            }
            HandleKey::Empty => Ok(Response::None),
        }
    }

    fn get_resource(&self, key: ResourceKey) -> Result<Resource> {
        if cfg!(debug_assertions) {
            self.resource_watcher.borrow_mut().watch(key);
        }

        match key {
            ResourceKey::GetTest => Ok(Resource::Test(true)),
            ResourceKey::GetRender => Ok(Resource::Render(self.render)),
        }
    }
}

// Your code here...

有关更多示例和详细用法,请参阅文档。

许可证

'lowbull' 采用 Apache 2.0 许可证。有关详细信息,请参阅 LICENSE。

依赖项

~130KB