//! chain information:
//!
//! ```
-//! trait Error: Send {
+//! trait Error {
//! fn description(&self) -> &str;
//!
//! fn detail(&self) -> Option<String> { None }
/// Base functionality for all errors in Rust.
#[unstable = "the exact API of this trait may change"]
-pub trait Error: Send {
+pub trait Error {
/// A short description of the error; usually a static string.
fn description(&self) -> &str;
use fmt;
use int;
use iter::{Iterator, IteratorExt};
-use marker::Sized;
+use marker::{Sized, Send};
use mem::transmute;
use ops::FnOnce;
use option::Option;
}
}
-impl FromError<IoError> for Box<Error> {
- fn from_error(err: IoError) -> Box<Error> {
+impl FromError<IoError> for Box<Error + Send> {
+ fn from_error(err: IoError) -> Box<Error + Send> {
box err
}
}
use fmt;
use io::{IoResult, IoError};
use iter::{Iterator, IteratorExt};
-use marker::Copy;
+use marker::{Copy, Send};
use libc::{c_void, c_int, c_char};
use libc;
use boxed::Box;
fn detail(&self) -> Option<String> { Some(format!("{:?}", self)) }
}
-impl FromError<MapError> for Box<Error> {
- fn from_error(err: MapError) -> Box<Error> {
+impl FromError<MapError> for Box<Error + Send> {
+ fn from_error(err: MapError) -> Box<Error + Send> {
box err
}
}