#thread #spawn #plugin #decorator

nightly threadspawn

用于编写启动线程的函数的插件

4 个版本 (重大更改)

使用旧的 Rust 2015

0.4.0 2018 年 6 月 13 日
0.3.0 2018 年 5 月 16 日
0.2.0 2018 年 5 月 16 日
0.1.0 2018 年 5 月 15 日

#threads 中排名 12

MIT/Apache

5KB
61 代码行

thread_spawn

编写启动线程并隐式返回 JoinHandles 的 Rust 函数

#![feature(plugin, proc_macro)]

extern crate thread_spawn;

use thread_spawn::thread_spawn;

#[thread_spawn]
fn foo(a: u8, b: u8, (c, _): (u8, u8)) -> bool {
    assert!(a + b + c == 5);
    5 - c == b
}

fn main() {
    let mut x = 0;
    let mut y = 1;
    let res = foo(x, y, (4, 0)).join(); // explicit join call

    match res {
        Ok(res) => println!("result: {:?}", res),
        Err(err) => panic!("Thread panicked: {:?}", err),
    }
}

优点

  • 自动为启动函数命名线程,以便您有更好的错误信息。
    • 需要帮助: 使语法 `#[thread_spawn(name("thread {}", arg_or_expression)] 正常工作
  • 在概念上反映了 async 关键字。
  • 更少的关键字!

许可证

MIT 或 Apache-2.0,任选其一。

依赖关系

~2MB
~47K SLoC