Crate lowbulls

Crate lowbulls 

Source
Expand description

lowbull is a Rust crate providing a framework for message handling and event monitoring.

This crate defines two main modules: core and watch. The core module contains the foundational traits and types for message handling, while the watch module provides utilities for monitoring events.

§Usage

To use lowbull, add it as a dependency in your Cargo.toml:

[dependencies]
lowbull = "0.1.0"

Then, you can use the crate in your Rust code by importing the necessary modules:

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

// Your code here...

§Examples

Here’s a simple example demonstrating the usage of lowbull:

use lowbulls::core::LowBullMaster;
use lowbulls::watch::LowBullWatcher;
use 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)]
enum ResourceKey {
    GetTest,
    GetRender,
}

#[derive(Debug, Hash, PartialEq, Eq)]
enum Resource {
    Test(bool),
   Render(bool),
}

// Implement a message handler
struct Master {
    render: bool,
    #[cfg(debug_assertions)]
    watcher: LowBullWatcher<Message>,
}

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

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

    fn get_resource(&self, key: ResourceKey) -> Result<Resource> {
        match key {
           ResourceKey::GetTest => Ok(Resource::Test(true)),
           ResourceKey::GetRender => Ok(Resource::Render(self.render)),
        }
    }
}

// Your code here...

For more examples and detailed usage, please refer to the documentation.

Re-exports§

pub use anyhow;

Modules§

core
LowBullMaster
watch
This module provides a LowBullWatcher structure for tracking history of watched entries.