-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tracking Issue for error_generic_member_access
#99301
Comments
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [thiserror](https://togithub.com/dtolnay/thiserror) | dependencies | patch | `1.0.32` -> `1.0.33` | --- ### Release Notes <details> <summary>dtolnay/thiserror</summary> ### [`v1.0.33`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.33) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.32...1.0.33) - Expose backtraces via the new "generic member access" API on the Error trait ([https://github.com/rust-lang/rust/issues/99301](https://togithub.com/rust-lang/rust/issues/99301), [https://github.com/rust-lang/rust/issues/96024](https://togithub.com/rust-lang/rust/issues/96024)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox. --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/knope-dev/knope). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4xODQuMiIsInVwZGF0ZWRJblZlciI6IjMyLjE4NC4yIn0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Hello from dtolnay/thiserror#185. I noticed it can be problematic for macros that
Two proposals:
|
I agree, that
would be great. |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [Swatinem/rust-cache](https://togithub.com/Swatinem/rust-cache) | action | patch | `v2.0.0` -> `v2.0.2` | | [clap](https://togithub.com/clap-rs/clap) | dependencies | patch | `3.2.17` -> `3.2.23` | | [const_format](https://togithub.com/rodrimati1992/const_format_crates) | dependencies | patch | `0.2.26` -> `0.2.30` | | [darling](https://togithub.com/TedDriggs/darling) | dependencies | patch | `0.14.1` -> `0.14.2` | | [futures](https://rust-lang.github.io/futures-rs) ([source](https://togithub.com/rust-lang/futures-rs)) | dependencies | patch | `0.3.23` -> `0.3.25` | | [proc-macro2](https://togithub.com/dtolnay/proc-macro2) | dependencies | patch | `1.0.43` -> `1.0.47` | | [serde](https://serde.rs) ([source](https://togithub.com/serde-rs/serde)) | dependencies | patch | `1.0.144` -> `1.0.147` | | [serde_json](https://togithub.com/serde-rs/json) | dependencies | patch | `1.0.85` -> `1.0.87` | | [serde_yaml](https://togithub.com/dtolnay/serde-yaml) | dependencies | patch | `0.9.10` -> `0.9.14` | | [snafu](https://togithub.com/shepmaster/snafu) | dependencies | patch | `0.7.1` -> `0.7.3` | | [syn](https://togithub.com/dtolnay/syn) | dependencies | patch | `1.0.99` -> `1.0.103` | | [thiserror](https://togithub.com/dtolnay/thiserror) | dependencies | patch | `1.0.32` -> `1.0.37` | | [tokio](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tokio)) | dependencies | patch | `1.21.1` -> `1.21.2` | | [tracing](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tracing)) | dependencies | patch | `0.1.36` -> `0.1.37` | | [tracing-subscriber](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tracing)) | dependencies | patch | `0.3.15` -> `0.3.16` | --- ### Release Notes <details> <summary>Swatinem/rust-cache</summary> ### [`v2.0.2`](https://togithub.com/Swatinem/rust-cache/releases/tag/v2.0.2) [Compare Source](https://togithub.com/Swatinem/rust-cache/compare/v2.0.1...v2.0.2) - Avoid calling cargo metadata on pre-cleanup. ### [`v2.0.1`](https://togithub.com/Swatinem/rust-cache/releases/tag/v2.0.1) [Compare Source](https://togithub.com/Swatinem/rust-cache/compare/v2.0.0...v2.0.1) - Primarily just updating dependencies to fix GitHub deprecation notices. </details> <details> <summary>clap-rs/clap</summary> ### [`v3.2.23`](https://togithub.com/clap-rs/clap/releases/tag/v3.2.23) [Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.22...v3.2.23) #### \[3.2.23] - 2022-10-24 ##### Fixes - Upgrade to `textwrap` 0.16 ### [`v3.2.22`](https://togithub.com/clap-rs/clap/releases/tag/v3.2.22) [Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.21...v3.2.22) ##### \[3.2.22] - 2022-09-16 ##### Fixes - Unify dependencies on `terminal_size` to the 0.2 release ### [`v3.2.21`](https://togithub.com/clap-rs/clap/releases/tag/v3.2.21) [Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.20...v3.2.21) #### \[3.2.21] - 2022-09-12 ##### Features - `TypedValueParser::map` to allow reusing existing value parsers for other purposes ### [`v3.2.20`](https://togithub.com/clap-rs/clap/releases/tag/v3.2.20) [Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.19...v3.2.20) #### \[3.2.20] - 2022-09-02 ##### Features - `ArgMatches::get_count` help for `ArgAction::Count` - `ArgMatches::get_flag` help for `ArgAction::SetTrue` / `ArgAction::SetFalse` ### [`v3.2.19`](https://togithub.com/clap-rs/clap/releases/tag/v3.2.19) [Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.18...v3.2.19) #### \[3.2.19] - 2022-08-30 ##### Fixes - *(help)* Ensure required arguments for parent commands aren't shown in their subcommands when using `args_conflicts_with_subcommand` ### [`v3.2.18`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#​3218---2022-08-29) [Compare Source](https://togithub.com/clap-rs/clap/compare/v3.2.17...v3.2.18) ##### Fixes - *(help)* `Command::print_help` now respects `Command::colored_help` - *(derive)* Improved error messages </details> <details> <summary>rodrimati1992/const_format_crates</summary> ### [`v0.2.29`](https://togithub.com/rodrimati1992/const_format_crates/blob/HEAD/Changelog.md#​0229) Added lowercase hexadecimal formatting support. Breaking: to add lowercase hexadecimal formatting, this crate changed the uppercase hexadecimal formatter from `{:x}` to `{:X}` ### [`v0.2.27`](https://togithub.com/rodrimati1992/const_format_crates/blob/HEAD/Changelog.md#​0227) Replacing existing features with these: - `"rust_1_64"`: superceeding the soft-deprecated `"more_str_macros"` feature. - `"rust_1_51"`: superceeding the soft-deprecated `"const_generics"` feature. The new features are enabled by the feature they superceede. Now the `"fmt"` feature enables the `"rust_1_64"` feature. </details> <details> <summary>TedDriggs/darling</summary> ### [`v0.14.2`](https://togithub.com/TedDriggs/darling/blob/HEAD/CHANGELOG.md#v0142-October-26-2022) [Compare Source](https://togithub.com/TedDriggs/darling/compare/v0.14.1...v0.14.2) - Derived impls of `FromMeta` will now error on literals, rather than silently ignoring them. [#​193](https://togithub.com/TedDriggs/darling/pull/193) - Don't include property paths in compile errors when spans are available. [#​203](https://togithub.com/TedDriggs/darling/pull/203) </details> <details> <summary>rust-lang/futures-rs</summary> ### [`v0.3.25`](https://togithub.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#​0325---2022-10-20) [Compare Source](https://togithub.com/rust-lang/futures-rs/compare/0.3.24...0.3.25) - Fix soundness issue in `join!` and `try_join!` macros ([#​2649](https://togithub.com/rust-lang/futures-rs/issues/2649)) - Implement `Clone` for `sink::Drain` ([#​2650](https://togithub.com/rust-lang/futures-rs/issues/2650)) ### [`v0.3.24`](https://togithub.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#​0324---2022-08-29) [Compare Source](https://togithub.com/rust-lang/futures-rs/compare/0.3.23...0.3.24) - Fix incorrect termination of `select_with_strategy` streams ([#​2635](https://togithub.com/rust-lang/futures-rs/issues/2635)) </details> <details> <summary>dtolnay/proc-macro2</summary> ### [`v1.0.47`](https://togithub.com/dtolnay/proc-macro2/releases/tag/1.0.47) [Compare Source](https://togithub.com/dtolnay/proc-macro2/compare/1.0.46...1.0.47) - Fix integer overflow when nesting depth of nested comments exceeds 4 billion ([#​357](https://togithub.com/dtolnay/proc-macro2/issues/357)) ### [`v1.0.46`](https://togithub.com/dtolnay/proc-macro2/releases/tag/1.0.46) [Compare Source](https://togithub.com/dtolnay/proc-macro2/compare/1.0.45...1.0.46) - Make proc_macro2::TokenStream's `FromStr` impl consistent with proc_macro::TokenStream's on strings that begin with a byte order mark `\u{feff}` ([#​353](https://togithub.com/dtolnay/proc-macro2/issues/353)) ### [`v1.0.45`](https://togithub.com/dtolnay/proc-macro2/releases/tag/1.0.45) [Compare Source](https://togithub.com/dtolnay/proc-macro2/compare/1.0.44...1.0.45) - Fix panic on parsing disallowed raw identifiers such as `r#self` ([#​351](https://togithub.com/dtolnay/proc-macro2/issues/351)) ### [`v1.0.44`](https://togithub.com/dtolnay/proc-macro2/releases/tag/1.0.44) [Compare Source](https://togithub.com/dtolnay/proc-macro2/compare/1.0.43...1.0.44) - Expose `span.before()` and `span.after()` to access an empty `Span` located immediately before or after the input span ([#​348](https://togithub.com/dtolnay/proc-macro2/issues/348), upstream tracking issue: [https://github.com/rust-lang/rust/issues/87552](https://togithub.com/rust-lang/rust/issues/87552)) </details> <details> <summary>serde-rs/serde</summary> ### [`v1.0.147`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.147) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.146...v1.0.147) - Add `serde::de::value::EnumAccessDeserializer` which transforms an `EnumAccess` into a `Deserializer` ([#​2305](https://togithub.com/serde-rs/serde/issues/2305)) ### [`v1.0.146`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.146) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.145...v1.0.146) - Allow internally tagged newtype variant to contain unit ([#​2303](https://togithub.com/serde-rs/serde/issues/2303), thanks [@​tage64](https://togithub.com/tage64)) ### [`v1.0.145`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.145) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.144...v1.0.145) - Allow RefCell\<T>, Mutex\<T>, and RwLock\<T> to be serialized regardless of whether T is `Sized` ([#​2282](https://togithub.com/serde-rs/serde/issues/2282), thanks [@​ChayimFriedman2](https://togithub.com/ChayimFriedman2)) </details> <details> <summary>serde-rs/json</summary> ### [`v1.0.87`](https://togithub.com/serde-rs/json/releases/tag/v1.0.87) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.86...v1.0.87) - Add `write_i128` and `write_u128` methods to `serde_json::Formatter` to control the formatting of 128-bit integers ([#​940](https://togithub.com/serde-rs/json/issues/940), thanks [@​Lucretiel](https://togithub.com/Lucretiel)) ### [`v1.0.86`](https://togithub.com/serde-rs/json/releases/tag/v1.0.86) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.85...v1.0.86) - Support `arbitrary_precision` feature even in no-std mode ([#​928](https://togithub.com/serde-rs/json/issues/928), thanks [@​kvinwang](https://togithub.com/kvinwang)) </details> <details> <summary>dtolnay/serde-yaml</summary> ### [`v0.9.14`](https://togithub.com/dtolnay/serde-yaml/releases/tag/0.9.14) [Compare Source](https://togithub.com/dtolnay/serde-yaml/compare/0.9.13...0.9.14) - Implement `Deserializer` for `TaggedValue` and `&TaggedValue` ([#​339](https://togithub.com/dtolnay/serde-yaml/issues/339)) ### [`v0.9.13`](https://togithub.com/dtolnay/serde-yaml/releases/tag/0.9.13) [Compare Source](https://togithub.com/dtolnay/serde-yaml/compare/0.9.12...0.9.13) - Recognize `True`, `TRUE`, `False`, `FALSE` as booleans, `Null`, `NULL` as null ([#​330](https://togithub.com/dtolnay/serde-yaml/issues/330)) ### [`v0.9.12`](https://togithub.com/dtolnay/serde-yaml/releases/tag/0.9.12) [Compare Source](https://togithub.com/dtolnay/serde-yaml/compare/0.9.11...0.9.12) - Support deserializing tagged literal scalar into primitive ([#​327](https://togithub.com/dtolnay/serde-yaml/issues/327)) ```yaml "foo": !!int |- 7200 ``` ### [`v0.9.11`](https://togithub.com/dtolnay/serde-yaml/releases/tag/0.9.11) [Compare Source](https://togithub.com/dtolnay/serde-yaml/compare/0.9.10...0.9.11) - Serialize strings on a single line when they do not already contain a newline character, regardless of string length ([#​321](https://togithub.com/dtolnay/serde-yaml/issues/321), [#​322](https://togithub.com/dtolnay/serde-yaml/issues/322)) </details> <details> <summary>shepmaster/snafu</summary> ### [`v0.7.3`](https://togithub.com/shepmaster/snafu/blob/HEAD/CHANGELOG.md#​073---2022-10-20) [Compare Source](https://togithub.com/shepmaster/snafu/compare/0.7.2...0.7.3) ##### Fixed - The macro no longer generates invalid code when implicitly-generated types (such as backtraces) were used in conjunction with `#[snafu(source(from))]` and the type before transformation does not implement `std::error::Error`. [0.7.3]: https://togithub.com/shepmaster/snafu/releases/tag/0.7.3 ### [`v0.7.2`](https://togithub.com/shepmaster/snafu/blob/HEAD/CHANGELOG.md#​072---2022-10-09) [Compare Source](https://togithub.com/shepmaster/snafu/compare/0.7.1...0.7.2) ##### Added - `Report` can be returned from `main` or test functions to provide a user-friendly display of errors. - A cheat sheet for the most common `#[snafu(...)]` attribute usages has been added to the `Snafu` macro's documentation. - Optional support for using the standard library's `std::backtrace::Backtrace` type via the `backtraces-impl-std` feature flag. - Optional support for implementing the Provider API using the `std::error::Error::provide` method via the `unstable-provider-api` feature flag. - Optional support for implementing the `core::error::Error` trait instead of `std::error::Error` via the `unstable-core-error` feature flag. - `GenerateImplicitData` has a new method `generate_with_source`. ##### Changed - `ErrorCompat::iter_chain` and `ChainCompat` are now available in no_std environments. - `ChainCompat` now implements `Clone`. - The `Debug` implementation for `Location` no longer shows some irrelevant internal details. [0.7.2]: https://togithub.com/shepmaster/snafu/releases/tag/0.7.2 </details> <details> <summary>dtolnay/syn</summary> ### [`v1.0.103`](https://togithub.com/dtolnay/syn/releases/tag/1.0.103) [Compare Source](https://togithub.com/dtolnay/syn/compare/1.0.102...1.0.103) - Implement `PartialOrd` for `Cursor` ([#​1236](https://togithub.com/dtolnay/syn/issues/1236), [#​1237](https://togithub.com/dtolnay/syn/issues/1237), thanks [@​CAD97](https://togithub.com/CAD97)) ### [`v1.0.102`](https://togithub.com/dtolnay/syn/releases/tag/1.0.102) [Compare Source](https://togithub.com/dtolnay/syn/compare/1.0.101...1.0.102) - More efficient internal representation for `TokenBuffer` ([#​1223](https://togithub.com/dtolnay/syn/issues/1223), thanks [@​CAD97](https://togithub.com/CAD97)) - Fix parsing of a left shift after macro metavariable in type position ([#​1229](https://togithub.com/dtolnay/syn/issues/1229)) ### [`v1.0.101`](https://togithub.com/dtolnay/syn/releases/tag/1.0.101) [Compare Source](https://togithub.com/dtolnay/syn/compare/1.0.100...1.0.101) - Eliminate a bunch of redundant work done by LitStr::parse ([#​1221](https://togithub.com/dtolnay/syn/issues/1221)) ### [`v1.0.100`](https://togithub.com/dtolnay/syn/releases/tag/1.0.100) [Compare Source](https://togithub.com/dtolnay/syn/compare/1.0.99...1.0.100) - Parse closures with explicit empty lifetime parameter list `for<> || -> T {…}` ([#​1212](https://togithub.com/dtolnay/syn/issues/1212), [https://github.com/rust-lang/rust/issues/97362](https://togithub.com/rust-lang/rust/issues/97362)) - Parse `dyn*` provisional syntax ([#​1213](https://togithub.com/dtolnay/syn/issues/1213), [https://github.com/rust-lang/rust/issues/91611](https://togithub.com/rust-lang/rust/issues/91611)) - Parse attributes on the "rest" pattern of a struct in pattern position, `Struct { #[attr] .. }` ([#​1214](https://togithub.com/dtolnay/syn/issues/1214)) - Parse `static async` and `static async move` closures ([#​1215](https://togithub.com/dtolnay/syn/issues/1215), [https://github.com/rust-lang/rust/issues/62290](https://togithub.com/rust-lang/rust/issues/62290)) </details> <details> <summary>dtolnay/thiserror</summary> ### [`v1.0.37`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.37) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.36...1.0.37) - Documentation improvements ### [`v1.0.36`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.36) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.35...1.0.36) - Documentation improvements ([#​195](https://togithub.com/dtolnay/thiserror/issues/195), thanks [@​matklad](https://togithub.com/matklad)) ### [`v1.0.35`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.35) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.34...1.0.35) - More work on integrating [std::any::Provider](https://doc.rust-lang.org/std/any/trait.Provider.html) for backtrace support - Fix *"Multiple applicable `provide` methods in scope"* error when the caller has both std::error::Error and std::any::Provide traits in scope ([#​185](https://togithub.com/dtolnay/thiserror/issues/185)) ### [`v1.0.34`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.34) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.33...1.0.34) - Tweak "generic member access" based Backtrace implementation ([#​184](https://togithub.com/dtolnay/thiserror/issues/184)) ### [`v1.0.33`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.33) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.32...1.0.33) - Expose backtraces via the new "generic member access" API on the Error trait ([https://github.com/rust-lang/rust/issues/99301](https://togithub.com/rust-lang/rust/issues/99301), [https://github.com/rust-lang/rust/issues/96024](https://togithub.com/rust-lang/rust/issues/96024)) </details> <details> <summary>tokio-rs/tokio</summary> ### [`v1.21.2`](https://togithub.com/tokio-rs/tokio/releases/tag/tokio-1.21.2) [Compare Source](https://togithub.com/tokio-rs/tokio/compare/tokio-1.21.1...tokio-1.21.2) ### 1.21.2 (September 27, 2022) This release removes the dependency on the `once_cell` crate to restore the MSRV of 1.21.x, which is the latest minor version at the time of release. ([#​5048]) [#​5048]: https://togithub.com/tokio-rs/tokio/pull/5048 </details> <details> <summary>tokio-rs/tracing</summary> ### [`v0.1.37`](https://togithub.com/tokio-rs/tracing/releases/tag/tracing-0.1.37) [Compare Source](https://togithub.com/tokio-rs/tracing/compare/tracing-0.1.36...tracing-0.1.37) This release of `tracing` incorporates changes from `tracing-core` [v0.1.30][core-0.1.30] and `tracing-attributes` [v0.1.23][attrs-0.1.23], including the new `Subscriber::on_register_dispatch` method for performing late initialization after a `Subscriber` is registered as a `Dispatch`, and bugfixes for the `#[instrument]` attribute. Additionally, it fixes instances of the `bare_trait_objects` lint, which is now a warning on `tracing`'s MSRV and will become an error in the next edition. ##### Fixed - **attributes**: Incorrect handling of inner attributes in `#[instrument]`ed functions ([#​2307]) - **attributes**: Incorrect location of compiler diagnostic spans generated for type errors in `#[instrument]`ed `async fn`s ([#​2270]) - **attributes**: Updated `syn` dependency to fix compilation with `-Z minimal-versions` ([#​2246]) - `bare_trait_objects` warning in `valueset!` macro expansion ([#​2308]) ##### Added - **core**: `Subscriber::on_register_dispatch` method ([#​2269]) - **core**: `WeakDispatch` type and `Dispatch::downgrade()` function ([#​2293]) ##### Changed - `tracing-core`: updated to [0.1.30][core-0.1.30] - `tracing-attributes`: updated to [0.1.23][attrs-0.1.23] ##### Documented - Added [`tracing-web`][tracing-web] and [`reqwest-tracing`][reqwest-tracing] to related crates ([#​2283], [#​2331]) Thanks to new contributors [@​compiler-errors](https://togithub.com/compiler-errors), [@​e-nomem](https://togithub.com/e-nomem), [@​WorldSEnder](https://togithub.com/WorldSEnder), [@​Xiami2012](https://togithub.com/Xiami2012), and [@​tl-rodrigo-gryzinski](https://togithub.com/tl-rodrigo-gryzinski), as well as [@​jswrenn](https://togithub.com/jswrenn) and [@​CAD97](https://togithub.com/CAD97), for contributing to this release! [core-0.1.30]: https://togithub.com/tokio-rs/tracing/releases/tag/tracing-core-0.1.30 [attrs-0.1.23]: https://togithub.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.23 [`tracing-web`]: https://crates.io/crates/tracing-web/ [`reqwest-tracing`]: https://crates.io/crates/reqwest-tracing/ [#​2246]: https://togithub.com/tokio-rs/tracing/pull/2246 [#​2269]: https://togithub.com/tokio-rs/tracing/pull/2269 [#​2283]: https://togithub.com/tokio-rs/tracing/pull/2283 [#​2270]: https://togithub.com/tokio-rs/tracing/pull/2270 [#​2293]: https://togithub.com/tokio-rs/tracing/pull/2293 [#​2307]: https://togithub.com/tokio-rs/tracing/pull/2307 [#​2308]: https://togithub.com/tokio-rs/tracing/pull/2308 [#​2331]: https://togithub.com/tokio-rs/tracing/pull/2331 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "after 5:00 and before 6:00 every weekday" in timezone Europe/Berlin, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/stackabletech/operator-rs). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4yMTcuMCIsInVwZGF0ZWRJblZlciI6IjM0LjE0LjAifQ==-->
Not sure if this has been proposed before, but maybe an alternative to "fully qualified method call but with deref/autoref" could be that, in case of an ambiguity, trait method resolution favors traits that were introduced in inner scopes. Currently, the following code doesn't compile: fn foo(x: u32, formatter: &mut core::fmt::Formatter) {
use core::fmt::{Display, Debug};
{ // Imagine this block was generated by a macro that only needs `Display` but not `Debug`.
use core::fmt::Display; // currently leads to a warning: "the item `Display` is imported redundantly"
x.fmt(formatter); // currently leads to an error: "multiple `fmt` found"
}
} The proposal would be to allow the above code, and to resolve I don't think this would change any behavior in code that currently compiles since it would only disambiguate cases that are currently ambiguous. And it would allow macro authors to simply introduce a new scope and |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [anyhow](https://togithub.com/dtolnay/anyhow) | dependencies | patch | `1.0.57` -> `1.0.68` | | [anyhow](https://togithub.com/dtolnay/anyhow) | dependencies | patch | `1.0.40` -> `1.0.68` | | [anyhow](https://togithub.com/dtolnay/anyhow) | workspace.dependencies | patch | `1.0.34` -> `1.0.68` | | [assert_cmd](https://togithub.com/assert-rs/assert_cmd) | dev-dependencies | patch | `2.0.4` -> `2.0.8` | | [assert_fs](https://togithub.com/assert-rs/assert_fs) | dev-dependencies | patch | `1.0.7` -> `1.0.10` | | [bincode](https://togithub.com/bincode-org/bincode) | build-dependencies | patch | `1.3.2` -> `1.3.3` | | [bincode](https://togithub.com/bincode-org/bincode) | dependencies | patch | `1.3.2` -> `1.3.3` | | [byte-unit](https://magiclen.org/byte-unit) ([source](https://togithub.com/magiclen/byte-unit)) | dependencies | patch | `4.0.13` -> `4.0.18` | | [cargo_metadata](https://togithub.com/oli-obk/cargo_metadata) | dependencies | patch | `0.15.0` -> `0.15.3` | | [dunce](https://lib.rs/crates/dunce) ([source](https://gitlab.com/kornelski/dunce)) | dependencies | patch | `1.0.1` -> `1.0.3` | | [enum-primitive-derive](https://gitlab.com/cardoe/enum-primitive-derive) | dependencies | patch | `0.2.1` -> `0.2.2` | | [gdbstub](https://togithub.com/daniel5151/gdbstub) | dependencies | patch | `0.6.2` -> `0.6.3` | | [gimli](https://togithub.com/gimli-rs/gimli) | dependencies | patch | `0.27.0` -> `0.27.1` | | [hexdump](https://togithub.com/tbu-/hexdump) | dependencies | patch | `0.1.0` -> `0.1.1` | | [hidapi](https://togithub.com/ruabmbua/hidapi-rs) | dependencies | minor | `2.0.2` -> `2.1.2` | | [indicatif](https://togithub.com/console-rs/indicatif) | dependencies | patch | `0.17.0` -> `0.17.3` | | [insta](https://insta.rs/) ([source](https://togithub.com/mitsuhiko/insta)) | dev-dependencies | minor | `1.10.0` -> `1.26.0` | | [insta](https://insta.rs/) ([source](https://togithub.com/mitsuhiko/insta)) | dev-dependencies | minor | `1.8.0` -> `1.26.0` | | [itertools](https://togithub.com/rust-itertools/itertools) | dependencies | patch | `0.10.3` -> `0.10.5` | | [jep106](https://togithub.com/Yatekii/jep106) | dependencies | patch | `0.2.6` -> `0.2.8` | | [log](https://togithub.com/rust-lang/log) | dependencies | patch | `0.4.16` -> `0.4.17` | | [log](https://togithub.com/rust-lang/log) | dependencies | patch | `0.4.14` -> `0.4.17` | | [log](https://togithub.com/rust-lang/log) | dependencies | patch | `0.4.0` -> `0.4.17` | | [log](https://togithub.com/rust-lang/log) | workspace.dependencies | patch | `0.4.6` -> `0.4.17` | | [num-traits](https://togithub.com/rust-num/num-traits) | dependencies | patch | `0.2.11` -> `0.2.15` | | [num-traits](https://togithub.com/rust-num/num-traits) | dependencies | patch | `0.2.14` -> `0.2.15` | | [object](https://togithub.com/gimli-rs/object) | dependencies | patch | `0.30.0` -> `0.30.3` | | [once_cell](https://togithub.com/matklad/once_cell) | dependencies | minor | `1.7.2` -> `1.17.0` | | [predicates](https://togithub.com/assert-rs/predicates-rs) | dev-dependencies | patch | `2.1.1` -> `2.1.5` | | [rand](https://rust-random.github.io/book) ([source](https://togithub.com/rust-random/rand)) | dev-dependencies | patch | `0.8.0` -> `0.8.5` | | [reqwest](https://togithub.com/seanmonstar/reqwest) | dependencies | patch | `0.11.10` -> `0.11.14` | | [reqwest](https://togithub.com/seanmonstar/reqwest) | dependencies | patch | `0.11.13` -> `0.11.14` | | [rusb](https://togithub.com/a1ien/rusb) | dependencies | patch | `0.9.0` -> `0.9.1` | | [rustyline](https://togithub.com/kkawakam/rustyline) | dependencies | minor | `10.0.0` -> `10.1.1` | | [sentry](https://sentry.io/welcome/) ([source](https://togithub.com/getsentry/sentry-rust)) | dependencies | patch | `0.29.0` -> `0.29.2` | | [serde](https://serde.rs) ([source](https://togithub.com/serde-rs/serde)) | dependencies | patch | `1.0.147` -> `1.0.152` | | [serde_json](https://togithub.com/serde-rs/json) | dev-dependencies | patch | `1.0.47` -> `1.0.91` | | [serde_yaml](https://togithub.com/dtolnay/serde-yaml) | build-dependencies | patch | `0.9.4` -> `0.9.17` | | [svd-parser](https://togithub.com/rust-embedded/svd) | dependencies | patch | `0.14.0` -> `0.14.1` | | [terminal_size](https://togithub.com/eminence/terminal-size) | dependencies | patch | `0.2.0` -> `0.2.3` | | [zip](https://togithub.com/zip-rs/zip) | dependencies | patch | `0.6.2` -> `0.6.3` | --- ### Release Notes <details> <summary>dtolnay/anyhow</summary> ### [`v1.0.68`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.68) [Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.67...1.0.68) - Opt out of `-Zrustdoc-scrape-examples` on docs.rs for now ### [`v1.0.67`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.67) [Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.66...1.0.67) - Improve the backtrace captured when `context()` is used on an `Option` ([#​280](https://togithub.com/dtolnay/anyhow/issues/280)) ### [`v1.0.66`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.66) [Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.65...1.0.66) - Reduce unhelpful backtrace frames in backtraces captured during a `context` call ([#​279](https://togithub.com/dtolnay/anyhow/issues/279)) ### [`v1.0.65`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.65) [Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.64...1.0.65) - <code>impl <a href="https://doc.rust-lang.org/std/any/trait.Provider.html">Provider</a> for anyhow::Error</code> ### [`v1.0.64`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.64) [Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.63...1.0.64) - Correctly propagate Backtrace when using `#[source] anyhow::Error` with [thiserror](https://togithub.com/dtolnay/thiserror) crate ([#​231](https://togithub.com/dtolnay/anyhow/issues/231)) ### [`v1.0.63`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.63) [Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.62...1.0.63) - Expose backtraces via the new "generic member access" API on the Error trait ([https://github.com/rust-lang/rust/issues/99301](https://togithub.com/rust-lang/rust/issues/99301), [https://github.com/rust-lang/rust/issues/96024](https://togithub.com/rust-lang/rust/issues/96024)) ### [`v1.0.62`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.62) [Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.61...1.0.62) - Fix extra rebuilding when interleaving command-line `cargo` invocations with IDE builds ([#​261](https://togithub.com/dtolnay/anyhow/issues/261)) ### [`v1.0.61`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.61) [Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.60...1.0.61) - Work around rust-analyzer builds poisoning all subsequent command-line cargo builds ([#​252](https://togithub.com/dtolnay/anyhow/issues/252)) ### [`v1.0.60`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.60) [Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.59...1.0.60) - Propagate `--target` to rustc invocation when deciding about backtrace support ([#​249](https://togithub.com/dtolnay/anyhow/issues/249), thanks [@​RalfJung](https://togithub.com/RalfJung)) ### [`v1.0.59`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.59) [Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.58...1.0.59) - Update crates.io metadata to include `no-std` category ### [`v1.0.58`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.58) [Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.57...1.0.58) - Fix some broken links in documentation </details> <details> <summary>assert-rs/assert_cmd</summary> ### [`v2.0.8`](https://togithub.com/assert-rs/assert_cmd/blob/HEAD/CHANGELOG.md#​208---2023-01-09) [Compare Source](https://togithub.com/assert-rs/assert_cmd/compare/v2.0.7...v2.0.8) ##### Features - Make binary data easier to read by resolving newlines ### [`v2.0.7`](https://togithub.com/assert-rs/assert_cmd/blob/HEAD/CHANGELOG.md#​207---2022-12-02) [Compare Source](https://togithub.com/assert-rs/assert_cmd/compare/v2.0.6...v2.0.7) ### [`v2.0.6`](https://togithub.com/assert-rs/assert_cmd/blob/HEAD/CHANGELOG.md#​206---2022-11-04) [Compare Source](https://togithub.com/assert-rs/assert_cmd/compare/v2.0.5...v2.0.6) ##### Fixes - Hide internal-only optional dependencies ### [`v2.0.5`](https://togithub.com/assert-rs/assert_cmd/blob/HEAD/CHANGELOG.md#​205---2022-10-20) [Compare Source](https://togithub.com/assert-rs/assert_cmd/compare/v2.0.4...v2.0.5) ##### Features - Added `AssertError::assert` </details> <details> <summary>assert-rs/assert_fs</summary> ### [`v1.0.10`](https://togithub.com/assert-rs/assert_fs/blob/HEAD/CHANGELOG.md#​1010---2022-12-02) [Compare Source](https://togithub.com/assert-rs/assert_fs/compare/v1.0.9...v1.0.10) ### [`v1.0.9`](https://togithub.com/assert-rs/assert_fs/blob/HEAD/CHANGELOG.md#​109---2022-11-07) [Compare Source](https://togithub.com/assert-rs/assert_fs/compare/v1.0.8...v1.0.9) ##### Fixes - Add `Debug` impls for temp dir / file ### [`v1.0.8`](https://togithub.com/assert-rs/assert_fs/blob/HEAD/CHANGELOG.md#​108---2022-11-04) [Compare Source](https://togithub.com/assert-rs/assert_fs/compare/v1.0.7...v1.0.8) ##### Fixes - Hide internal-only optional dependencies </details> <details> <summary>bincode-org/bincode</summary> ### [`v1.3.3`](https://togithub.com/bincode-org/bincode/releases/tag/v1.3.3) [Compare Source](https://togithub.com/bincode-org/bincode/compare/v1.3.2...v1.3.3) - Removed `byteorder` as a dependency </details> <details> <summary>magiclen/byte-unit</summary> ### [`v4.0.18`](https://togithub.com/magiclen/byte-unit/compare/v4.0.17...v4.0.18) [Compare Source](https://togithub.com/magiclen/byte-unit/compare/v4.0.17...v4.0.18) ### [`v4.0.17`](https://togithub.com/magiclen/byte-unit/compare/v4.0.16...v4.0.17) [Compare Source](https://togithub.com/magiclen/byte-unit/compare/v4.0.16...v4.0.17) ### [`v4.0.16`](https://togithub.com/magiclen/byte-unit/compare/v4.0.15...v4.0.16) [Compare Source](https://togithub.com/magiclen/byte-unit/compare/v4.0.15...v4.0.16) ### [`v4.0.15`](https://togithub.com/magiclen/byte-unit/compare/v4.0.14...v4.0.15) [Compare Source](https://togithub.com/magiclen/byte-unit/compare/v4.0.14...v4.0.15) ### [`v4.0.14`](https://togithub.com/magiclen/byte-unit/compare/v4.0.13...v4.0.14) [Compare Source](https://togithub.com/magiclen/byte-unit/compare/v4.0.13...v4.0.14) </details> <details> <summary>oli-obk/cargo_metadata</summary> ### [`v0.15.3`](https://togithub.com/oli-obk/cargo_metadata/compare/v0.15.2...0.15.3) [Compare Source](https://togithub.com/oli-obk/cargo_metadata/compare/v0.15.2...0.15.3) ### [`v0.15.2`](https://togithub.com/oli-obk/cargo_metadata/compare/v0.15.1...v0.15.2) [Compare Source](https://togithub.com/oli-obk/cargo_metadata/compare/v0.15.1...v0.15.2) ### [`v0.15.1`](https://togithub.com/oli-obk/cargo_metadata/compare/v0.15.0...v0.15.1) [Compare Source](https://togithub.com/oli-obk/cargo_metadata/compare/v0.15.0...v0.15.1) </details> <details> <summary>cardoe/enum-primitive-derive</summary> ### [`v0.2.2`](https://gitlab.com/cardoe/enum-primitive-derive/blob/HEAD/CHANGELOG.md#​022) [Compare Source](https://gitlab.com/cardoe/enum-primitive-derive/compare/v0.2.1...v0.2.2) ##### Changed - Switch to using core instead of std for no-std support </details> <details> <summary>daniel5151/gdbstub</summary> ### [`v0.6.3`](https://togithub.com/daniel5151/gdbstub/blob/HEAD/CHANGELOG.md#​063) [Compare Source](https://togithub.com/daniel5151/gdbstub/compare/0.6.2...0.6.3) ##### New Features - `SingleRegisterAccess`: Support reporting unavailable regs [#​107](https://togithub.com/daniel5151/gdbstub/pull/107) ([ptosi](https://togithub.com/ptosi)) </details> <details> <summary>gimli-rs/gimli</summary> ### [`v0.27.1`](https://togithub.com/gimli-rs/gimli/blob/HEAD/CHANGELOG.md#​0271) [Compare Source](https://togithub.com/gimli-rs/gimli/compare/0.27.0...0.27.1) Released 2023/01/23. ##### Added - Added `SectionId::xcoff_name` and `read::Section::xcoff_section_name`. [#​635](https://togithub.com/gimli-rs/gimli/pull/635) - Added `read::Dwarf::make_dwo` and `read::Unit::dwo_name`. [#​637](https://togithub.com/gimli-rs/gimli/pull/637) ##### Changed - Changed `read::DwarfPackage::sections` to handle supplementary files. [#​638](https://togithub.com/gimli-rs/gimli/pull/638) *** </details> <details> <summary>console-rs/indicatif</summary> ### [`v0.17.3`](https://togithub.com/console-rs/indicatif/releases/tag/0.17.3) [Compare Source](https://togithub.com/console-rs/indicatif/compare/0.17.2...0.17.3) A small maintenance release: - address a bunch of lints by [@​danieleades](https://togithub.com/danieleades) in [https://github.com/console-rs/indicatif/pull/498](https://togithub.com/console-rs/indicatif/pull/498) - Remove `"fs"` feature in tokio dependency. by [@​azriel91](https://togithub.com/azriel91) in [https://github.com/console-rs/indicatif/pull/504](https://togithub.com/console-rs/indicatif/pull/504) - Update estimate when using a steady ticker by [@​aawsome](https://togithub.com/aawsome) in [https://github.com/console-rs/indicatif/pull/495](https://togithub.com/console-rs/indicatif/pull/495) - Refactoring and internal improvements **Full Changelog**: https://github.com/console-rs/indicatif/compare/0.17.2...0.17.3 ### [`v0.17.2`](https://togithub.com/console-rs/indicatif/releases/tag/0.17.2) [Compare Source](https://togithub.com/console-rs/indicatif/compare/0.17.1...0.17.2) A small maintenance release which makes indicatif more portable and fixes some minor regressions. - Use portable-atomic to fix build on some 32-bit platforms ([#​484](https://togithub.com/console-rs/indicatif/issues/484), thanks to [@​messense](https://togithub.com/messense)) - Implement multi-line progress message support ([#​443](https://togithub.com/console-rs/indicatif/issues/443), thanks to [@​happenslol](https://togithub.com/happenslol)) - Reset estimator of progress rate on backwards movement ([#​483](https://togithub.com/console-rs/indicatif/issues/483), thanks to [@​rlee287](https://togithub.com/rlee287)) - Fix percent initial value when there is no length ([#​491](https://togithub.com/console-rs/indicatif/issues/491), thanks to [@​devmatteini](https://togithub.com/devmatteini)) - Bumped the MSRV to 1.56 ([#​482](https://togithub.com/console-rs/indicatif/issues/482)) On behalf of [@​djc](https://togithub.com/djc) and [@​chris-laplante](https://togithub.com/chris-laplante), thanks to all contributors! ### [`v0.17.1`](https://togithub.com/console-rs/indicatif/releases/tag/0.17.1) [Compare Source](https://togithub.com/console-rs/indicatif/compare/0.17.0...0.17.1) 2.5 months after the large 0.17 release, we (finally) have a release that addresses most of the regressions found in 0.17. There is ongoing work on changes in the estimation algorithm, tracked in [#​394](https://togithub.com/console-rs/indicatif/issues/394), which has regressed for some users. Note that we made some technically semver-breaking change of adding a missing `Sync` bound to the `ProgressTracker` bounds ([#​471](https://togithub.com/console-rs/indicatif/issues/471)). We're assuming that most users don't (yet) have custom `ProgressTracker` impls, and that users who do have probably built one that is `Sync` anyway. #### Fixed regressions - Fixed `unicode-width` feature spelling ([#​456](https://togithub.com/console-rs/indicatif/issues/456)) - Only tick if the ticker is disabled ([#​458](https://togithub.com/console-rs/indicatif/issues/458)) - Rework `MultiProgress` zombie line handling ([#​460](https://togithub.com/console-rs/indicatif/issues/460)) - Fix incorrect link in documentation ([#​469](https://togithub.com/console-rs/indicatif/issues/469), thanks to [@​Jedsek](https://togithub.com/Jedsek)) - Take a reference for `ProgressBar::style()` ([#​476](https://togithub.com/console-rs/indicatif/issues/476), thanks to [@​andrewchambers](https://togithub.com/andrewchambers)) #### Other changes - Add `HumanFloatCount` formatting option ([#​453](https://togithub.com/console-rs/indicatif/issues/453), thanks to [@​jqnatividad](https://togithub.com/jqnatividad)) - Add `Sync` bound to `ProgressTracker` ([#​471](https://togithub.com/console-rs/indicatif/issues/471)) - Update ProgressDrawTarget documentation ([#​472](https://togithub.com/console-rs/indicatif/issues/472), thanks to [@​AronParker](https://togithub.com/AronParker)) - Correct mis-naming of variables in wrap_async_read ([#​473](https://togithub.com/console-rs/indicatif/issues/473), thanks to [@​octylFractal](https://togithub.com/octylFractal)) - Remove `write_all()` impl from `ProgressBarIter`'s `Write` impl ([#​478](https://togithub.com/console-rs/indicatif/issues/478), thanks to [@​hexagonal-sun](https://togithub.com/hexagonal-sun)) - Document last char/string in tick style being the "final" state ([#​479](https://togithub.com/console-rs/indicatif/issues/479), thanks to [@​MarijnS95](https://togithub.com/MarijnS95)) Thanks from [@​djc](https://togithub.com/djc) and [@​chris-laplante](https://togithub.com/chris-laplante) to all contributors! </details> <details> <summary>mitsuhiko/insta</summary> ### [`v1.26.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1260) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.24.1...1.26.0) - Make canonicalization in `glob!` optional to better support WASI. ### [`v1.24.1`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1241) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.24.0...1.24.1) - Fix non working `--include-hidden` flag ([#​331](https://togithub.com/mitsuhiko/insta/issues/331)) - Fix incorrect mapping of `review.include_ignored` ([#​330](https://togithub.com/mitsuhiko/insta/issues/330)) ### [`v1.24.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1240) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.23.0...1.24.0) - Added an insta tool config (`.config/insta.yaml`) to change the behavior of insta and cargo-insta. ([#​322](https://togithub.com/mitsuhiko/insta/issues/322)) - Renamed `--no-ignore` to `--include-ignored`. - Added `--include-hidden` to instruct insta to also walk into hidden paths. - Added new `--unreferenced` option to `cargo-insta test` which allows fine tuning of what should happen with unreferenced files. It's now possible to ignore (default), warn, reject or delete unreferenced snapshots. ([#​328](https://togithub.com/mitsuhiko/insta/issues/328)) - Resolved an error message about doc tests when using nextest with test targeting. ([#​317](https://togithub.com/mitsuhiko/insta/issues/317)) ### [`v1.23.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1230) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.22.0...1.23.0) - Add a hint if snapshots might be skipped. ([#​314](https://togithub.com/mitsuhiko/insta/issues/314)) - Avoid extra newline in YAML snapshots. ([#​311](https://togithub.com/mitsuhiko/insta/issues/311)) ### [`v1.22.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1220) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.21.2...1.22.0) - Added support for rendering some invisibles in diffs. This now also should make sure that ANSI sequences in strings are no longer screwing up the terminal output. ([#​308](https://togithub.com/mitsuhiko/insta/issues/308)) - Prevent inline snapshots to be used in loops. ([#​307](https://togithub.com/mitsuhiko/insta/issues/307)) - Support the `--target` option to `cargo insta test`. ([#​309](https://togithub.com/mitsuhiko/insta/issues/309)) - Globbing now adds directories as disambiguators into the snapshot suffixes. This allows patterns such as `foo/*/*.txt` without creating conflicts. ([#​310](https://togithub.com/mitsuhiko/insta/issues/310)) ### [`v1.21.2`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1212) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.21.1...1.21.2) - Added missing parameters to `cargo insta test`. ([#​305](https://togithub.com/mitsuhiko/insta/issues/305)) - Fixed a sorting issue in hash maps for compound keys. ([#​304](https://togithub.com/mitsuhiko/insta/issues/304)) ### [`v1.21.1`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1211) - Fix incorrect handling of extra args to `cargo insta test`. ### [`v1.21.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1210) - Fixed an issue that broke support for older rust versions. ([#​292](https://togithub.com/mitsuhiko/insta/issues/292)) - Added `cargo insta show` command to render a snapshot. - Added support for compact JSON snapshots. ([#​288](https://togithub.com/mitsuhiko/insta/issues/288)) ### [`v1.20.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1200) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.19.1...1.20.0) - `cargo insta` now supports nextest as test runner. ([#​285](https://togithub.com/mitsuhiko/insta/issues/285)) - The `glob!` macro now defers failures by default. ([#​284](https://togithub.com/mitsuhiko/insta/issues/284)) ### [`v1.19.1`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1191) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.19.0...1.19.1) - Added support for numeric keys in JSON which regressed in 0.18.0. ([#​281](https://togithub.com/mitsuhiko/insta/issues/281)) ### [`v1.19.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1190) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.18.2...1.19.0) - Removed `backtrace` feature. - Removed `serialization` feature. - `assert_json_snapshot!` and `assert_yaml_snapshot!` now require the `json` and `yaml` feature respectively. - Doctests now emit a warning that inline snapshot updating is not supported ([#​272](https://togithub.com/mitsuhiko/insta/issues/272)) - Added support for `INSTA_GLOB_FILTER` to skip over tests expanded from a glob. ([#​274](https://togithub.com/mitsuhiko/insta/issues/274)) ### [`v1.18.2`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1182) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.18.1...1.18.2) - Avoid the use of `#[allow(unused)]` in the macro. ([#​271](https://togithub.com/mitsuhiko/insta/issues/271)) ### [`v1.18.1`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1181) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.18.0...1.18.1) - Fixed a regression in the JSON serialization format with newtypes and tuple variants. ([#​270](https://togithub.com/mitsuhiko/insta/issues/270)) ### [`v1.18.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1180) - `Settings::bind` now can return a result. - Expose the drop guard type of `bind_to_scope`. - The `serde` dependency is now optional. While still enabled by default users need to opt into `yaml` and `json` features explicitly to regain support for it. To avoid the default `serde` dependency the default features just need to be disabled. ([#​255](https://togithub.com/mitsuhiko/insta/issues/255)) - Deprecated unused `serialization` features. - Deprecated unused `backtrace` feature. - Removed deprecated `Settings::bind_to_thread`. **Breaking Changes / Upgrading:** If you are upgrading to serde 1.18.0 you will receive deprecating warnings if you are using the `assert_yaml_snapshot!` and `assert_json_snapshot!` macros. These macros will continue to function in the future but they will require explicit opting into the `yaml` and `json` features. To silence the warning add them to your `insta` dependency. Additionally the `backtrace` feature was deprecated. It is no longer needed so just remove it. ### [`v1.17.2`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1172) - Remove an accidentaly debug print output. ### [`v1.17.1`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1171) - Added support for nextest. ([#​242](https://togithub.com/mitsuhiko/insta/issues/242)) - Resolved an issue where inline snapshot tests in doctests refused to work. ([#​252](https://togithub.com/mitsuhiko/insta/issues/252)) ### [`v1.17.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1170) - Fixed an issue in `cargo-insta` where sometimes accepting inline snapshots would crash with an out of bounds panic. - Added new `filters` feature. ([#​245](https://togithub.com/mitsuhiko/insta/issues/245)) - Disallow unnamed snapshots in doctests. ([#​246](https://togithub.com/mitsuhiko/insta/issues/246)) - `with_settings!` macro now inherits the former settings rather than resetting. ([#​249](https://togithub.com/mitsuhiko/insta/issues/249)) - Added support for `Settings::bind_to_scope` and deprecated `Settings::bind_to_thread`. ([#​250](https://togithub.com/mitsuhiko/insta/issues/250)) - Added support for `minimal-versions` builds. ### [`v1.16.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1160) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.15.0...1.16.0) - Added `--no-quiet`/`-Q` flag to `cargo insta test` to suppress the quiet flag. This works around limitations with custom test harnesses such as cucumber. - Update RON to 0.7.1. - Improved ergonomics around `with_settings!`. It's now a perfect match to the settings object's setter methods. - Added `description` and `info` to snapshots. ([#​239](https://togithub.com/mitsuhiko/insta/issues/239)) - Added `omit_expression` setting. ([#​239](https://togithub.com/mitsuhiko/insta/issues/239)) - Added improved support for running insta from doctests. ([#​243](https://togithub.com/mitsuhiko/insta/issues/243)) ### [`v1.15.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1150) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.14.1...1.15.0) - Bump minimum version of Rust to 1.56.1. This was done because the used serde-yaml dependency no longer supports older versions of Rust. ### [`v1.14.1`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1141) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.14.0...1.14.1) - Update uuid crate to 1.0.0. ([#​228](https://togithub.com/mitsuhiko/insta/issues/228)) - Use inline block format also for strings of form `"foo\n"`. ([#​225](https://togithub.com/mitsuhiko/insta/issues/225)) ### [`v1.14.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1140) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.13.0...1.14.0) - Fixed a bug that caused insta to panic if inline snapshot assertions moved since the time of the snapshot creation. ([#​220](https://togithub.com/mitsuhiko/insta/issues/220)) - `cargo insta test` now returns non zero status code when snapshots are left for review. ([#​222](https://togithub.com/mitsuhiko/insta/issues/222)) - Assertion failures now mention `cargo insta test`. ([#​223](https://togithub.com/mitsuhiko/insta/issues/223)) ### [`v1.13.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1130) - Fixed a bug where an extra newline was emitted following the snapshot header. - `assertion_line` is no longer retained in snapshots. ([#​218](https://togithub.com/mitsuhiko/insta/issues/218)) ### [`v1.12.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1120) - Add support for sorting redactions (`sorted_redaction` and `Settings::sort_selector`). ([#​212](https://togithub.com/mitsuhiko/insta/issues/212)) - Changed snapshot name detection to no longer use thread names but function names. ([#​213](https://togithub.com/mitsuhiko/insta/issues/213)) **Upgrade Notes:** Insta used to detect the current test name by using the current thread name. This appeared to work well but unfortunately ran into various limitations. In particular in some cases the thread name was truncated, missing or did not point to the current test name. To better support different platforms and situations insta now uses the function name instead. This however changes behavior. In particular if you are using a helper function to assert, a different snapshot name will now be used. You can work around this issue by using a helper macro instead or to explicitly pass a snapshot name in such situations. ### [`v1.11.0`](https://togithub.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#​1110) [Compare Source](https://togithub.com/mitsuhiko/insta/compare/1.10.0...1.11.0) - Trim down some unnecessary dependencies and switch to `once_cell`. ([#​208](https://togithub.com/mitsuhiko/insta/issues/208)) </details> <details> <summary>rust-itertools/itertools</summary> ### [`v0.10.5`](https://togithub.com/rust-itertools/itertools/blob/HEAD/CHANGELOG.md#​0105) - Maintenance ### [`v0.10.4`](https://togithub.com/rust-itertools/itertools/blob/HEAD/CHANGELOG.md#​0104) [Compare Source](https://togithub.com/rust-itertools/itertools/compare/v0.10.3...v0.10.4) - Add `EitherOrBoth::or` and `EitherOrBoth::or_else` ([#​593](https://togithub.com/rust-itertools/itertools/issues/593)) - Add `min_set`, `max_set` et al. ([#​613](https://togithub.com/rust-itertools/itertools/issues/613), [#​323](https://togithub.com/rust-itertools/itertools/issues/323)) - Use `either/use_std` ([#​628](https://togithub.com/rust-itertools/itertools/issues/628)) - Documentation fixes ([#​612](https://togithub.com/rust-itertools/itertools/issues/612), [#​625](https://togithub.com/rust-itertools/itertools/issues/625), [#​632](https://togithub.com/rust-itertools/itertools/issues/632), [#​633](https://togithub.com/rust-itertools/itertools/issues/633), [#​634](https://togithub.com/rust-itertools/itertools/issues/634), [#​638](https://togithub.com/rust-itertools/itertools/issues/638)) - Code maintenance ([#​623](https://togithub.com/rust-itertools/itertools/issues/623), [#​624](https://togithub.com/rust-itertools/itertools/issues/624), [#​627](https://togithub.com/rust-itertools/itertools/issues/627), [#​630](https://togithub.com/rust-itertools/itertools/issues/630)) </details> <details> <summary>Yatekii/jep106</summary> ### [`v0.2.8`](https://togithub.com/Yatekii/jep106/releases/tag/v0.2.8): 0.2.8 [Compare Source](https://togithub.com/Yatekii/jep106/compare/v0.2.7...v0.2.8) - Fix possible out-of-bounds access, which would have led to a panic. ### [`v0.2.7`](https://togithub.com/Yatekii/jep106/releases/tag/v0.2.7): 0.2.7 [Compare Source](https://togithub.com/Yatekii/jep106/compare/v0.2.6...v0.2.7) - Updated codes to version JEP106BE, from January 2022. </details> <details> <summary>rust-lang/log</summary> ### [`v0.4.17`](https://togithub.com/rust-lang/log/blob/HEAD/CHANGELOG.md#​0417---2022-04-29) - Update `kv_unstable` internal dependencies. </details> <details> <summary>rust-num/num-traits</summary> ### [`v0.2.15`](https://togithub.com/rust-num/num-traits/blob/HEAD/RELEASES.md#Release-0215-2022-05-02) [Compare Source](https://togithub.com/rust-num/num-traits/compare/num-traits-0.2.14...num-traits-0.2.15) - [The new `Euclid` trait calculates Euclidean division][195], where the remainder is always positive or zero. - [The new `LowerBounded` and `UpperBounded` traits][210] separately describe types with lower and upper bounds. These traits are automatically implemented for all fully-`Bounded` types. - [The new `Float::copysign` method copies the sign of the argument][207] to to the magnitude of `self`. - [The new `PrimInt::leading_ones` and `trailing_ones` methods][205] are the complement of the existing methods that count zero bits. - [The new `PrimInt::reverse_bits` method reverses the order of all bits][202] of a primitive integer. - [Improved `Num::from_str_radix` for floats][201], also [ignoring case][214]. - [`Float` and `FloatCore` use more from `libm`][196] when that is enabled. **Contributors**: [@​alion02](https://togithub.com/alion02), [@​clarfonthey](https://togithub.com/clarfonthey), [@​cuviper](https://togithub.com/cuviper), [@​ElectronicRU](https://togithub.com/ElectronicRU), [@​ibraheemdev](https://togithub.com/ibraheemdev), [@​SparrowLii](https://togithub.com/SparrowLii), [@​sshilovsky](https://togithub.com/sshilovsky), [@​tspiteri](https://togithub.com/tspiteri), [@​XAMPPRocky](https://togithub.com/XAMPPRocky), [@​Xiretza](https://togithub.com/Xiretza) [195]: https://togithub.com/rust-num/num-traits/pull/195 [196]: https://togithub.com/rust-num/num-traits/pull/196 [201]: https://togithub.com/rust-num/num-traits/pull/201 [202]: https://togithub.com/rust-num/num-traits/pull/202 [205]: https://togithub.com/rust-num/num-traits/pull/205 [207]: https://togithub.com/rust-num/num-traits/pull/207 [210]: https://togithub.com/rust-num/num-traits/pull/210 [214]: https://togithub.com/rust-num/num-traits/pull/214 ### [`v0.2.14`](https://togithub.com/rust-num/num-traits/blob/HEAD/RELEASES.md#Release-0214-2020-10-29) [Compare Source](https://togithub.com/rust-num/num-traits/compare/num-traits-0.2.13...num-traits-0.2.14) - Clarify the license specification as "MIT OR Apache-2.0". **Contributors**: [@​cuviper](https://togithub.com/cuviper) ### [`v0.2.13`](https://togithub.com/rust-num/num-traits/blob/HEAD/RELEASES.md#Release-0213-2020-10-29) [Compare Source](https://togithub.com/rust-num/num-traits/compare/num-traits-0.2.12...num-traits-0.2.13) - [The new `OverflowingAdd`, `OverflowingSub`, and `OverflowingMul` traits][180] return a tuple with the operation result and a `bool` indicating overflow. - [The "i128" feature now overrides compiler probes for that support][185]. This may fix scenarios where `autocfg` probing doesn't work properly. - [Casts from large `f64` values to `f32` now saturate to infinity][186]. They previously returned `None` because that was once thought to be undefined behavior, but [rust#​15536] resolved that such casts are fine. - [`Num::from_str_radix` documents requirements for radix support][192], which are now more relaxed than previously implied. It is suggested to accept at least `2..=36` without panicking, but `Err` may be returned otherwise. **Contributors**: [@​cuviper](https://togithub.com/cuviper), [@​Enet4](https://togithub.com/Enet4), [@​KaczuH](https://togithub.com/KaczuH), [@​martin-t](https://togithub.com/martin-t), [@​newpavlov](https://togithub.com/newpavlov) [180]: https://togithub.com/rust-num/num-traits/pull/180 [185]: https://togithub.com/rust-num/num-traits/pull/185 [186]: https://togithub.com/rust-num/num-traits/pull/186 [192]: https://togithub.com/rust-num/num-traits/issues/192 [rust#​15536]: https://togithub.com/rust-lang/rust/issues/15536 ### [`v0.2.12`](https://togithub.com/rust-num/num-traits/blob/HEAD/RELEASES.md#Release-0212-2020-06-11) [Compare Source](https://togithub.com/rust-num/num-traits/compare/num-traits-0.2.11...num-traits-0.2.12) - [The new `WrappingNeg` trait][153] will wrap the result if it exceeds the boundary of the type, e.g. `i32::MIN.wrapping_neg() == i32::MIN`. - [The new `SaturatingAdd`, `SaturatingSub`, and `SaturatingMul` traits][165] will saturate at the numeric bounds if the operation would overflow. These soft-deprecate the existing `Saturating` trait that only has addition and subtraction methods. - [Added new constants for logarithms, `FloatConst::{LOG10_2, LOG2_10}`][171]. **Contributors**: [@​cuviper](https://togithub.com/cuviper), [@​ocstl](https://togithub.com/ocstl), [@​trepetti](https://togithub.com/trepetti), [@​vallentin](https://togithub.com/vallentin) [153]: https://togithub.com/rust-num/num-traits/pull/153 [165]: https://togithub.com/rust-num/num-traits/pull/165 [171]: https://togithub.com/rust-num/num-traits/pull/171 </details> <details> <summary>gimli-rs/object</summary> ### [`v0.30.3`](https://togithub.com/gimli-rs/object/blob/HEAD/CHANGELOG.md#​0303) [Compare Source](https://togithub.com/gimli-rs/object/compare/0.30.2...0.30.3) Released 2023/01/23. ##### Added - Added `SectionKind::ReadOnlyDataWithRel` for writing. [#​504](https://togithub.com/gimli-rs/object/pull/504) *** ### [`v0.30.2`](https://togithub.com/gimli-rs/object/blob/HEAD/CHANGELOG.md#​0302) [Compare Source](https://togithub.com/gimli-rs/object/compare/0.30.1...0.30.2) Released 2023/01/11. ##### Added - Added more ELF constants for AVR flags and relocations. [#​500](https://togithub.com/gimli-rs/object/pull/500) *** ### [`v0.30.1`](https://togithub.com/gimli-rs/object/blob/HEAD/CHANGELOG.md#​0301) [Compare Source](https://togithub.com/gimli-rs/object/compare/0.30.0...0.30.1) Released 2023/01/04. ##### Changed - Changed `read::ElfSymbol::kind` to handle `STT_NOTYPE` and `STT_GNU_IFUNC`. [#​498](https://togithub.com/gimli-rs/object/pull/498) ##### Added - Added `read::CoffSymbol::raw_symbol`. [#​494](https://togithub.com/gimli-rs/object/pull/494) - Added ELF support for Solana Binary Format. [#​491](https://togithub.com/gimli-rs/object/pull/491) - Added ELF support for AArch64 ILP32. [#​497](https://togithub.com/gimli-rs/object/pull/497) *** </details> <details> <summary>matklad/once_cell</summary> ### [`v1.17.0`](https://togithub.com/matklad/once_cell/blob/HEAD/CHANGELOG.md#​1170) [Compare Source](https://togithub.com/matklad/once_cell/compare/v1.16.0...v1.17.0) - Add `race::OnceRef` for storing a `&'a T`. ### [`v1.16.0`](https://togithub.com/matklad/once_cell/blob/HEAD/CHANGELOG.md#​1160) [Compare Source](https://togithub.com/matklad/once_cell/compare/v1.15.0...v1.16.0) - Add `no_std` implementation based on `critical-section`, [#​195](https://togithub.com/matklad/once_cell/pull/195). - Deprecate `atomic-polyfill` feature (use the new `critical-section` instead) ### [`v1.15.0`](https://togithub.com/matklad/once_cell/blob/HEAD/CHANGELOG.md#​1150) [Compare Source](https://togithub.com/matklad/once_cell/compare/v1.14.0...v1.15.0) - Increase minimal supported Rust version to 1.56.0. - Implement `UnwindSafe` even if the `std` feature is disabled. ### [`v1.14.0`](https://togithub.com/matklad/once_cell/blob/HEAD/CHANGELOG.md#​1140) [Compare Source](https://togithub.com/matklad/once_cell/compare/v1.13.1...v1.14.0) - Add extension to `unsync` and `sync` `Lazy` mut API: - `force_mut` - `get_mut` ### [`v1.13.1`](https://togithub.com/matklad/once_cell/blob/HEAD/CHANGELOG.md#​1131) [Compare Source](https://togithub.com/matklad/once_cell/compare/v1.13.0...v1.13.1) - Make implementation compliant with [strict provenance](https://togithub.com/rust-lang/rust/issues/95228). - Upgrade `atomic-polyfill` to `1.0` ### [`v1.13.0`](https://togithub.com/matklad/once_cell/blob/HEAD/CHANGELOG.md#​1130) [Compare Source](https://togithub.com/matklad/once_cell/compare/v1.12.1...v1.13.0) - Add `Lazy::get`, similar to `OnceCell::get`. ### [`v1.12.1`](https://togithub.com/matklad/once_cell/blob/HEAD/CHANGELOG.md#​1121) [Compare Source](https://togithub.com/matklad/once_cell/compare/v1.12.0...v1.12.1) - Remove incorrect `debug_assert`. ### [`v1.12.0`](https://togithub.com/matklad/once_cell/blob/HEAD/CHANGELOG.md#​1120) [Compare Source](https://togithub.com/matklad/once_cell/compare/v1.11.0...v1.12.0) - Add `OnceCell::wait`, a blocking variant of `get`. ### [`v1.11.0`](https://togithub.com/matklad/once_cell/blob/HEAD/CHANGELOG.md#​1110) [Compare Source](https://togithub.com/matklad/once_cell/compare/v1.10.0...v1.11.0) - Add `OnceCell::with_value` to create initialized `OnceCell` in `const` context. - Improve `Clone` implementation for `OnceCell`. - Rewrite `parking_lot` version on top of `parking_lot_core`, for even smaller cells! ### [`v1.10.0`](https://togithub.com/matklad/once_cell/blob/HEAD/CHANGELOG.md#​1100) [Compare Source](https://togithub.com/matklad/once_cell/compare/v1.9.0...v1.10.0) - upgrade `parking_lot` to `0.12.0` (note that this bumps MSRV with `parking_lot` feature enabled to `1.49.0`). ### [`v1.9.0`](https://togithub.com/matklad/once_cell/blob/HEAD/CHANGELOG.md#​190) [Compare Source](https://togithub.com/matklad/once_cell/compare/v1.8.0...v1.9.0) - Added an `atomic-polyfill` optional dependency to compile `race` on platforms without atomics ### [`v1.8.0`](https://togithub.com/matklad/once_cell/blob/HEAD/CHANGELOG.md#​180) [Compare Source](https://togithub.com/matklad/once_cell/compare/v1.7.2...v1.8.0) - Add `try_insert` API -- a version of `set` that returns a reference. </details> <details> <summary>assert-rs/predicates-rs</summary> ### [`v2.1.5`](https://togithub.com/assert-rs/predicates-rs/blob/HEAD/CHANGELOG.md#​215---2022-12-29) [Compare Source](https://togithub.com/assert-rs/predicates-rs/compare/v2.1.4...v2.1.5) ##### Gixes - Further generalized borrowing of predicates with `Borrow` trait ### [`v2.1.4`](https://togithub.com/assert-rs/predicates-rs/blob/HEAD/CHANGELOG.md#​214---2022-12-02) [Compare Source](https://togithub.com/assert-rs/predicates-rs/compare/v2.1.3...v2.1.4) ### [`v2.1.3`](https://togithub.com/assert-rs/predicates-rs/blob/HEAD/CHANGELOG.md#​213---2022-11-13) [Compare Source](https://togithub.com/assert-rs/predicates-rs/compare/v2.1.2...v2.1.3) ### [`v2.1.2`](https://togithub.com/assert-rs/predicates-rs/blob/HEAD/CHANGELOG.md#​212---2022-11-05) [Compare Source](https://togithub.com/assert-rs/predicates-rs/compare/v2.1.1...v2.1.2) ##### Compatibility Update MSRV to 1.60 ##### Fixes - Hide internal-only optional dependencies </details> <details> <summary>rust-random/rand</summary> ### [`v0.8.5`](https://togithub.com/rust-random/rand/blob/HEAD/CHANGELOG.md#​085---2021-08-20) [Compare Source](https://togithub.com/rust-random/rand/compare/0.8.4...0.8.5) ##### Fixes - Fix build on non-32/64-bit architectures ([#​1144](https://togithub.com/rust-random/rand/issues/1144)) - Fix "min_const_gen" feature for `no_std` ([#​1173](https://togithub.com/rust-random/rand/issues/1173)) - Check `libc::pthread_atfork` return value with panic on error ([#​1178](https://togithub.com/rust-random/rand/issues/1178)) - More robust reseeding in case `ReseedingRng` is used from a fork handler ([#​1178](https://togithub.com/rust-random/rand/issues/1178)) - Fix nightly: remove unused `slice_partition_at_index` feature ([#​1215](https://togithub.com/rust-random/rand/issues/1215)) - Fix nightly + `simd_support`: update `packed_simd` ([#​1216](https://togithub.com/rust-random/rand/issues/1216)) ##### Rngs - `StdRng`: Switch from HC128 to ChaCha12 on emscripten ([#​1142](https://togithub.com/rust-random/rand/issues/1142)). We now use ChaCha12 on all platforms. ##### Documentation - Added docs about rand's use of const generics ([#​1150](https://togithub.com/rust-random/rand/issues/1150)) - Better random chars example ([#​1157](https://togithub.com/rust-random/rand/issues/1157)) ### [`v0.8.4`](https://togithub.com/rust-random/rand/blob/HEAD/CHANGELOG.md#​084---2021-06-15) [Compare Source](https://togithub.com/rust-random/rand/compare/0.8.3...0.8.4) ##### Additions - Use const-generics to support arrays of all sizes ([#​1104](https://togithub.com/rust-random/rand/issues/1104)) - Implement `Clone` and `Copy` for `Alphanumeric` ([#​1126](https://togithub.com/rust-random/rand/issues/1126)) - Add `Distribution::map` to derive a distribution using a closure ([#​1129](https://togithub.com/rust-random/rand/issues/1129)) - Add `Slice` distribution ([#​1107](https://togithub.com/rust-random/rand/issues/1107)) - Add `DistString` trait with impls for `Standard` and `Alphanumeric` ([#​1133](https://togithub.com/rust-random/rand/issues/1133)) ##### Other - Reorder asserts in `Uniform` float distributions for easier debugging of non-finite arguments ([#​1094](https://togithub.com/rust-random/rand/issues/1094), [#​1108](https://togithub.com/rust-random/rand/issues/1108)) - Add range overflow check in `Uniform` float distributions ([#​1108](https://togithub.com/rust-random/rand/issues/1108)) - Deprecate `rngs::adapter::ReadRng` ([#​1130](https://togithub.com/rust-random/rand/issues/1130)) ### [`v0.8.3`](https://togithub.com/rust-random/rand/blob/HEAD/CHANGELOG.md#​083---2021-01-25) [Compare Source](https://togithub.com/rust-random/rand/compare/0.8.2...0.8.3) ##### Fixes - Fix `no-std` + `alloc` build by gating `choose_multiple_weighted` on `std` ([#​1088](https://togithub.com/rust-random/rand/issues/1088)) ### [`v0.8.2`](https://togithub.com/rust-random/rand/blob/HEAD/CHANGELOG.md#​082---2021-01-12) [Compare Source](https://togithub.com/rust-random/rand/compare/0.8.1...0.8.2) ##### Fixes - Fix panic in `UniformInt::sample_single_inclusive` and `Rng::gen_range` when providing a full integer range (eg `0..=MAX`) ([#​1087](https://togithub.com/rust-random/rand/issues/1087)) ### [`v0.8.1`](https://togithub.com/rust-random/rand/blob/HEAD/CHANGELOG.md#​081---2020-12-31) [Compare Source](https://togithub.com/rust-random/rand/compare/0.8.0...0.8.1) ##### Other - Enable all stable features in the playground ([#​1081](https://togithub.com/rust-random/rand/issues/1081)) </details> <details> <summary>seanmonstar/reqwest</summary> ### [`v0.11.14`](https://togithub.com/seanmonstar/reqwest/blob/HEAD/CHANGELOG.md#v01114) [Compare Source](https://togithub.com/seanmonstar/reqwest/compare/v0.11.13...v0.11.14) - Adds `Proxy::no_proxy(url)` that works like the NO_PROXY environment variable. - Adds `multipart::Part::headers(headers)` method to add custom headers. - (wasm) Add `Response::bytes_stream()`. - Perf: several internal optimizations reducing copies and memory allocations. ### [`v0.11.13`](https://togithub.com/seanmonstar/reqwest/blob/HEAD/CHANGELOG.md#v01113) [Compare Source](https://togithub.com/seanmonstar/reqwest/compare/v0.11.12...v0.11.13) - Add `ClientBuilder::dns_resolver()` option for custom DNS resolvers. - Add `ClientBuilder::tls_sni(bool)` option to enable or disable TLS Server Name Indication. - Add `Identity::from_pkcs8_pem()` constructor when using `native-tls`. - Fix `redirect::Policy::limited(0)` from following any redirects. ### [`v0.11.12`](https://togithub.com/seanmonstar/reqwest/blob/HEAD/CHANGELOG.md#v01112) [Compare Source](https://togithub.com/seanmonstar/reqwest/compare/v0.11.11...v0.11.12) - Add `ClientBuilder::resolve_to_addrs()` which allows a slice of IP addresses to be specified for a single host. - Add `Response::upgrade()` to await whether the server agrees to an HTTP upgrade. ### [`v0.11.11`](https://togithub.com/seanmonstar/reqwest/blob/HEAD/CHANGELOG.md#v01111) [Compare Source](https://togithub.com/seanmonstar/reqwest/compare/v0.11.10...v0.11.11) - Add HTTP/2 keep-alive configuration methods on `ClientBuilder`. - Add `ClientBuilder::http1_allow_obsolete_multiline_headers_in_responses()`. - Add `impl Service<Request>` for `Client` and `&'_ Client`. - (wasm) Add `RequestBuilder::basic_auth()`. - Fix `RequestBuilder::header` to not override `sensitive` if user explicitly set on a `HeaderValue`. - Fix rustls parsing of elliptic curve private keys. - Fix Proxy URL parsing of some invalid targets. </details> <details> <summary>kkawakam/rustyline</summary> ### [`v10.1.1`](https://togithub.com/kkawakam/rustyline/releases/tag/v10.1.1): 10.1.1 [Compare Source](https://togithub.com/kkawakam/rustyline/compare/v10.1.0...v10.1.1) Rollbacks incompatible changes relative to edition 2018 ([#​671](https://togithub.com/kkawakam/rustyline/issues/671)) **Full Changelog**: https://github.com/kkawakam/rustyline/compare/v10.1.0...v10.1.1 ### [`v10.1.0`](https://togithub.com/kkawakam/rustyline/releases/tag/v10.1.0): 10.1.0 [Compare Source](https://togithub.com/kkawakam/rustyline/compare/v10.0.0...v10.1.0) #### What's Changed - Upgrade nix dependency - Fix ViFirstPrint movement ([#​645](https://togithub.com/kkawakam/rustyline/issues/645)) - Specify that `Editor::iter` ends at EOF (Fix [#​647](https://togithub.com/kkawakam/rustyline/issues/647)) - Optim: do nothing on SIGWINCH if screen size doesn't impact current layout - Upgrade skim dependency **Full Changelog**: https://github.com/kkawakam/rustyline/compare/v10.0.0...v10.1.0 </details> <details> <summary>getsentry/sentry-rust</summary> ### [`v0.29.2`](https://togithub.com/getsentry/sentry-rust/blob/HEAD/CHANGELOG.md#​0292) [Compare Source](https://togithub.com/getsentry/sentry-rust/compare/0.29.1...0.29.2) ##### Various fixes & improvements - fix: Prefer `match_pattern` over `match_name` in actix ([#​539](https://togithub.com/getsentry/sentry-rust/issues/539)) by [@​wuerges](https://togithub.com/wuerges) - feat(profiling): Add profile context to transaction. ([#​538](https://togithub.com/getsentry/sentry-rust/issues/538)) by [@​viglia](https://togithub.com/viglia) - Re-disable scheduled jobs on forks ([#​537](https://togithub.com/getsentry/sentry-rust/issues/537)) by [@​MarijnS95](https://togithub.com/MarijnS95) - fix: Avoid Deadlock popping ScopeGuards out of order ([#​536](https://togithub.com/getsentry/sentry-rust/issues/536)) by [@​Swatinem](https://togithub.com/Swatinem) - sentry-core: make TraceContext publicly readable ([#​534](https://togithub.com/getsentry/sentry-rust/issues/534)) by [@​tommilligan](https://togithub.com/tommilligan) - sentry-core: make TransactionContext.trace_id readable ([#​533](https://togithub.com/getsentry/sentry-rust/issues/533)) by [@​tommilligan](https://togithub.com/tommilligan) - docs: fix outdated `native-tls`/`rustls` info in README ([#​535](https://togithub.com/getsentry/sentry-rust/issues/535)) by [@​seritools](https://togithub.com/seritools) - features: Make `tower-http` enable the `tower` feature ([#​532](https://togithub.com/getsentry/sentry-rust/issues/532)) by [@​Turbo87](https://togithub.com/Turbo87) ### [`v0.29.1`](https://togithub.com/getsentry/sentry-rust/blob/HEAD/CHANGELOG.md#​0291) [Compare Source](https://togithub.com/getsentry/sentry-rust/compare/0.29.0...0.29.1) **Features**: - Users of `TransactionContext` may now add `custom` context to it. This may be used by `traces_sampler` to decide sampling rates on a per-transaction basis. ([#​512](https://togithub.com/getsentry/sentry-rust/pull/512)) **Fixes**: - Correctly strip crates hashes for v0 symbol mangling. ([#​525](https://togithub.com/getsentry/sentry-rust/pull/525)) **Internal**: - Simplify `Hub::run` and `SentryFuture` by using a scope-guard for `Hub` switching. ([#​524](https://togithub.com/getsentry/sentry-rust/pull/524), [#​529](https://togithub.com/getsentry/sentry-rust/pull/529)) **Thank you**: Features, fixes and improvements in this release have been contributed by: - [@​tommilligan](https://togithub.com/tommilligan) </details> <details> <summary>serde-rs/serde</summary> ### [`v1.0.152`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.152) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.151...v1.0.152) - Documentation improvements ### [`v1.0.151`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.151) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.150...v1.0.151) - Update `serde::`{`ser`,`de`}`::StdError` to re-export `core::error::Error` when serde is built with `feature="std"` **off** and `feature="unstable"` **on** ([#​2344](https://togithub.com/serde-rs/serde/issues/2344)) ### [`v1.0.150`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.150) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.149...v1.0.150) - Relax some trait bounds from the `Serialize` impl of `HashMap` and `BTreeMap` ([#​2334](https://togithub.com/serde-rs/serde/issues/2334)) - Enable `Serialize` and `Deserialize` impls of `std::sync::atomic` types on more platforms ([#​2337](https://togithub.com/serde-rs/serde/issues/2337), thanks [@​badboy](https://togithub.com/badboy)) ### [`v1.0.149`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.149) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.148...v1.0.149) - Relax some trait bounds from the `Serialize` impl of `BinaryHeap`, `BTreeSet`, and `HashSet` ([#​2333](https://togithub.com/serde-rs/serde/issues/2333), thanks [@​jonasbb](https://togithub.com/jonasbb)) ### [`v1.0.148`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.148) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.147...v1.0.148) - Support `remote` derive for generic types that have private fields ([#​2327](https://togithub.com/serde-rs/serde/issues/2327)) </details> <details> <summary>serde-rs/json</summary> ### [`v1.0.91`](https://togithub.com/serde-rs/json/releases/tag/v1.0.91) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.90...v1.0.91) - Opt out of `-Zrustdoc-scrape-examples` on docs.rs for now ### [`v1.0.90`](https://togithub.com/serde-rs/json/releases/tag/v1.0.90) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.89...v1.0.90) - Documentation improvements ### [`v1.0.89`](https://togithub.com/serde-rs/json/releases/tag/v1.0.89) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.88...v1.0.89) - Fix invalid JSON incorrectly accepted when a large number has no digits after decimal point ([#​953](https://togithub.com/serde-rs/json/issues/953)) ### [`v1.0.88`](https://togithub.com/serde-rs/json/releases/tag/v1.0.88) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.87...v1.0.88) - Optimize serde_json::Map's implementation of `append` and `clone_from` ([#​952](https://togithub.com/serde-rs/json/issues/952), thanks [@​Lucretiel](https://togithub.com/Lucretiel)) ### [`v1.0.87`](https://togithub.com/serde-rs/json/releases/tag/v1.0.87) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.86...v1.0.87) - Add `write_i128` and `write_u128` methods to `serde_json::Formatter` to control the formatting of 128-bit integers ([#​940](https://togithub.com/serde-rs/json/issues/940), thanks [@​Lucretiel](https://togithub.com/Lucretiel)) ### [`v1.0.86`](https://togithub.com/serde-rs/json/releases/tag/v1.0.86) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.85...v1.0.86) - Support `arbitrary_precision` feature even in no-std mode ([#​928](https://togithub.com/serde-rs/json/issues/928), thanks [@​kvinwang](https://togithub.com/kvinwang)) ### [`v1.0.85`](https://togithub.com/serde-rs/json/releases/tag/v1.0.85) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.84...v1.0.85) - Make `Display` for `Number` produce the same representation as serializing ([#​919](https://togithub.com/serde-rs/json/issues/919)) ### [`v1.0.84`](https://togithub.com/serde-rs/json/releases/tag/v1.0.84) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.83...v1.0.84) - Make `Debug` impl of `serde_json::Value` more compact ([#​918](https://togithub.com/serde-rs/json/issues/918)) ### [`v1.0.83`](https://togithub.com/serde-rs/json/releases/tag/v1.0.83) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.82...v1.0.83) - Add categories to crates.io metadata ### [`v1.0.82`](https://togithub.com/serde-rs/json/releases/tag/v1.0.82) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.81...v1.0.82) - Implement `From<Option<T>>` for serde_json::Value where `T: Into<Value>` ([#​900](https://togithub.com/serde-rs/json/issues/900), thanks [@​kvnvelasco](https://togithub.com/kvnvelasco)) ### [`v1.0.81`](https://togithub.com/serde-rs/json/releases/tag/v1.0.81) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.80...v1.0.81) - Work around `indexmap`/`autocfg` not always properly detecting whether a `std` sysroot crate is available ([#​885](https://togithub.com/serde-rs/json/issues/885), thanks [@​cuviper](https://togithub.com/cuviper)) ### [`v1.0.80`](https://togithub.com/serde-rs/json/releases/tag/v1.0.80) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.79...v1.0.80) - Documentation improvements ### [`v1.0.79`](https://togithub.com/serde-rs/json/releases/tag/v1.0.79) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.78...v1.0.79) - Allow `RawValue` deserialization to propagate `\u` escapes for unmatched surrogates, which can later by deserialized to Vec\<u8> ([#​830](https://togithub.com/serde-rs/json/issues/830), thanks [@​lucacasonato](https://togithub.com/lucacasonato)) ### [`v1.0.78`](https://togithub.com/serde-rs/json/releases/tag/v1.0.78) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.77...v1.0.78) - Support deserializing as `&RawValue` in map key position, which would previously fail with *"invalid type: newtype struct"* ([#​851](https://togithub.com/serde-rs/json/issues/851)) ### [`v1.0.77`](https://togithub.com/serde-rs/json/releases/tag/v1.0.77) [Compare Source](https://togithub.com/serde-rs/json/comp </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/probe-rs/probe-rs). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4xMTcuMSIsInVwZGF0ZWRJblZlciI6IjM0LjExNy4xIn0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
An easier solution would be to rename |
For what it's worth, Sure it's longer but it's more clear that it's about the error providing some sort of context to a user that comes from the concrete error type. Whereas a plain |
@JonasJebing that sounds great! do you have time to follow up on that? :) |
FYI for anyone subscribed to this issue hasn't been following #96024 or #113464 - I have volunteered to take on this issue to see what i can do to help push the generic member access work forward. Next steps for this issue include:
|
@rustbot claim |
Not that I know of. The only way I can think of is via team membership since I think permissions are set up so that team members can usually edit any comments in the repo, for instance, I can edit your reply in this issue for whatever reason... Feel free to just ping me (zulip works best), I'll start by grabbing the next steps you added and vendoring them into the top level comment. Edit: alright, I've gone ahead and edited the todolist on the issue. Not sure if the provide_context rename is still relevant, lmk either way. |
Thanks! I'm just starting to take a look at all this again today after neglecting it the past week or so, starting with a PR to My next step is to see if I can make use of my One thing I'm a little confused about is that So maybe my |
@yaahc updates for the task list in this issue: DONE items:
UPDATED items:
NEW items:
To be clear about where I'm coming from, I haven't exhaustively read the entire history on the |
Also worth mentioning for discussion here is that at least one person has expressed a preference for using the name I'll ultimately go either way on this one to be honest (though I really don't like Similar to |
core/any: remove Provider trait, rename Demand to Request This touches on two WIP features: * `error_generic_member_access` * tracking issue: rust-lang#99301 * RFC (WIP): rust-lang/rfcs#2895 * `provide_any` * tracking issue: rust-lang#96024 * RFC: rust-lang/rfcs#3192 The changes in this PR are intended to address libs meeting feedback summarized by `@Amanieu` in rust-lang#96024 (comment) The specific items this PR addresses so far are: > We feel that the names "demand" and "request" are somewhat synonymous and would like only one of those to be used for better consistency. I went with `Request` here since it sounds nicer, but I'm mildly concerned that at first glance it could be confused with the use of the word in networking context. > The Provider trait should be deleted and its functionality should be merged into Error. We are happy to only provide an API that is only usable with Error. If there is demand for other uses then this can be provided through an external crate. The net impact this PR has is that examples which previously looked like ``` core::any::request_ref::<String>(&err).unwramp() ``` now look like ``` (&err as &dyn core::error::Error).request_value::<String>().unwrap() ``` These are methods that based on the type hint when called return an `Option<T>` of that type. I'll admit I don't fully understand how that's done, but it involves `core::any::tags::Type` and `core::any::TaggedOption`, neither of which are exposed in the public API, to construct a `Request` which is then passed to the `Error.provide` method. Something that I'm curious about is whether or not they are essential to the use of `Request` types (prior to this PR referred to as `Demand`) and if so does the fact that they are kept private imply that `Request`s are only meant to be constructed privately within the standard library? That's what it looks like to me. These methods ultimately call into code that looks like: ``` /// Request a specific value by tag from the `Error`. fn request_by_type_tag<'a, I>(err: &'a (impl Error + ?Sized)) -> Option<I::Reified> where I: tags::Type<'a>, { let mut tagged = core::any::TaggedOption::<'a, I>(None); err.provide(tagged.as_request()); tagged.0 } ``` As far as the `Request` API is concerned, one suggestion I would like to make is that the previous example should look more like this: ``` /// Request a specific value by tag from the `Error`. fn request_by_type_tag<'a, I>(err: &'a (impl Error + ?Sized)) -> Option<I::Reified> where I: tags::Type<'a>, { let tagged_request = core::any::Request<I>::new_tagged(); err.provide(tagged_request); tagged.0 } ``` This makes it possible for anyone to construct a `Request` for use in their own projects without exposing an implementation detail like `TaggedOption` in the API surface. Otherwise noteworthy is that I had to add `pub(crate)` on both `core::any::TaggedOption` and `core::any::tags` since `Request`s now need to be constructed in the `core::error` module. I considered moving `TaggedOption` into the `core::error` module but again I figured it's an implementation detail of `Request` and belongs closer to that. At the time I am opening this PR, I have not yet looked into the following bit of feedback: > We took a look at the generated code and found that LLVM is unable to optimize multiple .provide_* calls into a switch table because each call fetches the type id from Erased::type_id separately each time and the compiler doesn't know that these calls all return the same value. This should be fixed. This is what I'll focus on next while waiting for feedback on the progress so far. I suspect that learning more about the type IDs will help me understand the need for `TaggedOption` a little better.
@yaahc some quick updates here:
I think we can strike this out of the TODO list given that
This can be checked off as done.
This can be checked off as done: rust-lang/rfcs#3460
I did open this PR, but it was rejected at the time since #113464 hadn't been reviewed and merged yet. I will re-open it now that my PR is merged, and look into whether something similar needs to be done for nightly builds of
This still needs to be done by someone with permission to do so. People are still commenting on it as if There is also at least one community repo that is attempting to implement a
This still needs to be added to the TODOs. |
For everyone's information, this comment is going to be the new status comment for this tracking issue while it's assigned to me. The high-level status here is that most feedback has been addressed, including merging what remains of Steps / History
|
This: - Updates to the latest api change for `StdError` in `error_generic_member_access` rust-lang/rust#99301 - Updates `pathfinder_simd` for compatiblity - Updates other crates for compatibility with Next.js
This: - Updates to the latest api change for `StdError` in `error_generic_member_access` rust-lang/rust#99301 - Updates `pathfinder_simd` for compatiblity
This: - Updates to the latest api change for `StdError` in `error_generic_member_access` rust-lang/rust#99301 - Updates `pathfinder_simd` for compatiblity - Updates other crates for compatibility with Next.js Closes WEB-1635
This: - Updates to the latest api change for `StdError` in `error_generic_member_access` rust-lang/rust#99301 - Updates `pathfinder_simd` for compatiblity Closes WEB-1636
This: - Updates to the latest api change for `StdError` in `error_generic_member_access` rust-lang/rust#99301 - Updates `pathfinder_simd` for compatiblity - Updates other crates for compatibility with Next.js Closes WEB-1635
core/any: remove Provider trait, rename Demand to Request This touches on two WIP features: * `error_generic_member_access` * tracking issue: rust-lang/rust#99301 * RFC (WIP): rust-lang/rfcs#2895 * `provide_any` * tracking issue: rust-lang/rust#96024 * RFC: rust-lang/rfcs#3192 The changes in this PR are intended to address libs meeting feedback summarized by `@Amanieu` in rust-lang/rust#96024 (comment) The specific items this PR addresses so far are: > We feel that the names "demand" and "request" are somewhat synonymous and would like only one of those to be used for better consistency. I went with `Request` here since it sounds nicer, but I'm mildly concerned that at first glance it could be confused with the use of the word in networking context. > The Provider trait should be deleted and its functionality should be merged into Error. We are happy to only provide an API that is only usable with Error. If there is demand for other uses then this can be provided through an external crate. The net impact this PR has is that examples which previously looked like ``` core::any::request_ref::<String>(&err).unwramp() ``` now look like ``` (&err as &dyn core::error::Error).request_value::<String>().unwrap() ``` These are methods that based on the type hint when called return an `Option<T>` of that type. I'll admit I don't fully understand how that's done, but it involves `core::any::tags::Type` and `core::any::TaggedOption`, neither of which are exposed in the public API, to construct a `Request` which is then passed to the `Error.provide` method. Something that I'm curious about is whether or not they are essential to the use of `Request` types (prior to this PR referred to as `Demand`) and if so does the fact that they are kept private imply that `Request`s are only meant to be constructed privately within the standard library? That's what it looks like to me. These methods ultimately call into code that looks like: ``` /// Request a specific value by tag from the `Error`. fn request_by_type_tag<'a, I>(err: &'a (impl Error + ?Sized)) -> Option<I::Reified> where I: tags::Type<'a>, { let mut tagged = core::any::TaggedOption::<'a, I>(None); err.provide(tagged.as_request()); tagged.0 } ``` As far as the `Request` API is concerned, one suggestion I would like to make is that the previous example should look more like this: ``` /// Request a specific value by tag from the `Error`. fn request_by_type_tag<'a, I>(err: &'a (impl Error + ?Sized)) -> Option<I::Reified> where I: tags::Type<'a>, { let tagged_request = core::any::Request<I>::new_tagged(); err.provide(tagged_request); tagged.0 } ``` This makes it possible for anyone to construct a `Request` for use in their own projects without exposing an implementation detail like `TaggedOption` in the API surface. Otherwise noteworthy is that I had to add `pub(crate)` on both `core::any::TaggedOption` and `core::any::tags` since `Request`s now need to be constructed in the `core::error` module. I considered moving `TaggedOption` into the `core::error` module but again I figured it's an implementation detail of `Request` and belongs closer to that. At the time I am opening this PR, I have not yet looked into the following bit of feedback: > We took a look at the generated code and found that LLVM is unable to optimize multiple .provide_* calls into a switch table because each call fetches the type id from Erased::type_id separately each time and the compiler doesn't know that these calls all return the same value. This should be fixed. This is what I'll focus on next while waiting for feedback on the progress so far. I suspect that learning more about the type IDs will help me understand the need for `TaggedOption` a little better.
Hi! Just wanted to check in on the status of this issue, and if @waynr is still shepherding this. Is the optimization of multiple provide calls into a jump table a blocker for this? And is it the only blocker? Is implementing the solution discussed here for |
I haven't been a very good shepherd of this, but it has been on my mind as something I want to come back to. Part of the reason I haven't continued working on it is that the last discussion I participated in made it feel pretty well beyond my type system metaprogramming skills (see https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/error_generic_member_access). |
Simplify provider api to improve llvm ir This PR seeks to resolve the last concern in rust-lang#99301 (comment) We resolve the issue by moving the type_id to be stored in the `Request` itself rather than being accessed through the `Erased` trait, letting the compiler infer that the value of the type id will not change between lookups. ### LLVM Codegen **Before** ``` ; <provider_test::MyError as core::error::Error>::provide ; Function Attrs: nonlazybind uwtable define void `@"_ZN61_$LT$provider_test..MyError$u20$as$u20$core..error..Error$GT$7provide17hd9c9de412063aa73E"(ptr` noalias nocapture noundef nonnull readonly align 1 %self, ptr noundef nonnull align 1 %request.0, ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %request.1) unnamed_addr #0 personality ptr `@rust_eh_personality` { start: %0 = getelementptr inbounds i8, ptr %request.1, i64 24 %self.1.val.i = load ptr, ptr %0, align 8 %1 = tail call { i64, i64 } %self.1.val.i(ptr noundef nonnull align 1 %request.0), !noalias !15 %2 = extractvalue { i64, i64 } %1, 0 %3 = extractvalue { i64, i64 } %1, 1 %_18.i.i = icmp ne i64 %2, 1101338453689927725 %_2.i.i = icmp ne i64 %3, 472224167662714873 %or.cond.i.not.i = select i1 %_18.i.i, i1 true, i1 %_2.i.i br i1 %or.cond.i.not.i, label %_ZN4core5error7Request7provide17h8f8125d2543333e0E.exit, label %bb2.i ``` **After** ``` ; <provider_test::MyError as provider_test::Error>::provide ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable define void `@"_ZN63_$LT$provider_test..MyError$u20$as$u20$provider_test..Error$GT$7provide17h5bbf091795a6d359E"(ptr` noalias nocapture noundef nonnull readonly align 1 %self, ptr nocapture noundef nonnull align 8 %request.0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %request.1) unnamed_addr rust-lang#2 personality ptr `@rust_eh_personality` { start: %_19.i = load i64, ptr %request.0, align 8, !noalias !3, !noundef !3 switch i64 %_19.i, label %_ZN13provider_test7Request7provide17heb3ee140962e3b2fE.exit [ i64 7665305208997882008, label %bb12.i i64 7050211241160863540, label %bb12.i3 i64 9112786072622981063, label %bb12.i11 ] ```
Simplify provider api to improve llvm ir This PR seeks to resolve the last concern in rust-lang#99301 (comment) We resolve the issue by moving the type_id to be stored in the `Request` itself rather than being accessed through the `Erased` trait, letting the compiler infer that the value of the type id will not change between lookups. ### LLVM Codegen **Before** ``` ; <provider_test::MyError as core::error::Error>::provide ; Function Attrs: nonlazybind uwtable define void `@"_ZN61_$LT$provider_test..MyError$u20$as$u20$core..error..Error$GT$7provide17hd9c9de412063aa73E"(ptr` noalias nocapture noundef nonnull readonly align 1 %self, ptr noundef nonnull align 1 %request.0, ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %request.1) unnamed_addr #0 personality ptr `@rust_eh_personality` { start: %0 = getelementptr inbounds i8, ptr %request.1, i64 24 %self.1.val.i = load ptr, ptr %0, align 8 %1 = tail call { i64, i64 } %self.1.val.i(ptr noundef nonnull align 1 %request.0), !noalias !15 %2 = extractvalue { i64, i64 } %1, 0 %3 = extractvalue { i64, i64 } %1, 1 %_18.i.i = icmp ne i64 %2, 1101338453689927725 %_2.i.i = icmp ne i64 %3, 472224167662714873 %or.cond.i.not.i = select i1 %_18.i.i, i1 true, i1 %_2.i.i br i1 %or.cond.i.not.i, label %_ZN4core5error7Request7provide17h8f8125d2543333e0E.exit, label %bb2.i ``` **After** ``` ; <provider_test::MyError as provider_test::Error>::provide ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable define void `@"_ZN63_$LT$provider_test..MyError$u20$as$u20$provider_test..Error$GT$7provide17h5bbf091795a6d359E"(ptr` noalias nocapture noundef nonnull readonly align 1 %self, ptr nocapture noundef nonnull align 8 %request.0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %request.1) unnamed_addr #2 personality ptr `@rust_eh_personality` { start: %_19.i = load i64, ptr %request.0, align 8, !noalias !3, !noundef !3 switch i64 %_19.i, label %_ZN13provider_test7Request7provide17heb3ee140962e3b2fE.exit [ i64 7665305208997882008, label %bb12.i i64 7050211241160863540, label %bb12.i3 i64 9112786072622981063, label %bb12.i11 ] ```
Rollup merge of rust-lang#126242 - yaahc:simplify-provider, r=jhpratt Simplify provider api to improve llvm ir This PR seeks to resolve the last concern in rust-lang#99301 (comment) We resolve the issue by moving the type_id to be stored in the `Request` itself rather than being accessed through the `Erased` trait, letting the compiler infer that the value of the type id will not change between lookups. ### LLVM Codegen **Before** ``` ; <provider_test::MyError as core::error::Error>::provide ; Function Attrs: nonlazybind uwtable define void `@"_ZN61_$LT$provider_test..MyError$u20$as$u20$core..error..Error$GT$7provide17hd9c9de412063aa73E"(ptr` noalias nocapture noundef nonnull readonly align 1 %self, ptr noundef nonnull align 1 %request.0, ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %request.1) unnamed_addr #0 personality ptr `@rust_eh_personality` { start: %0 = getelementptr inbounds i8, ptr %request.1, i64 24 %self.1.val.i = load ptr, ptr %0, align 8 %1 = tail call { i64, i64 } %self.1.val.i(ptr noundef nonnull align 1 %request.0), !noalias !15 %2 = extractvalue { i64, i64 } %1, 0 %3 = extractvalue { i64, i64 } %1, 1 %_18.i.i = icmp ne i64 %2, 1101338453689927725 %_2.i.i = icmp ne i64 %3, 472224167662714873 %or.cond.i.not.i = select i1 %_18.i.i, i1 true, i1 %_2.i.i br i1 %or.cond.i.not.i, label %_ZN4core5error7Request7provide17h8f8125d2543333e0E.exit, label %bb2.i ``` **After** ``` ; <provider_test::MyError as provider_test::Error>::provide ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable define void `@"_ZN63_$LT$provider_test..MyError$u20$as$u20$provider_test..Error$GT$7provide17h5bbf091795a6d359E"(ptr` noalias nocapture noundef nonnull readonly align 1 %self, ptr nocapture noundef nonnull align 8 %request.0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %request.1) unnamed_addr #2 personality ptr `@rust_eh_personality` { start: %_19.i = load i64, ptr %request.0, align 8, !noalias !3, !noundef !3 switch i64 %_19.i, label %_ZN13provider_test7Request7provide17heb3ee140962e3b2fE.exit [ i64 7665305208997882008, label %bb12.i i64 7050211241160863540, label %bb12.i3 i64 9112786072622981063, label %bb12.i11 ] ```
Simplify provider api to improve llvm ir This PR seeks to resolve the last concern in rust-lang/rust#99301 (comment) We resolve the issue by moving the type_id to be stored in the `Request` itself rather than being accessed through the `Erased` trait, letting the compiler infer that the value of the type id will not change between lookups. ### LLVM Codegen **Before** ``` ; <provider_test::MyError as core::error::Error>::provide ; Function Attrs: nonlazybind uwtable define void `@"_ZN61_$LT$provider_test..MyError$u20$as$u20$core..error..Error$GT$7provide17hd9c9de412063aa73E"(ptr` noalias nocapture noundef nonnull readonly align 1 %self, ptr noundef nonnull align 1 %request.0, ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %request.1) unnamed_addr #0 personality ptr `@rust_eh_personality` { start: %0 = getelementptr inbounds i8, ptr %request.1, i64 24 %self.1.val.i = load ptr, ptr %0, align 8 %1 = tail call { i64, i64 } %self.1.val.i(ptr noundef nonnull align 1 %request.0), !noalias !15 %2 = extractvalue { i64, i64 } %1, 0 %3 = extractvalue { i64, i64 } %1, 1 %_18.i.i = icmp ne i64 %2, 1101338453689927725 %_2.i.i = icmp ne i64 %3, 472224167662714873 %or.cond.i.not.i = select i1 %_18.i.i, i1 true, i1 %_2.i.i br i1 %or.cond.i.not.i, label %_ZN4core5error7Request7provide17h8f8125d2543333e0E.exit, label %bb2.i ``` **After** ``` ; <provider_test::MyError as provider_test::Error>::provide ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable define void `@"_ZN63_$LT$provider_test..MyError$u20$as$u20$provider_test..Error$GT$7provide17h5bbf091795a6d359E"(ptr` noalias nocapture noundef nonnull readonly align 1 %self, ptr nocapture noundef nonnull align 8 %request.0, ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %request.1) unnamed_addr #2 personality ptr `@rust_eh_personality` { start: %_19.i = load i64, ptr %request.0, align 8, !noalias !3, !noundef !3 switch i64 %_19.i, label %_ZN13provider_test7Request7provide17heb3ee140962e3b2fE.exit [ i64 7665305208997882008, label %bb12.i i64 7050211241160863540, label %bb12.i3 i64 9112786072622981063, label %bb12.i11 ] ```
This: - Updates to the latest api change for `StdError` in `error_generic_member_access` rust-lang/rust#99301 - Updates `pathfinder_simd` for compatiblity - Updates other crates for compatibility with Next.js Closes WEB-1635
This: - Updates to the latest api change for `StdError` in `error_generic_member_access` rust-lang/rust#99301 - Updates `pathfinder_simd` for compatiblity - Updates other crates for compatibility with Next.js Closes WEB-1635
This: - Updates to the latest api change for `StdError` in `error_generic_member_access` rust-lang/rust#99301 - Updates `pathfinder_simd` for compatiblity - Updates other crates for compatibility with Next.js Closes WEB-1635
Feature gate:
#![feature(error_generic_member_access)]
This is a tracking issue for the generic member access API on the error trait, which generalizes the pattern of
fn source(&self) -> Option<&dyn Error>
andfn backtrace(&self) -> Option<&Backtrace>
intofn request_ref::<T>(&self) -> Option<&T>
Public API
Steps / History
Now tracked by @waynr in #99301 (comment)
Unresolved Questions
The text was updated successfully, but these errors were encountered: