thread_spawn 0.3.0

A plugin for authoring functions that spawn threads.
docs.rs failed to build thread_spawn-0.3.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: thread_spawn-0.4.0

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.