[](https://crates.io/crates/threadbeam)
[](https://docs.rs/threadbeam/)
[](https://github.com/WilliamVenner/threadbeam/blob/master/LICENSE)
# threadbeam
A simple, specialized channel type for beaming data out of a newly spawned thread.
# Usage
First, add `threadbeam` to your crate's dependencies in Cargo.toml:
```toml
[dependencies]
threadbeam = "0"
```
## Examples
```rust
let (tx, rx) = threadbeam::channel();
});
let hello = rx.recv();
assert_eq!(hello.as_deref(), Some("Hello, world!"));
```
```rust
// your code...
String::from("Thread completed!")
});
assert_eq!(hello.as_deref(), Some("Hello, world!"));
assert_eq!(thread.join().ok().as_deref(), Some("Thread completed!"));
```
## [`parking_lot`](https://docs.rs/parking_lot/latest)
To use [`parking_lot`](https://docs.rs/parking_lot/latest) instead of the standard library's implementations of `Condvar` and `Mutex`, enable the `parking_lot` feature in your Cargo.toml:
```toml
[dependencies]
threadbeam = { version = "0", features = ["parking_lot"] }
```
## `no_std` via [`spin`](https://docs.rs/spin/latest)
For `no_std` environments, enable the `no_std` feature in your Cargo.toml:
This will use [`spin`](https://docs.rs/spin/latest) as the provider of the `Mutex` implementation.
```toml
[dependencies]
threadbeam = { version = "0", features = ["no_std"] }
```