about summary refs log tree commit diff
path: root/src/libstd/error.rs
AgeCommit message (Collapse)AuthorLines
2019-10-13Fix typos in error.rsBO41-5/+5
2019-09-14Rollup merge of #64203 - alexreg:rush-pr-2, r=centrilMazdak Farrokhzad-17/+17
A few cosmetic improvements to code & comments in liballoc and libcore Factored out from hacking on rustc for work on the REPL. r? @Centril
2019-09-09std: Add a `backtrace` moduleAlex Crichton-0/+15
This commit adds a `backtrace` module to the standard library, as designed in [RFC 2504]. The `Backtrace` type is intentionally very conservative, effectively only allowing capturing it and printing it. Additionally this commit also adds a `backtrace` method to the `Error` trait which defaults to returning `None`, as specified in [RFC 2504]. More information about the design here can be found in [RFC 2504] and in the [tracking issue]. Implementation-wise this is all based on the `backtrace` crate and very closely mirrors the `backtrace::Backtrace` type on crates.io. Otherwise it's pretty standard in how it handles everything internally. [RFC 2504]: https://github.com/rust-lang/rfcs/blob/master/text/2504-fix-error.md [tracking issue]: https://github.com/rust-lang/rust/issues/53487 cc #53487
2019-09-06A few cosmetic improvements to code & comments in liballoc and libcoreAlexander Regueiro-17/+17
2019-07-26Introduce built-in macros through libcoreVadim Petrochenkov-5/+5
2019-06-17implement Error::source for Box<T: Error>s3bk-0/+4
fixes https://github.com/rust-lang/rust/issues/61899
2019-05-31Rollup merge of #60897 - seanmonstar:patch-4, r=sfacklerPietro Albini-1/+7
error: remove StringError from Debug output Seeing `StringError("something something")` in debug output can cause someone to think there was an error dealing with `String`s, not that the error type is just a string. So, remove that noise. For example: ``` io error: Custom { kind: InvalidData, error: StringError("corrupt data") } ``` With this change: ``` io error: Custom { kind: InvalidData, error: "corrupt data" } ```
2019-05-29Update libstd doctests to use dynmemoryruins-9/+9
2019-05-20Rollup merge of #60511 - taiki-e:libstd-intra-doc, r=Dylan-DPCMazdak Farrokhzad-0/+18
Fix intra-doc link resolution failure on re-exporting libstd Currently, re-exporting libstd items as below will [occur a lot of failures](https://gist.github.com/taiki-e/e33e0e8631ef47f65a74a3b69f456366). ```rust pub use std::*; ``` Until the underlying issue (#56922) fixed, we can fix that so they don't propagate to downstream crates. Related: https://github.com/rust-lang/rust/pull/56941 (That PR fixed failures that occur when re-exporting from libcore to libstd.) r? @QuietMisdreavus
2019-05-16Update src/libstd/error.rsSteven Fackler-1/+1
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-05-16Prevent Error::type_id overridesSteven Fackler-2/+10
type_id now takes an argument that can't be named outside of the std::error module, which prevents any implementations from overriding it. It's a pretty grody solution, and there's no way we can stabilize the method with this API, but it avoids the soudness issue! Closes #60784
2019-05-16error: remove StringError from Debug outputSean McArthur-1/+7
Seeing `StringError("something something")` in debug output can cause someone to think there was an error dealing with `String`s, not that the error type is just a string. So, remove that noise.
2019-05-13Destabilize the `Error::type_id` functionAlex Crichton-1/+4
This commit destabilizes the `Error::type_id` function in the standard library. This does so by effectively reverting #58048, restoring the `#[unstable]` attribute. The security mailing list has recently been notified of a vulnerability relating to the stabilization of this function. First stabilized in Rust 1.34.0, a stable function here allows users to implement a custom return value for this function: struct MyType; impl Error for MyType { fn type_id(&self) -> TypeId { // Enable safe casting to `String` by accident. TypeId::of::<String>() } } This, when combined with the `Error::downcast` family of functions, allows safely casting a type to any other type, clearly a memory safety issue! A security announcement will be shortly posted to the security mailing list as well as the Rust Blog, and when those links are available they'll be filled in for this PR as well. This commit simply destabilizes the `Error::type_id` which, although breaking for users since Rust 1.34.0, is hoped to have little impact and has been deemed sufficient to mitigate this issue for the stable channel. The long-term fate of the `Error::type_id` API will be discussed at #60784.
2019-05-04Fix intra-doc link resolution failure on re-exporting libstdTaiki Endo-0/+18
2019-03-31Rollup merge of #59587 - XAMPPRocky:master, r=CentrilMazdak Farrokhzad-1/+0
Remove #[doc(hidden)] from Error::type_id Nominating this for beta so that `Error::type_id` has documentation in time for release. cc @rust-lang/release @rust-lang/docs
2019-03-31Remove #[doc(hidden)] from Error::type_idAaron Power-1/+0
2019-03-31libstd: deny(elided_lifetimes_in_paths)Mazdak Farrokhzad-16/+16
2019-03-09Use lifetime contravariance to elide more lifetimes in core+alloc+stdScott McMurray-4/+4
2019-02-28libstd => 2018Taiki Endo-11/+12
2019-02-25Auto merge of #58302 - SimonSapin:tryfrom, r=alexcrichtonbors-3/+3
Stabilize TryFrom and TryInto with a convert::Infallible empty enum This is the plan proposed in https://github.com/rust-lang/rust/issues/33417#issuecomment-423073898
2019-02-16Fix tracking issue for error iteratorsSteven Fackler-4/+4
2019-02-13Stabilize TryFrom and TryIntoSimon Sapin-3/+3
2019-02-13Rollup merge of #58289 - haraldh:master, r=sfacklerMazdak Farrokhzad-0/+152
impl iter() for dyn Error Examples: ```rust let next_error_type_a = err .iter() .filter_map(Error::downcast_ref::<ErrorTypeA>) .next(); ``` ```rust let source_root_error = err.iter().last(); ``` Credit for the ErrorIter goes to reddit user /u/tdiekmann (Tim Diekmann) https://www.reddit.com/r/rust/comments/aj3lpg/is_an_iterator_impl_over_errorsource_possible/
2019-02-10libs: doc commentsAlexander Regueiro-2/+2
2019-02-09impl iter_sources() and iter_chain() for dyn ErrorHarald Hoyer-0/+152
Examples: ```rust let next_error_type_a = err .iter_chain() .filter_map(Error::downcast_ref::<ErrorTypeA>) .next(); ``` ```rust let source_root_error = err.iter_chain().last(); ``` Credit for the ErrorIter goes to Tim Diekmann https://www.reddit.com/r/rust/comments/aj3lpg/is_an_iterator_impl_over_errorsource_possible/
2019-02-01Stabilize std::error::Error::type_idSimon Sapin-3/+1
This should have been part of https://github.com/rust-lang/rust/pull/57834 FCP: https://github.com/rust-lang/rust/issues/27745#issuecomment-373906749
2019-01-08Change std::error::Error trait documentation to talk about `source` instead ↵Czipperz-7/+7
of `cause`
2018-12-25Remove licensesMark Rousskov-10/+0
2018-12-12Bump to 1.33.0Alex Crichton-0/+1
* Update bootstrap compiler * Update version to 1.33.0 * Remove some `#[cfg(stage0)]` annotations Actually updating the version number is blocked on updating Cargo
2018-12-07Various minor/cosmetic improvements to codeAlexander Regueiro-2/+2
2018-10-04Rollup merge of #53523 - phungleson:fix-impl-from-for-std-error, ↵Pietro Albini-0/+141
r=GuillaumeGomez Add doc for impl From for Std Error As part of issue #51430 (cc @skade). I am not sure if it is going to a correct direction so put up here so that people can comment.
2018-10-03Remove main() in examplesSon-46/+30
2018-09-26Examples for docsSon-0/+148
2018-09-05Add doc for impl From for Std ErrorSon-0/+9
2018-08-21Correctly parenthesize dyn Error + 'static.Without Boats-1/+1
2018-08-20Fix feature name.Without Boats-1/+1
2018-08-20Add Error::source method per RFC 2504.Without Boats-1/+66
2018-07-11Add missing dyn in testsljedrz-2/+2
2018-07-10Deny bare trait objects in `src/libstd`.ljedrz-43/+43
2018-06-27Fix doc linksJosef Reinhard Brandl-0/+1
2018-06-11Remove deprecated heap modulesSimon Sapin-1/+1
The heap.rs file was already unused.
2018-04-25Suggest alternatives to Error::description()Kornel-1/+3
2018-04-25Move description of the Error trait to its own doc-commentSimon Sapin-39/+24
… rather than the module’s. Remove code definition of the Error trait from its doc-comment It was out of date, and rustdoc already shows the same information. Add a default impl for Error::description and document it as deprecated. It is redundant with Display while being much less flexible for implementors. This is only a "soft" deprecation: it is not worth the hassle of a warning to existing users. Tweak Error trait docs to reflect actual requirements
2018-04-20Revert "Stabilize the TryFrom and TryInto traits"Felix S. Klock II-3/+3
This reverts commit e53a2a72743810e05f58c61c9d8a4c89b712ad2e.
2018-04-20Revert stabilization of `feature(never_type)`.Felix S. Klock II-1/+1
This commit is just covering the feature gate itself and the tests that made direct use of `!` and thus need to opt back into the feature. A follow on commit brings back the other change that motivates the revert: Namely, going back to the old rules for falling back to `()`.
2018-04-12Return Result instead of Option in alloc::Layout constructorsSimon Sapin-1/+10
2018-04-12Make AllocErr a zero-size unit structSimon Sapin-1/+1
2018-04-12Import the `alloc` crate as `alloc_crate` in stdSimon Sapin-5/+5
… to make the name `alloc` available.
2018-03-26Stabilize the TryFrom and TryInto traitsSimon Sapin-3/+3
Tracking issue: https://github.com/rust-lang/rust/issues/33417
2018-03-15replace `convert::Infallible` with `!`Andrew Cann-9/+0