2022-12-21 16:36:30 +01:00
|
|
|
# Channels
|
|
|
|
|
|
|
|
Rust channels have two parts: a `Sender<T>` and a `Receiver<T>`. The two parts
|
|
|
|
are connected via the channel, but you only see the end-points.
|
|
|
|
|
|
|
|
```rust,editable
|
|
|
|
use std::sync::mpsc;
|
|
|
|
use std::thread;
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let (tx, rx) = mpsc::channel();
|
|
|
|
|
|
|
|
tx.send(10).unwrap();
|
|
|
|
tx.send(20).unwrap();
|
|
|
|
|
|
|
|
println!("Received: {:?}", rx.recv());
|
|
|
|
println!("Received: {:?}", rx.recv());
|
|
|
|
|
|
|
|
let tx2 = tx.clone();
|
|
|
|
tx2.send(30).unwrap();
|
|
|
|
println!("Received: {:?}", rx.recv());
|
|
|
|
}
|
|
|
|
```
|
2023-01-24 08:35:48 +00:00
|
|
|
|
|
|
|
<details>
|
|
|
|
|
|
|
|
* `send()` and `recv()` return `Result`. If they return `Err`, it means the counterpart `Sender` or `Receiver` is dropped and the channel is closed.
|
|
|
|
|
|
|
|
</details>
|