a5762625a1
This commit brings the `Error` trait in line with the [Error interoperation RFC](https://github.com/rust-lang/rfcs/pull/201) by adding downcasting, which has long been intended. This change means that for any `Error` trait objects that are `'static`, you can downcast to concrete error types. To make this work, it is necessary for `Error` to inherit from `Reflect` (which is currently used to mark concrete types as "permitted for reflection, aka downcasting"). This is a breaking change: it means that impls like ```rust impl<T> Error for MyErrorType<T> { ... } ``` must change to something like ```rust impl<T: Reflect> Error for MyErrorType<T> { ... } ``` except that `Reflect` is currently unstable (and should remain so for the time being). For now, code can instead bound by `Any`: ```rust impl<T: Any> Error for MyErrorType<T> { ... } ``` which *is* stable and has `Reflect` as a super trait. The downside is that this imposes a `'static` constraint, but that only constrains *when* `Error` is implemented -- it does not actually constrain the types that can implement `Error`. [breaking-change] |
||
---|---|---|
.. | ||
collections | ||
ffi | ||
io | ||
net | ||
num | ||
os | ||
prelude | ||
rand | ||
rt | ||
sync | ||
sys | ||
thread | ||
time | ||
array.rs | ||
ascii.rs | ||
bool.rs | ||
dynamic_lib.rs | ||
env.rs | ||
error.rs | ||
fs.rs | ||
lib.rs | ||
macros.rs | ||
panicking.rs | ||
path.rs | ||
process.rs | ||
rtdeps.rs | ||
thunk.rs | ||
tuple.rs | ||
unit.rs |