4 个版本

0.1.2 2023年7月29日
0.1.1 2023年5月10日
0.1.0 2023年5月9日
0.0.0 2023年5月9日

#4#dedicated

每月 33 次下载

MIT/Apache

14KB
223 代码行

Affair

Affair 是一个简单的基于 Tokio 的库,用于启动一个工人并与它通信,工人可以启动在专用线程或作为 Tokio 任务。

示例

use affair::*;

#[derive(Default)]
struct CounterWorker {
    current: u64,
}

impl Worker for CounterWorker {
    type Request = u64;
    type Response = u64;

    fn handle(&mut self, req: Self::Request) -> Self::Response {
        self.current += req;
        self.current
    }
}

#[tokio::main(flavor = "current_thread")]
async fn main() {
    let port = DedicatedThread::spawn(CounterWorker::default());
    assert_eq!(port.run(10).await.unwrap(), 10);
    assert_eq!(port.run(3).await.unwrap(), 13);
}

lib.rs:

Affair 是一个简单的基于 Tokio 的库,用于启动一个工人并与它通信,工人可以启动在专用线程或作为 Tokio 任务。

use affair::*;

#[derive(Default)]
struct CounterWorker {
    current: u64,
}

impl Worker for CounterWorker {
    type Request = u64;
    type Response = u64;

    fn handle(&mut self, req: Self::Request) -> Self::Response {
        self.current += req;
        self.current
    }
}

#[tokio::main(flavor = "current_thread")]
async fn main() {
    let socket = DedicatedThread::spawn(CounterWorker::default());
    assert_eq!(socket.run(10).await.unwrap(), 10);
    assert_eq!(socket.run(3).await.unwrap(), 13);
}

依赖项

~3–4.5MB
~79K SLoC