It seems that std::sync::mpsc::RecvTimeoutError is missing impls for std::fmt::Display and std::error::Error. Related error types such as std::sync::mpsc::TryRecvError implement both.
I tried this code:
use std::error::Error;
use std::sync::mpsc;
use std::time::Duration;
fn f(r: mpsc::Receiver<()>) -> Result<(), Box<Error>> {
let _ = r.recv_timeout(Duration::from_secs(3))?;
Ok(())
}
fn main() {
let (_, rx) = mpsc::channel();
let _ = f(rx);
}
I expected to see this happen: compilation succeeds
Instead, this happened:
rustc 1.14.0-nightly (3f4408347 2016-10-27)
error[E0277]: the trait bound `std::sync::mpsc::RecvTimeoutError: std::error::Error` is not satisfied
--> <anon>:6:13
|
6 | let _ = r.recv_timeout(Duration::from_secs(3))?;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::error::Error` is not implemented for `std::sync::mpsc::RecvTimeoutError`
|
= note: required because of the requirements on the impl of `std::convert::From<std::sync::mpsc::RecvTimeoutError>` for `Box<std::error::Error>`
= note: required by `std::convert::From::from`
error: aborting due to previous error
Meta
rustc --version --verbose:
rustc 1.14.0-nightly (3f4408347 2016-10-27)
binary: rustc
commit-hash: 3f4408347d2109803edbf53c89c8bce575de4b67
commit-date: 2016-10-27
host: x86_64-unknown-linux-gnu
release: 1.14.0-nightly
LLVM version: 3.9
Backtrace: N/A
It seems that
std::sync::mpsc::RecvTimeoutErroris missing impls forstd::fmt::Displayandstd::error::Error. Related error types such asstd::sync::mpsc::TryRecvErrorimplement both.I tried this code:
I expected to see this happen: compilation succeeds
Instead, this happened:
Meta
rustc --version --verbose:Backtrace: N/A