Skip to content

Commit

Permalink
Rollup merge of rust-lang#21312 - michaelsproul:remove-error-send-bou…
Browse files Browse the repository at this point in the history
…nd, r=aturon

As discussed with @aturon, this PR removes the `Send` bound from `std::error::Error`, allowing us to implement `Error` for error types containing non-`Send` types. Current examples include `PoisonError` and `TryLockError` from `std::sync` which contain a Guard that we don't want sent between tasks.

[breaking-change]
  • Loading branch information
barosl committed Jan 20, 2015
2 parents 409c997 + 97a2b26 commit e63443d
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 8 deletions.
4 changes: 2 additions & 2 deletions src/libstd/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
//! chain information:
//!
//! ```
//! trait Error: Send {
//! trait Error {
//! fn description(&self) -> &str;
//!
//! fn detail(&self) -> Option<String> { None }
Expand Down Expand Up @@ -87,7 +87,7 @@ use string::{FromUtf8Error, FromUtf16Error};

/// 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;

Expand Down
6 changes: 3 additions & 3 deletions src/libstd/io/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ use error::{FromError, Error};
use fmt;
use int;
use iter::{Iterator, IteratorExt};
use marker::Sized;
use marker::{Sized, Send};
use mem::transmute;
use ops::FnOnce;
use option::Option;
Expand Down Expand Up @@ -363,8 +363,8 @@ impl Error for IoError {
}
}

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
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/libstd/os.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ use error::{FromError, Error};
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;
Expand Down Expand Up @@ -937,8 +937,8 @@ impl Error for MapError {
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
}
}
Expand Down

0 comments on commit e63443d

Please sign in to comment.