diff options
| author | Julien Cretin <cretin@google.com> | 2017-11-12 00:30:46 +0100 |
|---|---|---|
| committer | ia0 <git@ia0.eu> | 2017-11-13 22:50:22 +0100 |
| commit | 428c875ac33c1a8375d4e583ea708e230a324310 (patch) | |
| tree | 2b66b0a90b237129e9ee4ddcfd8e146ff5418447 /src/liballoc/string.rs | |
| parent | 24bb4d1e758423dd10b517628401c1b2c2437715 (diff) | |
| download | rust-428c875ac33c1a8375d4e583ea708e230a324310.tar.gz rust-428c875ac33c1a8375d4e583ea708e230a324310.zip | |
Add std::sync::mpsc::Receiver::recv_deadline()
Essentially renames recv_max_until to recv_deadline (mostly copying recv_timeout
documentation). This function is useful to avoid the often unnecessary call to
Instant::now in recv_timeout (e.g. when the user already has a deadline). A
concrete example would be something along those lines:
```rust
use std::sync::mpsc::Receiver;
use std::time::{Duration, Instant};
/// Reads a batch of elements
///
/// Returns as soon as `max_size` elements have been received or `timeout` expires.
fn recv_batch_timeout<T>(receiver: &Receiver<T>, timeout: Duration, max_size: usize) -> Vec<T> {
recv_batch_deadline(receiver, Instant::now() + timeout, max_size)
}
/// Reads a batch of elements
///
/// Returns as soon as `max_size` elements have been received or `deadline` is reached.
fn recv_batch_deadline<T>(receiver: &Receiver<T>, deadline: Instant, max_size: usize) -> Vec<T> {
let mut result = Vec::new();
while let Ok(x) = receiver.recv_deadline(deadline) {
result.push(x);
if result.len() == max_size {
break;
}
}
result
}
```
Diffstat (limited to 'src/liballoc/string.rs')
0 files changed, 0 insertions, 0 deletions
