#events #looper #loops #thread #single

mrogalski-looper

为单线程事件循环提供干净的抽象。作为std::sync::mpsc包的轻量级包装器构建。

4个稳定版本

使用旧的Rust 2015

1.0.3 2017年7月18日

#884并发

Apache-2.0

8KB
55

looper

为单线程事件循环提供干净的抽象。作为std::sync::mpsc包的轻量级包装器构建。


lib.rs:

为单线程事件循环提供干净的抽象。作为std::sync::mpsc包的轻量级包装器构建。

示例用法

use mrogalski_looper::{Handler, Sender, run};

struct ExampleHandler {
    data: Vec<i32>,
}

impl Handler<i32> for ExampleHandler {

    // Invoked right after the `run` function is called.
    fn start(&mut self, sender: Sender<i32>) {
        for elem in vec![1, 2, 3] {
            sender.send(elem.clone()).unwrap();
        }
    }

    // Called for every `event` sent to the `sender`.
    fn handle(&mut self, i: i32) -> bool {
        self.data.push(i);
        true
    }

    // Called after last event is processed or an error occurs.
    fn end(self) {
        assert_eq!(self.data, vec![1, 2, 3]);
    }
}

// Blocks the current thread until all events are processed.
run(ExampleHandler { data: vec![] });

无运行时依赖