thread_spawn

Crates.iothread_spawn
lib.rsthread_spawn
version0.4.0
sourcesrc
created_at2018-05-15 19:47:04.524801
updated_at2018-06-13 18:49:59.207581
descriptionA plugin for authoring functions that spawn threads.
homepage
repositoryhttps://github.com/tcr/thread_spawn
max_upload_size
id65594
size4,617
Tim Ryan (tcr)

documentation

README

thread_spawn

Write Rust functions that spawn threads and implicitly return JoinHandles.

#![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),
    }
}

Upsides:

  • Automatically names the thread after the spawning function so you have improved error messages.
    • Help wanted: Make the syntax `#[thread_spawn(name("thread {}", arg_or_expression)] work
  • Mirrors the async keyword, conceptually.
  • Fewer keystrokes!

License

MIT or Apache-2.0, at your option.

Commit count: 2

cargo fmt