-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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 Provider API #96024
Comments
#98912 updates the Callers change: let obj: Box<dyn Provider> = Box::new(SomeConcreteType { some_string: "hello".to_owned() });
// From
assert_eq!(&**request_ref::<String, _>(&*obj).unwrap(), "hello");
// To
assert_eq!(&**request_ref::<String>(&*obj).unwrap(), "hello"); |
One minor thing that weirds me out about this API is this impl: rust/library/core/src/error.rs Lines 197 to 199 in 02654a0
Since this is a blanket impl ( But it's a blanket impl of I am wondering which one of the following would be feasible:
|
We could go back to what we had before we move Error into core which was a provide impl just on dyn Error which caused some other paper cuts but I can't remember exactly what those issues were. |
Another issue for the provider API that matters for non-error cases is the lack of support for &mut. I think the initial proposal did support this, at some cost to complexity. While I don't know that we need to support it out of the gate (I've wanted it multiple times when playing around with the API), it would be good to be sure we know it would look like, so that if we want to add it in the future, that we have not painted ourselves into a corner where we cannot do so. |
@thomcc I believe all we have to do is expose the tag APIs to support those cases. We didn't change the impl, only the exposed API. |
Add additional methods to the Demand type This adds on to the original tracking issue rust-lang#96024 r? `@yaahc`
Add additional methods to the Demand type This adds on to the original tracking issue rust-lang#96024 r? ``@yaahc``
Add additional methods to the Demand type This adds on to the original tracking issue rust-lang#96024 r? ```@yaahc```
Add additional methods to the Demand type This adds on to the original tracking issue rust-lang#96024 r? ````@yaahc````
Add additional methods to the Demand type This adds on to the original tracking issue rust-lang#96024 r? `````@yaahc`````
Add additional methods to the Demand type This adds on to the original tracking issue rust-lang#96024 r? ``````@yaahc``````
Add additional methods to the Demand type This adds on to the original tracking issue rust-lang#96024 r? `@yaahc`
Add additional methods to the Demand type This adds on to the original tracking issue rust-lang#96024 r? ``@yaahc``
Add additional methods to the Demand type This adds on to the original tracking issue rust-lang#96024 r? ```@yaahc```
Add additional methods to the Demand type This adds on to the original tracking issue rust-lang#96024 r? ````@yaahc````
Add additional methods to the Demand type This adds on to the original tracking issue rust-lang#96024 r? `````@yaahc`````
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [thiserror](https://github.com/dtolnay/thiserror) | dependencies | patch | `1.0.32` -> `1.0.33` | --- ### Release Notes <details> <summary>dtolnay/thiserror</summary> ### [`v1.0.33`](https://github.com/dtolnay/thiserror/releases/tag/1.0.33) [Compare Source](https://github.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://github.com/rust-lang/rust/issues/99301), [https://github.com/rust-lang/rust/issues/96024](https://github.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>
Is this something that just hasn't been implemented yet or was there an active decision to not expose pub fn request_ref<'a, T>(provider: &'a (impl Provider + ?Sized)) -> Option<&'a T>
where
T: 'static + ?Sized,
{
request_by_type_tag::<'a, tags::Ref<tags::MaybeSizedValue<T>>>(provider)
}
+pub fn request_ref_mut<'a, T>(provider: &'a (impl Provider + ?Sized)) -> Option<&'a mut T>
+where
+ T: 'static + ?Sized,
+{
+ request_by_type_tag::<'a, tags::RefMut<tags::MaybeSizedValue<T>>>(provider)
+}
mod tags {
pub struct Ref<I>(PhantomData<I>);
impl<'a, I: MaybeSizedType<'a>> Type<'a> for Ref<I> {
type Reified = &'a I::Reified;
}
+
+ pub struct RefMut<I>(PhantomData<I>);
+
+ impl<'a, I: MaybeSizedType<'a>> Type<'a> for RefMut<I> {
+ type Reified = &'a mut I::Reified;
+ }
} but maybe I'm missing something. |
@bryanburgers just to follow up, I don't think it's likely in the scope of
Although my opinion doesn't mean much since I am still new to contributing here, I think it's better to keep the API impact of features like this small initially. As for your original question:
One option you could consider is this dyno crate which offers a very similar API. Would that work for you? I'm sure it would be easier to be enthusiastic about a standard library |
Not sure what the proper etiquette is for proposing this, but after seeing agreement from @Amanieu in zulip I would like to propose closing this tracking issue in favor of merging what's left of the Provider API into the The major motivation behind merging these two issues is that the libs meeting has decided to leave out the Merging the two issues would involve the following steps:
Anyone have any objections to this? I kind of feel awkward jumping in and suggesting it as a newcomer, but again I've had some supportive responses in zulip. I'm happy to take on all this work for the near future as I am currently unemployed anyway. |
No objections, this sounds like a good plan. Let me know if you need help with anything. |
@Amanieu okay cool, sounds like we've given folks long enough to object. I can't do much keyboard work at the moment because i recently smashed one of my fingers (by mistake of course 🙃) and it needs a few more days to a week to heal before I'm back to my full typing speed. But for now I'll try to assign both tracking issues to myself and start making some of the changes that don't require as much keyboard work. |
@rustbot claim |
@yaahc I think we've captured everything but
in the TODOs for the |
chore(deps): update compatible [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [anyhow](https://github.com/dtolnay/anyhow) | workspace.dependencies | patch | `1.0.47` -> `1.0.72` | | [base64](https://github.com/marshallpierce/rust-base64) | workspace.dependencies | patch | `0.21.0` -> `0.21.2` | | [bytesize](https://github.com/hyunsik/bytesize) | workspace.dependencies | minor | `1.0` -> `1.2` | | [clap](https://github.com/clap-rs/clap) | workspace.dependencies | minor | `4.2.0` -> `4.3.19` | | [core-foundation](https://github.com/servo/core-foundation-rs) | workspace.dependencies | patch | `0.9.0` -> `0.9.3` | | [filetime](https://github.com/alexcrichton/filetime) | workspace.dependencies | patch | `0.2.9` -> `0.2.21` | | [flate2](https://github.com/rust-lang/flate2-rs) | workspace.dependencies | patch | `1.0.3` -> `1.0.26` | | [git2](https://github.com/rust-lang/git2-rs) | workspace.dependencies | patch | `0.17.1` -> `0.17.2` | | [glob](https://github.com/rust-lang/glob) | workspace.dependencies | patch | `0.3.0` -> `0.3.1` | | [handlebars](https://github.com/sunng87/handlebars-rust) | workspace.dependencies | minor | `3.2.1` -> `3.5.5` | | [hex](https://github.com/KokaKiwi/rust-hex) | workspace.dependencies | patch | `0.4.2` -> `0.4.3` | | [http-auth](https://github.com/scottlamb/http-auth) | workspace.dependencies | patch | `0.1.6` -> `0.1.8` | | [humantime](https://github.com/tailhook/humantime) | workspace.dependencies | minor | `2.0.0` -> `2.1.0` | | [ignore](https://github.com/BurntSushi/ripgrep/tree/master/crates/ignore) ([source](https://github.com/BurntSushi/ripgrep)) | workspace.dependencies | patch | `0.4.7` -> `0.4.20` | | [im-rc](http://immutable.rs/) ([source](https://github.com/bodil/im-rs)) | workspace.dependencies | minor | `15.0.0` -> `15.1.0` | | [lazy_static](https://github.com/rust-lang-nursery/lazy-static.rs) | workspace.dependencies | minor | `1.3.0` -> `1.4.0` | | [lazycell](https://github.com/indiv0/lazycell) | workspace.dependencies | minor | `1.2.0` -> `1.3.0` | | [libc](https://github.com/rust-lang/libc) | workspace.dependencies | patch | `0.2.144` -> `0.2.147` | | [libgit2-sys](https://github.com/rust-lang/git2-rs) | workspace.dependencies | patch | `0.15.1` -> `0.15.2+1.6.4` | | [log](https://github.com/rust-lang/log) | workspace.dependencies | patch | `0.4.17` -> `0.4.19` | | [memchr](https://github.com/BurntSushi/memchr) | workspace.dependencies | minor | `2.1.3` -> `2.5.0` | | [os_info](https://github.com/stanislav-tkach/os_info) | workspace.dependencies | minor | `3.5.0` -> `3.7.0` | | [pasetors](https://github.com/brycx/pasetors) | workspace.dependencies | patch | `0.6.4` -> `0.6.7` | | [percent-encoding](https://github.com/servo/rust-url) | workspace.dependencies | minor | `2.0` -> `2.3` | | [pkg-config](https://github.com/rust-lang/pkg-config-rs) | workspace.dependencies | patch | `0.3.19` -> `0.3.27` | | [pretty_assertions](https://github.com/rust-pretty-assertions/rust-pretty-assertions) | workspace.dependencies | minor | `1.3.0` -> `1.4.0` | | [proptest](https://proptest-rs.github.io/proptest/proptest/index.html) ([source](https://github.com/proptest-rs/proptest)) | workspace.dependencies | minor | `1.1.0` -> `1.2.0` | | [pulldown-cmark](https://github.com/raphlinus/pulldown-cmark) | workspace.dependencies | patch | `0.9.2` -> `0.9.3` | | [rustfix](https://github.com/rust-lang-nursery/rustfix) | workspace.dependencies | patch | `0.6.0` -> `0.6.1` | | [security-framework](https://lib.rs/crates/security_framework) ([source](https://github.com/kornelski/rust-security-framework)) | workspace.dependencies | minor | `2.0.0` -> `2.9.2` | | [semver](https://github.com/dtolnay/semver) | workspace.dependencies | patch | `1.0.3` -> `1.0.18` | | [serde](https://serde.rs) ([source](https://github.com/serde-rs/serde)) | workspace.dependencies | patch | `1.0.123` -> `1.0.180` | | [serde_ignored](https://github.com/dtolnay/serde-ignored) | workspace.dependencies | patch | `0.1.0` -> `0.1.9` | | [serde_json](https://github.com/serde-rs/json) | workspace.dependencies | patch | `1.0.59` -> `1.0.104` | | [sha2](https://github.com/RustCrypto/hashes) | workspace.dependencies | patch | `0.10.6` -> `0.10.7` | | [shell-escape](https://github.com/sfackler/shell-escape) | workspace.dependencies | patch | `0.1.4` -> `0.1.5` | | [snapbox](https://github.com/assert-rs/trycmd/tree/main/crates/snapbox) ([source](https://github.com/assert-rs/trycmd)) | workspace.dependencies | patch | `0.4.0` -> `0.4.11` | | [strip-ansi-escapes](https://github.com/luser/strip-ansi-escapes) | workspace.dependencies | patch | `0.1.0` -> `0.1.1` | | [syn](https://github.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.14` -> `2.0.28` | | [tar](https://github.com/alexcrichton/tar-rs) | workspace.dependencies | patch | `0.4.38` -> `0.4.39` | | [tempfile](https://stebalien.com/projects/tempfile-rs/) ([source](https://github.com/Stebalien/tempfile)) | workspace.dependencies | minor | `3.1.0` -> `3.7.0` | | [termcolor](https://github.com/BurntSushi/termcolor) | workspace.dependencies | minor | `1.1.2` -> `1.2.0` | | [thiserror](https://github.com/dtolnay/thiserror) | workspace.dependencies | patch | `1.0.40` -> `1.0.44` | | [toml](https://github.com/toml-rs/toml) | workspace.dependencies | patch | `0.7.0` -> `0.7.6` | | [toml_edit](https://github.com/toml-rs/toml) | workspace.dependencies | patch | `0.19.0` -> `0.19.14` | | [unicode-width](https://github.com/unicode-rs/unicode-width) | workspace.dependencies | patch | `0.1.5` -> `0.1.10` | | [unicode-xid](https://github.com/unicode-rs/unicode-xid) | workspace.dependencies | patch | `0.2.0` -> `0.2.4` | | [url](https://github.com/servo/rust-url) | workspace.dependencies | minor | `2.2.2` -> `2.4.0` | | [varisat](https://jix.one/project/varisat/) ([source](https://github.com/jix/varisat)) | workspace.dependencies | patch | `0.2.1` -> `0.2.2` | | [walkdir](https://github.com/BurntSushi/walkdir) | workspace.dependencies | patch | `2.3.1` -> `2.3.3` | --- ### Release Notes <details> <summary>dtolnay/anyhow (anyhow)</summary> ### [`v1.0.72`](https://github.com/dtolnay/anyhow/releases/tag/1.0.72) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.71...1.0.72) - Documentation improvements ### [`v1.0.71`](https://github.com/dtolnay/anyhow/releases/tag/1.0.71) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.70...1.0.71) - Documentation improvements ### [`v1.0.70`](https://github.com/dtolnay/anyhow/releases/tag/1.0.70) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.69...1.0.70) - Update syn dependency to 2.x ### [`v1.0.69`](https://github.com/dtolnay/anyhow/releases/tag/1.0.69) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.68...1.0.69) - Documentation improvements ### [`v1.0.68`](https://github.com/dtolnay/anyhow/releases/tag/1.0.68) [Compare Source](https://github.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://github.com/dtolnay/anyhow/releases/tag/1.0.67) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.66...1.0.67) - Improve the backtrace captured when `context()` is used on an `Option` ([#​280](https://github.com/dtolnay/anyhow/issues/280)) ### [`v1.0.66`](https://github.com/dtolnay/anyhow/releases/tag/1.0.66) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.65...1.0.66) - Reduce unhelpful backtrace frames in backtraces captured during a `context` call ([#​279](https://github.com/dtolnay/anyhow/issues/279)) ### [`v1.0.65`](https://github.com/dtolnay/anyhow/releases/tag/1.0.65) [Compare Source](https://github.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://github.com/dtolnay/anyhow/releases/tag/1.0.64) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.63...1.0.64) - Correctly propagate Backtrace when using `#[source] anyhow::Error` with [thiserror](https://github.com/dtolnay/thiserror) crate ([#​231](https://github.com/dtolnay/anyhow/issues/231)) ### [`v1.0.63`](https://github.com/dtolnay/anyhow/releases/tag/1.0.63) [Compare Source](https://github.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://github.com/rust-lang/rust/issues/99301), [https://github.com/rust-lang/rust/issues/96024](https://github.com/rust-lang/rust/issues/96024)) ### [`v1.0.62`](https://github.com/dtolnay/anyhow/releases/tag/1.0.62) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.61...1.0.62) - Fix extra rebuilding when interleaving command-line `cargo` invocations with IDE builds ([#​261](https://github.com/dtolnay/anyhow/issues/261)) ### [`v1.0.61`](https://github.com/dtolnay/anyhow/releases/tag/1.0.61) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.60...1.0.61) - Work around rust-analyzer builds poisoning all subsequent command-line cargo builds ([#​252](https://github.com/dtolnay/anyhow/issues/252)) ### [`v1.0.60`](https://github.com/dtolnay/anyhow/releases/tag/1.0.60) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.59...1.0.60) - Propagate `--target` to rustc invocation when deciding about backtrace support ([#​249](https://github.com/dtolnay/anyhow/issues/249), thanks [`@​RalfJung](https://github.com/RalfJung))` ### [`v1.0.59`](https://github.com/dtolnay/anyhow/releases/tag/1.0.59) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.58...1.0.59) - Update crates.io metadata to include `no-std` category ### [`v1.0.58`](https://github.com/dtolnay/anyhow/releases/tag/1.0.58) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.57...1.0.58) - Fix some broken links in documentation ### [`v1.0.57`](https://github.com/dtolnay/anyhow/releases/tag/1.0.57) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.56...1.0.57) - Remove a `log4rs`-specific workaround from `bail!` macro implementation ### [`v1.0.56`](https://github.com/dtolnay/anyhow/releases/tag/1.0.56) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.55...1.0.56) - Add `must_use` warning when an Error created by `anyhow!` is not used, perhaps because the programmer meant to write `bail!` instead ([#​229](https://github.com/dtolnay/anyhow/issues/229)) ### [`v1.0.55`](https://github.com/dtolnay/anyhow/releases/tag/1.0.55) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.54...1.0.55) - Documentation improvements ### [`v1.0.54`](https://github.com/dtolnay/anyhow/releases/tag/1.0.54) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.53...1.0.54) - Construct more helpful error message from `ensure!` when the expression involves a negative literal const generic as the first generic argument of a method call ([#​224](https://github.com/dtolnay/anyhow/issues/224)) ### [`v1.0.53`](https://github.com/dtolnay/anyhow/releases/tag/1.0.53) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.52...1.0.53) - Retrigger docs.rs build to work around rustdoc regression ([https://github.com/rust-lang/rust/issues/92331](https://github.com/rust-lang/rust/issues/92331)) ### [`v1.0.52`](https://github.com/dtolnay/anyhow/releases/tag/1.0.52) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.51...1.0.52) - Reduce overhead of backtrace capture in the case that backtraces are not enabled ([#​212](https://github.com/dtolnay/anyhow/issues/212)) ### [`v1.0.51`](https://github.com/dtolnay/anyhow/releases/tag/1.0.51) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.50...1.0.51) - Show doc for `Ok` fn ### [`v1.0.50`](https://github.com/dtolnay/anyhow/releases/tag/1.0.50) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.49...1.0.50) - Recognize more types of expressions in `ensure!` macro ([#​199](https://github.com/dtolnay/anyhow/issues/199), [#​200](https://github.com/dtolnay/anyhow/issues/200), [#​202](https://github.com/dtolnay/anyhow/issues/202), [#​203](https://github.com/dtolnay/anyhow/issues/203), [#​204](https://github.com/dtolnay/anyhow/issues/204), [#​205](https://github.com/dtolnay/anyhow/issues/205), [#​206](https://github.com/dtolnay/anyhow/issues/206)) ### [`v1.0.49`](https://github.com/dtolnay/anyhow/releases/tag/1.0.49) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.48...1.0.49) - Add a function `anyhow::Ok(v)` equivalent to `Ok::<_, anyhow::Error>(v)` ([#​192](https://github.com/dtolnay/anyhow/issues/192)) ### [`v1.0.48`](https://github.com/dtolnay/anyhow/releases/tag/1.0.48) [Compare Source](https://github.com/dtolnay/anyhow/compare/1.0.47...1.0.48) - Include a `Debug` rendering of lhs and rhs in `ensure!` messages ([#​193](https://github.com/dtolnay/anyhow/issues/193), [#​194](https://github.com/dtolnay/anyhow/issues/194), [#​195](https://github.com/dtolnay/anyhow/issues/195), [#​196](https://github.com/dtolnay/anyhow/issues/196), [#​197](https://github.com/dtolnay/anyhow/issues/197), [#​198](https://github.com/dtolnay/anyhow/issues/198)) ##### Example: ```rust ensure!(flags.len() <= 40); ``` ```rust ensure!(kind == Kind::File); ``` Before: ```console Condition failed: `flags.len() <= 40` Condition failed: `kind == Kind::File` ``` After: ```console Condition failed: `flags.len() <= 40` (99 vs 40) Condition failed: `kind == Kind::File` (Symlink vs File) ``` </details> <details> <summary>marshallpierce/rust-base64 (base64)</summary> ### [`v0.21.2`](https://github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0212) [Compare Source](https://github.com/marshallpierce/rust-base64/compare/v0.21.1...v0.21.2) - Rollback MSRV to 1.57.0 -- only dev dependencies need 1.60, not the main code ### [`v0.21.1`](https://github.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0211) [Compare Source](https://github.com/marshallpierce/rust-base64/compare/v0.21.0...v0.21.1) - Remove the possibility of panicking during decoded length calculations - `DecoderReader` no longer sometimes erroneously ignores padding [#​226](https://github.com/marshallpierce/rust-base64/issues/226) #### Breaking changes - `Engine.internal_decode` return type changed - Update MSRV to 1.60.0 </details> <details> <summary>hyunsik/bytesize (bytesize)</summary> ### [`v1.2.0`](https://github.com/hyunsik/bytesize/releases/tag/v1.2.0): Release 1.2.0 [Compare Source](https://github.com/hyunsik/bytesize/compare/v1.1.0...v1.2.0) #### Changes - serde improvements [#​29](https://github.com/hyunsik/bytesize/issues/29) ([`@​joeroback](https://github.com/joeroback))` ### [`v1.1.0`](https://github.com/hyunsik/bytesize/releases/tag/v1.1.0): Release 1.1.0 #### Changes - ByteSize: Hash [#​23](https://github.com/hyunsik/bytesize/issues/23) ([`@​matklad](https://github.com/matklad))` - add AddAssign operator to ByteSize [#​22](https://github.com/hyunsik/bytesize/issues/22) ([`@​pmnoxx](https://github.com/pmnoxx))` - ByteSize constants [#​21](https://github.com/hyunsik/bytesize/issues/21) ([`@​pmnoxx](https://github.com/pmnoxx))` - Implement the FromStr trait for ByteSize [#​20](https://github.com/hyunsik/bytesize/issues/20) ([`@​jRimbault](https://github.com/jRimbault))` - Padding for Display trait for ByteSize [#​19](https://github.com/hyunsik/bytesize/issues/19) ([`@​acheronfail](https://github.com/acheronfail))` ### [`v1.0.1`](https://github.com/hyunsik/bytesize/compare/release-1.0.0...release-1.0.1) [Compare Source](https://github.com/hyunsik/bytesize/compare/release-1.0.0...release-1.0.1) </details> <details> <summary>clap-rs/clap (clap)</summary> ### [`v4.3.19`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4319---2023-07-21) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.18...v4.3.19) ##### Fixes - *(parse)* Respect `value_terminator` even in the presence of later multiple-value positional arguments ### [`v4.3.18`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4318---2023-07-21) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.17...v4.3.18) ##### Fixes - *(parse)* Suggest `--` in fewer places where it won't work ### [`v4.3.17`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4317---2023-07-19) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.16...v4.3.17) ##### Fixes - *(help)* Address a regression in wrapping `PossibleValue` descriptions in `--help` ### [`v4.3.16`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4316---2023-07-18) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.15...v4.3.16) ##### Fixes - Don't assert when stateful value parsers fail on defaults (e.g. checking if a path exists) ### [`v4.3.15`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4315---2023-07-18) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.14...v4.3.15) ##### Features - *(unstable-styles)* Re-export `anstyle` ##### Documentation - *(unstable-styles)* Provide more examples ### [`v4.3.14`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4314---2023-07-17) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.13...v4.3.14) ##### Features - `ArgAction::HelpShort` and `ArgAction::HelpLong` for explicitly specifying which style of help to display ##### Fixes - Skip `[OPTIONS]` in usage if a help or version `ArgAction` is used ### [`v4.3.13`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4313---2023-07-17) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.12...v4.3.13) ### [`v4.3.12`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4312---2023-07-14) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.11...v4.3.12) ##### Fixes - *(derive)* Don't error on enum variant field attributes ### [`v4.3.11`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4311---2023-07-05) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.10...v4.3.11) ##### Features - *(derive)* Support fields wrapped in `num::Wrapping`, `Box`, or `Arc` - *(derive)* Support `Box<str>`, `Box<OsStr>`, and `Box<Path>` ### [`v4.3.10`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4310---2023-06-30) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.9...v4.3.10) ##### Performance - Drop a dependency, reducing binary size by 1.3 KiB ### [`v4.3.9`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#439---2023-06-28) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.8...v4.3.9) ##### Fixes - `Command::ignore_errors` no longer masks help/version ### [`v4.3.8`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#438---2023-06-23) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.7...v4.3.8) ##### Fixes - Error on ambiguity with `infer_long_arg`, rather than arbitrarily picking one, matching the documentation and subcommand's behavior ### [`v4.3.7`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#437---2023-06-23) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.6...v4.3.7) ##### Documentation - Further clarify magic behavior in derive tutorial - Further clarify derive API's relationship to builder within the tutorial ### [`v4.3.6`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#436---2023-06-23) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.5...v4.3.6) ##### Documentation - Suggest `clio` ### [`v4.3.5`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#435---2023-06-20) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.4...v4.3.5) - `ColorChoice::possible_values` is added to simplify things for builder users ##### Fixes - `ColorChoice::to_possible_value` no longer includes descriptions, encouraging shorter help where possible ### [`v4.3.4`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#434---2023-06-14) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.3...v4.3.4) ##### Features - Add `Error::exit_code` ### [`v4.3.3`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#433---2023-06-09) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.2...v4.3.3) ##### Features - `Command::defer` for delayed initialization of subcommands to reduce startup times of large applications like deno ### [`v4.3.2`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#432---2023-06-05) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.1...v4.3.2) ##### Fixes - *(derive)* Don't produce `unused_equalifications` warnings when someone brings a clap type into scope ### [`v4.3.1`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4319---2023-07-21) [Compare Source](https://github.com/clap-rs/clap/compare/v4.3.0...v4.3.1) ##### Fixes - *(parse)* Respect `value_terminator` even in the presence of later multiple-value positional arguments ### [`v4.3.0`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#430---2023-05-19) [Compare Source](https://github.com/clap-rs/clap/compare/v4.2.7...v4.3.0) ##### Fixes - *(assert)* Allow multiple, value-terminated, positional arguments - *(assert)* Clear up language on `last` assertion - *(parser)* Correctly assign values to arguments when using multiple, value-termianted, positional arguments - *(parser)* Ensure `value_terminator` has higher precedence than `allow_hyphen_values` - *(help)* Only use next-line-help on subcommand list when explicitly specified, not just with `--help` - *(help)* Correctly align possible values list - *(help)* Don't waste code, vertical space in moving possible value descriptions to next line ### [`v4.2.7`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#427---2023-05-02) [Compare Source](https://github.com/clap-rs/clap/compare/v4.2.6...v4.2.7) ##### Fixes - Correctly track remaining length for iterators provided by `ArgMatches` ### [`v4.2.6`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#426---2023-05-02) [Compare Source](https://github.com/clap-rs/clap/compare/v4.2.5...v4.2.6) ##### Features - `impl Eq<std::any::TypeId> for clap_builder::util::AnyValueId` ### [`v4.2.5`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#425---2023-04-27) [Compare Source](https://github.com/clap-rs/clap/compare/v4.2.4...v4.2.5) ##### Fixes - Improve panic when a group requires a non-existent ID ### [`v4.2.4`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#424---2023-04-19) [Compare Source](https://github.com/clap-rs/clap/compare/v4.2.3...v4.2.4) ##### Documentation - Corrected docs for `Command::style` ### [`v4.2.3`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#423---2023-04-18) [Compare Source](https://github.com/clap-rs/clap/compare/v4.2.2...v4.2.3) ##### Features - `Command::styles` for theming help/errors (behind `unstable-styles`) ### [`v4.2.2`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#422---2023-04-13) [Compare Source](https://github.com/clap-rs/clap/compare/v4.2.1...v4.2.2) ##### Internal - Update dependencies ### [`v4.2.1`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#421---2023-03-28) [Compare Source](https://github.com/clap-rs/clap/compare/v4.2.0...v4.2.1) ##### Fixes - Don't highlight uninteresting parts of the error message </details> <details> <summary>servo/core-foundation-rs (core-foundation)</summary> ### [`v0.9.3`](https://github.com/servo/core-foundation-rs/compare/core-foundation-v0.9.2...core-foundation-v0.9.3) [Compare Source](https://github.com/servo/core-foundation-rs/compare/core-foundation-v0.9.2...core-foundation-v0.9.3) ### [`v0.9.2`](https://github.com/servo/core-foundation-rs/compare/core-foundation-v0.9.1...core-foundation-v0.9.2) [Compare Source](https://github.com/servo/core-foundation-rs/compare/core-foundation-v0.9.1...core-foundation-v0.9.2) ### [`v0.9.1`](https://github.com/servo/core-foundation-rs/compare/core-foundation-v0.9.0...core-foundation-v0.9.1) [Compare Source](https://github.com/servo/core-foundation-rs/compare/core-foundation-v0.9.0...core-foundation-v0.9.1) </details> <details> <summary>alexcrichton/filetime (filetime)</summary> ### [`v0.2.21`](https://github.com/alexcrichton/filetime/compare/0.2.20...0.2.21) [Compare Source](https://github.com/alexcrichton/filetime/compare/0.2.20...0.2.21) ### [`v0.2.20`](https://github.com/alexcrichton/filetime/compare/0.2.19...0.2.20) [Compare Source](https://github.com/alexcrichton/filetime/compare/0.2.19...0.2.20) ### [`v0.2.19`](https://github.com/alexcrichton/filetime/compare/0.2.18...0.2.19) [Compare Source](https://github.com/alexcrichton/filetime/compare/0.2.18...0.2.19) ### [`v0.2.18`](https://github.com/alexcrichton/filetime/compare/0.2.17...0.2.18) [Compare Source](https://github.com/alexcrichton/filetime/compare/0.2.17...0.2.18) ### [`v0.2.14`](https://github.com/alexcrichton/filetime/compare/0.2.13...0.2.14) [Compare Source](https://github.com/alexcrichton/filetime/compare/0.2.13...0.2.14) ### [`v0.2.13`](https://github.com/alexcrichton/filetime/compare/0.2.12...0.2.13) [Compare Source](https://github.com/alexcrichton/filetime/compare/0.2.12...0.2.13) ### [`v0.2.12`](https://github.com/alexcrichton/filetime/compare/0.2.11...0.2.12) [Compare Source](https://github.com/alexcrichton/filetime/compare/0.2.11...0.2.12) ### [`v0.2.11`](https://github.com/alexcrichton/filetime/compare/0.2.10...0.2.11) [Compare Source](https://github.com/alexcrichton/filetime/compare/0.2.10...0.2.11) ### [`v0.2.10`](https://github.com/alexcrichton/filetime/compare/0.2.9...0.2.10) [Compare Source](https://github.com/alexcrichton/filetime/compare/0.2.9...0.2.10) </details> <details> <summary>rust-lang/flate2-rs (flate2)</summary> ### [`v1.0.26`](https://github.com/rust-lang/flate2-rs/releases/tag/1.0.26) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.25...1.0.26) #### What's Changed - Add decompress file example by [`@​MichaelMcDonnell](https://github.com/MichaelMcDonnell)` in [https://github.com/rust-lang/flate2-rs/pull/329](https://github.com/rust-lang/flate2-rs/pull/329) - Remove `extern crate`s by [`@​JohnTitor](https://github.com/JohnTitor)` in [https://github.com/rust-lang/flate2-rs/pull/331](https://github.com/rust-lang/flate2-rs/pull/331) - Make clippy happy + a few more cleanups by [`@​nyurik](https://github.com/nyurik)` in [https://github.com/rust-lang/flate2-rs/pull/285](https://github.com/rust-lang/flate2-rs/pull/285) - Fix left-overs on decoder docs by [`@​JohnTitor](https://github.com/JohnTitor)` in [https://github.com/rust-lang/flate2-rs/pull/333](https://github.com/rust-lang/flate2-rs/pull/333) - Mention MSRV policy by [`@​JohnTitor](https://github.com/JohnTitor)` in [https://github.com/rust-lang/flate2-rs/pull/332](https://github.com/rust-lang/flate2-rs/pull/332) - Bump miniz-oxide to prevent assertion failure by [`@​softdevca](https://github.com/softdevca)` in [https://github.com/rust-lang/flate2-rs/pull/335](https://github.com/rust-lang/flate2-rs/pull/335) - Enable all-features, Use doc_auto_cfg on docs.rs by [`@​wcampbell0x2a](https://github.com/wcampbell0x2a)` in [https://github.com/rust-lang/flate2-rs/pull/336](https://github.com/rust-lang/flate2-rs/pull/336) - Fix a typo in doc for write::GzDecoder by [`@​yestyle](https://github.com/yestyle)` in [https://github.com/rust-lang/flate2-rs/pull/337](https://github.com/rust-lang/flate2-rs/pull/337) - Fixed overflow bug in crc combine by [`@​AntonJMLarsson](https://github.com/AntonJMLarsson)` in [https://github.com/rust-lang/flate2-rs/pull/330](https://github.com/rust-lang/flate2-rs/pull/330) - Added feature for enabling default zlib-sys features by [`@​taco-paco](https://github.com/taco-paco)` in [https://github.com/rust-lang/flate2-rs/pull/322](https://github.com/rust-lang/flate2-rs/pull/322) - Add write::MultiGzDecoder for multi-member gzip data by [`@​jongiddy](https://github.com/jongiddy)` in [https://github.com/rust-lang/flate2-rs/pull/325](https://github.com/rust-lang/flate2-rs/pull/325) - gha: Upgrade to windows-2022 by [`@​JohnTitor](https://github.com/JohnTitor)` in [https://github.com/rust-lang/flate2-rs/pull/343](https://github.com/rust-lang/flate2-rs/pull/343) - gha: Specify tag instead of branch on actions/checkout by [`@​JohnTitor](https://github.com/JohnTitor)` in [https://github.com/rust-lang/flate2-rs/pull/342](https://github.com/rust-lang/flate2-rs/pull/342) - Prepare 1.0.26 release by [`@​JohnTitor](https://github.com/JohnTitor)` in [https://github.com/rust-lang/flate2-rs/pull/341](https://github.com/rust-lang/flate2-rs/pull/341) #### New Contributors - [`@​MichaelMcDonnell](https://github.com/MichaelMcDonnell)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/329](https://github.com/rust-lang/flate2-rs/pull/329) - [`@​JohnTitor](https://github.com/JohnTitor)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/331](https://github.com/rust-lang/flate2-rs/pull/331) - [`@​softdevca](https://github.com/softdevca)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/335](https://github.com/rust-lang/flate2-rs/pull/335) - [`@​wcampbell0x2a](https://github.com/wcampbell0x2a)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/336](https://github.com/rust-lang/flate2-rs/pull/336) - [`@​yestyle](https://github.com/yestyle)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/337](https://github.com/rust-lang/flate2-rs/pull/337) - [`@​AntonJMLarsson](https://github.com/AntonJMLarsson)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/330](https://github.com/rust-lang/flate2-rs/pull/330) - [`@​taco-paco](https://github.com/taco-paco)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/322](https://github.com/rust-lang/flate2-rs/pull/322) - [`@​jongiddy](https://github.com/jongiddy)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/325](https://github.com/rust-lang/flate2-rs/pull/325) **Full Changelog**: https://github.com/rust-lang/flate2-rs/compare/1.0.25...1.0.26 ### [`v1.0.25`](https://github.com/rust-lang/flate2-rs/releases/tag/1.0.25) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.24...1.0.25) #### What's Changed - Use SPDX license format and update links by [`@​atouchet](https://github.com/atouchet)` in [https://github.com/rust-lang/flate2-rs/pull/296](https://github.com/rust-lang/flate2-rs/pull/296) - Bump miniz_oxide to 0.6 by [`@​paolobarbolini](https://github.com/paolobarbolini)` in [https://github.com/rust-lang/flate2-rs/pull/317](https://github.com/rust-lang/flate2-rs/pull/317) - Prep release 1.0.25 by [`@​thomcc](https://github.com/thomcc)` in [https://github.com/rust-lang/flate2-rs/pull/327](https://github.com/rust-lang/flate2-rs/pull/327) #### New Contributors - [`@​atouchet](https://github.com/atouchet)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/296](https://github.com/rust-lang/flate2-rs/pull/296) - [`@​paolobarbolini](https://github.com/paolobarbolini)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/317](https://github.com/rust-lang/flate2-rs/pull/317) - [`@​thomcc](https://github.com/thomcc)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/327](https://github.com/rust-lang/flate2-rs/pull/327) **Full Changelog**: https://github.com/rust-lang/flate2-rs/compare/1.0.24...1.0.25 ### [`v1.0.24`](https://github.com/rust-lang/flate2-rs/compare/1.0.23...1.0.24) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.23...1.0.24) ### [`v1.0.23`](https://github.com/rust-lang/flate2-rs/compare/1.0.22...1.0.23) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.22...1.0.23) ### [`v1.0.22`](https://github.com/rust-lang/flate2-rs/compare/1.0.21...1.0.22) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.21...1.0.22) ### [`v1.0.21`](https://github.com/rust-lang/flate2-rs/compare/1.0.20...1.0.21) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.20...1.0.21) ### [`v1.0.20`](https://github.com/rust-lang/flate2-rs/compare/1.0.19...1.0.20) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.19...1.0.20) ### [`v1.0.19`](https://github.com/rust-lang/flate2-rs/compare/1.0.18...1.0.19) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.18...1.0.19) ### [`v1.0.18`](https://github.com/rust-lang/flate2-rs/compare/1.0.17...1.0.18) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.17...1.0.18) ### [`v1.0.17`](https://github.com/rust-lang/flate2-rs/compare/1.0.16...1.0.17) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.16...1.0.17) ### [`v1.0.16`](https://github.com/rust-lang/flate2-rs/compare/1.0.14...1.0.16) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.14...1.0.16) ### [`v1.0.14`](https://github.com/rust-lang/flate2-rs/compare/1.0.13...1.0.14) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.13...1.0.14) ### [`v1.0.13`](https://github.com/rust-lang/flate2-rs/compare/1.0.12...1.0.13) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.12...1.0.13) ### [`v1.0.12`](https://github.com/rust-lang/flate2-rs/compare/1.0.11...1.0.12) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.11...1.0.12) ### [`v1.0.11`](https://github.com/rust-lang/flate2-rs/compare/1.0.10...1.0.11) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.10...1.0.11) ### [`v1.0.10`](https://github.com/rust-lang/flate2-rs/compare/1.0.9...1.0.10) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.9...1.0.10) ### [`v1.0.9`](https://github.com/rust-lang/flate2-rs/compare/1.0.8...1.0.9) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.8...1.0.9) ### [`v1.0.8`](https://github.com/rust-lang/flate2-rs/compare/1.0.7...1.0.8) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.7...1.0.8) ### [`v1.0.7`](https://github.com/rust-lang/flate2-rs/compare/1.0.6...1.0.7) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.6...1.0.7) ### [`v1.0.6`](https://github.com/rust-lang/flate2-rs/compare/1.0.5...1.0.6) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.5...1.0.6) ### [`v1.0.5`](https://github.com/rust-lang/flate2-rs/compare/1.0.4...1.0.5) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.4...1.0.5) ### [`v1.0.4`](https://github.com/rust-lang/flate2-rs/compare/1.0.3...1.0.4) [Compare Source](https://github.com/rust-lang/flate2-rs/compare/1.0.3...1.0.4) </details> <details> <summary>rust-lang/git2-rs (git2)</summary> ### [`v0.17.2`](https://github.com/rust-lang/git2-rs/blob/HEAD/CHANGELOG.md#0172---2023-05-27) [Compare Source](https://github.com/rust-lang/git2-rs/compare/0.17.1...0.17.2) [0.17.1...0.17.2](https://github.com/rust-lang/git2-rs/compare/0.17.1...0.17.2) ##### Added - Added support for stashing with options (which can support partial stashing). [#​930](https://github.com/rust-lang/git2-rs/pull/930) </details> <details> <summary>rust-lang/glob (glob)</summary> ### [`v0.3.1`](https://github.com/rust-lang/glob/releases/tag/0.3.1) [Compare Source](https://github.com/rust-lang/glob/compare/0.3.0...0.3.1) #### What's Changed - Add doc-comment to test README examples by [`@​GuillaumeGomez](https://github.com/GuillaumeGomez)` in [https://github.com/rust-lang/glob/pull/81](https://github.com/rust-lang/glob/pull/81) - Set up CI with Azure Pipelines by [`@​KodrAus](https://github.com/KodrAus)` in [https://github.com/rust-lang/glob/pull/86](https://github.com/rust-lang/glob/pull/86) - Use 'dyn' since trait objects without an explicit 'dyn' are deprecated by [`@​Atul9](https://github.com/Atul9)` in [https://github.com/rust-lang/glob/pull/87](https://github.com/rust-lang/glob/pull/87) - Fix tests on Windows by [`@​steveklabnik](https://github.com/steveklabnik)` in [https://github.com/rust-lang/glob/pull/88](https://github.com/rust-lang/glob/pull/88) - Add Debug trait to MatchOptions by [`@​brmmm3](https://github.com/brmmm3)` in [https://github.com/rust-lang/glob/pull/91](https://github.com/rust-lang/glob/pull/91) - Add triagebot configuration by [`@​Mark-Simulacrum](https://github.com/Mark-Simulacrum)` in [https://github.com/rust-lang/glob/pull/95](https://github.com/rust-lang/glob/pull/95) - Derive Debug for Paths by [`@​gibfahn](https://github.com/gibfahn)` in [https://github.com/rust-lang/glob/pull/97](https://github.com/rust-lang/glob/pull/97) - Derive Debug for MatchOptions by [`@​brmmm3](https://github.com/brmmm3)` in [https://github.com/rust-lang/glob/pull/99](https://github.com/rust-lang/glob/pull/99) - Move tokens_len into if block as it is only used there by [`@​brmmm3](https://github.com/brmmm3)` in [https://github.com/rust-lang/glob/pull/93](https://github.com/rust-lang/glob/pull/93) - Replace Azure Pipelines with GitHub Actions by [`@​KodrAus](https://github.com/KodrAus)` in [https://github.com/rust-lang/glob/pull/113](https://github.com/rust-lang/glob/pull/113) - Use SPDX license format by [`@​atouchet](https://github.com/atouchet)` in [https://github.com/rust-lang/glob/pull/115](https://github.com/rust-lang/glob/pull/115) - replace the Azure Pipelines status badge by [`@​KodrAus](https://github.com/KodrAus)` in [https://github.com/rust-lang/glob/pull/114](https://github.com/rust-lang/glob/pull/114) - Fix spacing in Readme by [`@​atouchet](https://github.com/atouchet)` in [https://github.com/rust-lang/glob/pull/119](https://github.com/rust-lang/glob/pull/119) - Update GHA OS versions to latest by [`@​JohnTitor](https://github.com/JohnTitor)` in [https://github.com/rust-lang/glob/pull/118](https://github.com/rust-lang/glob/pull/118) - Allow deprecation to `Error::description` by [`@​JohnTitor](https://github.com/JohnTitor)` in [https://github.com/rust-lang/glob/pull/120](https://github.com/rust-lang/glob/pull/120) - Note the difference between `new()` and `default()` by [`@​JohnTitor](https://github.com/JohnTitor)` in [https://github.com/rust-lang/glob/pull/121](https://github.com/rust-lang/glob/pull/121) - Prepare 0.3.1 release by [`@​JohnTitor](https://github.com/JohnTitor)` in [https://github.com/rust-lang/glob/pull/124](https://github.com/rust-lang/glob/pull/124) #### New Contributors - [`@​GuillaumeGomez](https://github.com/GuillaumeGomez)` made their first contribution in [https://github.com/rust-lang/glob/pull/81](https://github.com/rust-lang/glob/pull/81) - [`@​Atul9](https://github.com/Atul9)` made their first contribution in [https://github.com/rust-lang/glob/pull/87](https://github.com/rust-lang/glob/pull/87) - [`@​brmmm3](https://github.com/brmmm3)` made their first contribution in [https://github.com/rust-lang/glob/pull/91](https://github.com/rust-lang/glob/pull/91) - [`@​Mark-Simulacrum](https://github.com/Mark-Simulacrum)` made their first contribution in [https://github.com/rust-lang/glob/pull/95](https://github.com/rust-lang/glob/pull/95) - [`@​gibfahn](https://github.com/gibfahn)` made their first contribution in [https://github.com/rust-lang/glob/pull/97](https://github.com/rust-lang/glob/pull/97) - [`@​atouchet](https://github.com/atouchet)` made their first contribution in [https://github.com/rust-lang/glob/pull/115](https://github.com/rust-lang/glob/pull/115) - [`@​JohnTitor](https://github.com/JohnTitor)` made their first contribution in [https://github.com/rust-lang/glob/pull/118](https://github.com/rust-lang/glob/pull/118) **Full Changelog**: https://github.com/rust-lang/glob/compare/0.3.0...0.3.1 </details> <details> <summary>sunng87/handlebars-rust (handlebars)</summary> ### [`v3.5.5`](https://github.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#355---2021-05-03) [Compare Source](https://github.com/sunng87/handlebars-rust/compare/v3.5.4...v3.5.5) - \[Fixed] Panic on reporting invalid tag name \[[#​427](https://github.com/sunng87/handlebars-rust/issues/427)] ### [`v3.5.4`](https://github.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#354---2021-03-27) [Compare Source](https://github.com/sunng87/handlebars-rust/compare/v3.5.3...v3.5.4) - \[Fixed] Json string literal with escape char \[[#​422](https://github.com/sunng87/handlebars-rust/issues/422)] ### [`v3.5.3`](https://github.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#353---2021-02-20) [Compare Source](https://github.com/sunng87/handlebars-rust/compare/v3.5.2...v3.5.3) - \[Fixed] value access issue when upper block has a base value \[[#​419](https://github.com/sunng87/handlebars-rust/issues/419)] ### [`v3.5.2`](https://github.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#352---2020-12-29) [Compare Source](https://github.com/sunng87/handlebars-rust/compare/v3.5.1...v3.5.2) - \[Fixed] allow `/` as trailing separator on Windows, backported from master \[[#​405](https://github.com/sunng87/handlebars-rust/issues/405)] ### [`v3.5.1`](https://github.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#351---2020-10-25) [Compare Source](https://github.com/sunng87/handlebars-rust/compare/v3.5.0...v3.5.1) - \[Fixed] dir source path separator bug on windows \[[#​389](https://github.com/sunng87/handlebars-rust/issues/389)] ### [`v3.5.0`](https://github.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#350---2020-09-23) [Compare Source](https://github.com/sunng87/handlebars-rust/compare/v3.4.0...v3.5.0) - \[Changed] `#each` helper now renders else block for non-iterable data \[[#​380](https://github.com/sunng87/handlebars-rust/issues/380)] - \[Fixed] reference starts with `null`, `true` and `false` were parsed incorrectly \[[#​382](https://github.com/sunng87/handlebars-rust/issues/382)] ### [`v3.4.0`](https://github.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#340---2020-08-14) [Compare Source](https://github.com/sunng87/handlebars-rust/compare/v3.3.0...v3.4.0) - \[Added] Debug log that can be turned on by using envlog or other implementation, to trace data resolution during rendering \[[#​369](https://github.com/sunng87/handlebars-rust/issues/369)] - \[Fixed] Derived value as block context base value \[[#​343](https://github.com/sunng87/handlebars-rust/issues/343), [#​353](https://github.com/sunng87/handlebars-rust/issues/353)] - \[Fixed] Partial name aligned with handlebars.js, added support for `.`, escape `[]` and string `''` name - \[Changed] HTML escape aligned with handlebars.js, added `=`, `\` and \`\`\` \[[#​366](https://github.com/sunng87/handlebars-rust/issues/366)] - \[Changed] Update rhai to 0.18 \[[#​370](https://github.com/sunng87/handlebars-rust/issues/370)] - \[Fixed] Result of simple helper is now escaped \[[#​373](https://github.com/sunng87/handlebars-rust/issues/373)] ### [`v3.3.0`](https://github.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#330---2020-07-18) [Compare Source](https://github.com/sunng87/handlebars-rust/compare/v3.2.1...v3.3.0) - \[Added] Added two new APIs to reuse `Context` for rendering \[[#​352](https://github.com/sunng87/handlebars-rust/issues/352)] - \[Changed] Update rhai to 0.17 \[[#​354](https://github.com/sunng87/handlebars-rust/issues/354)] - \[Fixed] Fixed mustache.js html expression support, which is "&" instead of "$" </details> <details> <summary>KokaKiwi/rust-hex (hex)</summary> ### [`v0.4.3`](https://github.com/KokaKiwi/rust-hex/compare/v0.4.2...v0.4.3) [Compare Source](https://github.com/KokaKiwi/rust-hex/compare/v0.4.2...v0.4.3) </details> <details> <summary>scottlamb/http-auth (http-auth)</summary> ### [`v0.1.8`](https://github.com/scottlamb/http-auth/blob/HEAD/CHANGELOG.md#v018-2023-01-30) [Compare Source](https://github.com/scottlamb/http-auth/compare/v0.1.7...v0.1.8) - upgrade `base64` dependency from 0.20 to 0.21. ### [`v0.1.7`](https://github.com/scottlamb/http-auth/blob/HEAD/CHANGELOG.md#v017-2023-01-05) [Compare Source](https://github.com/scottlamb/http-auth/compare/v0.1.6...v0.1.7) - bump minimum Rust version to 1.57. - upgrade `base64` dependency from 0.13 to 0.20. </details> <details> <summary>tailhook/humantime (humantime)</summary> ### [`v2.1.0`](https://github.com/tailhook/humantime/compare/v2.0.1...v2.1.0) [Compare Source](https://github.com/tailhook/humantime/compare/v2.0.1...v2.1.0) ### [`v2.0.1`](https://github.com/tailhook/humantime/compare/v2.0.0...v2.0.1) [Compare Source](https://github.com/tailhook/humantime/compare/v2.0.0...v2.0.1) </details> <details> <summary>BurntSushi/ripgrep (ignore)</summary> ### [`v0.4.20`](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.19...ignore-0.4.20) [Compare Source](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.19...ignore-0.4.20) ### [`v0.4.19`](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.18...ignore-0.4.19) [Compare Source](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.18...ignore-0.4.19) ### [`v0.4.18`](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.17...ignore-0.4.18) [Compare Source](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.17...ignore-0.4.18) ### [`v0.4.17`](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.16...ignore-0.4.17) [Compare Source](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.16...ignore-0.4.17) ### [`v0.4.16`](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.15...ignore-0.4.16) [Compare Source](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.15...ignore-0.4.16) ### [`v0.4.15`](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.14...ignore-0.4.15) [Compare Source](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.14...ignore-0.4.15) ### [`v0.4.14`](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.13...ignore-0.4.14) [Compare Source](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.13...ignore-0.4.14) ### [`v0.4.13`](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.12...ignore-0.4.13) [Compare Source](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.12...ignore-0.4.13) ### [`v0.4.12`](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.11...ignore-0.4.12) [Compare Source](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.11...ignore-0.4.12) ### [`v0.4.11`](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.10...ignore-0.4.11) [Compare Source](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.10...ignore-0.4.11) ### [`v0.4.10`](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.9...ignore-0.4.10) [Compare Source](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.9...ignore-0.4.10) ### [`v0.4.9`](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.8...ignore-0.4.9) [Compare Source](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.8...ignore-0.4.9) ### [`v0.4.8`](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.7...ignore-0.4.8) [Compare Source](https://github.com/BurntSushi/ripgrep/compare/ignore-0.4.7...ignore-0.4.8) </details> <details> <summary>bodil/im-rs (im-rc)</summary> ### [`v15.1.0`](https://github.com/bodil/im-rs/blob/HEAD/CHANGELOG.md#1510---2022-04-29) [Compare Source](https://github.com/bodil/im-rs/compare/v15.0.0...v15.1.0) ##### Added - `HashSet` now implements `From<Vector<A>>` and `From<&Vector<A>> where A: Clone`. ##### Fixed - Fixed a long standing crash bug in `OrdMap`/`OrdSet`. ([#​154](https://github.com/bodil/im-rs/issues/154), [#​143](https://github.com/bodil/im-rs/issues/143), [#​152](https://github.com/bodil/im-rs/issues/152), [#​124](https://github.com/bodil/im-rs/issues/124)) - The `union` method on maps/sets will now prefer to mutate the larger set (which leads to less work) rather than the first set. ([#​163](https://github.com/bodil/im-rs/issues/163)) - Ensure `TreeFocus` only implements `Send`/`Sync` when the underlying type does. ([#​157](https://github.com/bodil/im-rs/issues/157), [#​158](https://github.com/bodil/im-rs/issues/158)) - There was an issue where nodes in very large `OrdMap`s could overflow when removing an element and cause a panic, which has now been fixed. ([#​141](https://github.com/bodil/im-rs/issues/141)) - Assorted doc cleanup. ([#​150](https://github.com/bodil/im-rs/issues/150), [#​173](https://github.com/bodil/im-rs/issues/173), [#​186](https://github.com/bodil/im-rs/issues/186), [#​194](https://github.com/bodil/im-rs/issues/194)) </details> <details> <summary>rust-lang-nursery/lazy-static.rs (lazy_static)</summary> ### [`v1.4.0`](https://github.com/rust-lang-nursery/lazy-static.rs/releases/tag/1.4.0) [Compare Source](https://github.com/rust-lang-nursery/lazy-static.rs/compare/1.3.0...1.4.0) **Bumps the minimum supported version of `rustc` to `1.27.2`** - [Fix typo in lib.rs](https://github.com/rust-lang-nursery/lazy-static.rs/pull/144) (thanks [`@​fbruetting](https://github.com/fbruetting))` - [Automatically check if README.md examples are working when running "cargo test"](https://github.com/rust-lang-nursery/lazy-static.rs/pull/145) (thanks [`@​GuillaumeGomez](https://github.com/GuillaumeGomez))` - [Allow deprecated to remove warnings in nightly](https://github.com/rust-lang-nursery/lazy-static.rs/pull/152) (thanks [`@​Schaeff](https://github.com/Schaeff))` - [bump MSRV to 1.27.2](https://github.com/rust-lang-nursery/lazy-static.rs/pull/155) (thanks [`@​matklad](https://github.com/matklad))` </details> <details> <summary>indiv0/lazycell (lazycell)</summary> ### [`v1.3.0`](https://github.com/indiv0/lazycell/blob/HEAD/CHANGELOG.md#v130-2020-08-12) ##### Bug Fixes - Add custom `impl Default` to support non-Default-able `<T>` types ([b49f4eab](https://github.com/indiv0/lazycell/commit/b49f4eabec49c0a5146ef01017c2506a3c357180)) - **lazycell:** Fix unsound aliasing in `LazyCell::fill` ([e789ac1a](https://github.com/indiv0/lazycell/commit/e789ac1a99010ad79c2d09c761fec6d67053647d), closes [#​98](https://github.com/indiv0/lazycell/issues/98)) ##### Features - Implement serde support ([e728a0b6](https://github.com/indiv0/lazycell/commit/e728a0b680e607b793a81b5af7bf7f1d2c0eb5e5)) ##### Documentation - fix typo ([5f5ba9d5](https://github.com/indiv0/lazycell/commit/5f5ba9d5ac3364f8376c0c872c2e5094974385ba)) ### [`v1.2.1`](https://github.com/indiv0/lazycell/blob/HEAD/CHANGELOG.md#v121-2018-12-03) [Compare Source](https://github.com/indiv0/lazycell/compare/v1.2.0...v1.2.1) ##### Features - Implement Clone for LazyCell and AtomicLazyCell ([30fe4a8f](https://github.com/indiv0/lazycell/commit/30fe4a8f568059b3c78ed149a810962a676cb2b2)) </details> <details> <summary>rust-lang/libc (libc)</summary> ### [`v0.2.147`](https://github.com/rust-lang/libc/releases/tag/0.2.147) [Compare Source](https://github.com/rust-lang/libc/compare/0.2.146...0.2.147) #### What's Changed - Add socket timestamping for Android by [`@​spencercw](https://github.com/spencercw)` in [https://github.com/rust-lang/libc/pull/3267](https://github.com/rust-lang/libc/pull/3267) - Fix s390x-installer paths by [`@​JohnTitor](https://github.com/JohnTitor)` in [https://github.com/rust-lang/libc/pull/3281](https://github.com/rust-lang/libc/pull/3281) - Generate documentation for all supported targets on docs.rs by [`@​GuillaumeGomez](https://github.com/GuillaumeGomez)` in [https://github.com/rust-lang/libc/pull/3279](https://github.com/rust-lang/libc/pull/3279) - Define `IPPROTO_ETHERNET` on Linux-like platforms. by [`@​sunfishcode](https://github.com/sunfishcode)` in [https://github.com/rust-lang/libc/pull/3272](https://github.com/rust-lang/libc/pull/3272) - Add trait implementations for QNX Neutrino by [`@​flba-eb](https://github.com/flba-eb)` in [https://github.com/rust-lang/libc/pull/3273](https://github.com/rust-lang/libc/pull/3273) - getentropy addition to android by [`@​devnexen](https://github.com/devnexen)` in [https://github.com/rust-lang/libc/pull/3270](https://github.com/rust-lang/libc/pull/3270) - android adding sendfile64 variant by [`@​devnexen](https://github.com/devnexen)` in [https://github.com/rust-lang/libc/pull/3271](https://github.com/rust-lang/libc/pull/3271) - android: Add NLM_F_DUMP_FILTERED constant by [`@​dragan-cecavac-nordsec](https://github.com/dragan-cecavac-nordsec)` in [https://github.com/rust-lang/libc/pull/3276](https://github.com/rust-lang/libc/pull/3276) - Update and release version 0.2.147 by [`@​flba-eb](https://github.com/flba-eb)` in [https://github.com/rust-lang/libc/pull/3283](https://github.com/rust-lang/libc/pull/3283) #### New Contributors - [`@​dragan-cecavac-nordsec](https://github.com/dragan-cecavac-nordsec)` made their first contribution in [https://github.com/rust-lang/libc/pull/3276](https://github.com/rust-lang/libc/pull/3276) **Full Changelog**: https://github.com/rust-lang/libc/compare/0.2.146...0.2.147 ### [`v0.2.146`](https://github.com/rust-lang/libc/releases/tag/0.2.146) [Compare Source](https://github.com/rust-lang/libc/compare/0.2.145...0.2.146) #### What's Changed - Use `use` to alias open/openat in lfs64.rs by [`@​bossmc](https://github.com/bossmc)` in [https://github.com/rust-lang/libc/pull/3265](https://github.com/rust-lang/libc/pull/3265) - Update crate version to 0.2.146 by [`@​nikarh](https://github.com/nikarh)` in [https://github.com/rust-lang/libc/pull/3266](https://github.com/rust-lang/libc/pull/3266) **Full Changelog**: https://github.com/rust-lang/libc/compare/0.2.145...0.2.146 ### [`v0.2.145`](https://github.com/rust-lang/libc/releases/tag/0.2.145) [Compare Source](https://github.com/rust-lang/libc/compare/0.2.144...0.2.145) **This version has been yanked on crates.io.** #### What's Changed - redox add sig(timed)wait calls by [`@​devnexen](https://github.com/devnexen)` in [https://github.com/rust-lang/libc/pull/3244](https://github.com/rust-lang/libc/pull/3244) - Support for `PTRACE_SYSEMU` and `PTRACE_SYSEMU_SINGLESTEP` on musl by [`@​emilengler](https://github.com/emilengler)` in [https://github.com/rust-lang/libc/pull/3245](https://github.com/rust-lang/libc/pull/3245) - Fix loongarch64 bindings by [`@​heiher](https://github.com/heiher)` in [https://github.com/rust-lang/libc/pull/3246](https://github.com/rust-lang/libc/pull/3246) - Add linux canxl constants and canxl frame struct by [`@​marcelbuesing](https://github.com/marcelbuesing)` in [https://github.com/rust-lang/libc/pull/3247](https://github.com/rust-lang/libc/pull/3247) - Change branch references to HEAD where possible or main otherwise by [`@​joshtriplett](https://github.com/joshtriplett)` in [https://github.com/rust-lang/libc/pull/3249](https://github.com/rust-lang/libc/pull/3249) - linux/musl/s390x: change f_\* constants to uint from ulong by [`@​nekopsykose](https://github.com/nekopsykose)` in [https://github.com/rust-lang/libc/pull/3137](https://github.com/rust-lang/libc/pull/3137) - android: add memmem by [`@​tibordp](https://github.com/tibordp)` in [https://github.com/rust-lang/libc/pull/3252](https://github.com/rust-lang/libc/pull/3252) - redox adding lockf flags by [`@​devnexen](https://github.com/devnexen)` in [https://github.com/rust-lang/libc/pull/3251](https://github.com/rust-lang/libc/pull/3251) - Add ucred struct and field type aliases for redox by [`@​andrewdavidmackenzie](https://github.com/andrewdavidmackenzie)` in [https://github.com/rust-lang/libc/pull/3250](https://github.com/rust-lang/libc/pull/3250) - Fixed vita libc definitions by [`@​nikarh](https://github.com/nikarh)` in [https://github.com/rust-lang/libc/pull/3255](https://github.com/rust-lang/libc/pull/3255) - Skip round-trip tests for structs with FAMs by [`@​bossmc](https://github.com/bossmc)` in [https://github.com/rust-lang/libc/pull/3254](https://github.com/rust-lang/libc/pull/3254) - Fixed pthread_attr_t and pthread_rwlockattr_t for newlib by [`@​nikarh](https://github.com/nikarh)` in [https://github.com/rust-lang/libc/pull/3256](https://github.com/rust-lang/libc/pull/3256) - Alias all LFS64 symbols to their non-LFS64 counterparts on musl by [`@​bossmc](https://github.com/bossmc)` in [https://github.com/rust-lang/libc/pull/2935](https://github.com/rust-lang/libc/pull/2935) - add constants and structs for vsock on macos by [`@​tzneal](https://github.com/tzneal)` in [https://github.com/rust-lang/libc/pull/3258](https://github.com/rust-lang/libc/pull/3258) - dragonflybsd supports malloc_usable_size too by [`@​devnexen](https://github.com/devnexen)` in [https://github.com/rust-lang/libc/pull/3253](https://github.com/rust-lang/libc/pull/3253) - linux-gnu: add putpwent/putgrent by [`@​superwhiskers](https://togithub.c` </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 3am on the first day of the month" (UTC), 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://github.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://developer.mend.io/github/rust-lang/cargo). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4yNC4yIiwidXBkYXRlZEluVmVyIjoiMzYuMjQuMiIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->
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.
How about add an optional key? Just like: pub fn provide_value<T>(&mut self, key: Option<&str>, value: T) -> &mut Demand<'a>; then we can provide multi value with the same type, such as: struct Sth {
foo: String,
bar: String,
}
impl Provider for Sth {
fn provide<'a>(&'a self, demand: &mut Demand<'a>) {
demand
.provide_value::<String>(Some("foo"), self.foo)
.provide_value::<String>(Some("bar"), self.bar);
}
} |
FEI, the Provider API has been rejected by the libs meeting folks. For more background, please see my earlier comment in this issue: #96024 (comment) The TL;DR is that the The only thing that's left to do as far as this tracking issue is concerned is to close it (as far as I understand). |
Is there any third-party crate to maintain the |
@TennyZhuang the closest thing I know of was mentioned in the notes for this feature's RFC, which can be found here: provide-any I don't know how similar this is to what was unstable here in the standard library and there are no published crates. |
There is also the supplier crate that I made in response to this feature being removed. I also consider it unstable but it's a direct lift and shift from the latest provider impl that std had in nightly https://docs.rs/supplier/0.0.2/supplier/ I had plans to change the API but all my attempts so far have failed to be beneficial |
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.
It would seem the provide_any feature has been removed from nightly rust[1], so this does not compile anymore. Fix this by removing this attribute. [1] rust-lang/rust#96024 (comment)
It would seem the provide_any feature has been removed from nightly rust[1], so this does not compile anymore. Fix this by removing this attribute. [1] rust-lang/rust#96024 (comment)
It would seem the provide_any feature has been removed from nightly rust[1], so this does not compile anymore. Fix this by removing this attribute. [1] rust-lang/rust#96024 (comment)
Feature gate:
#![feature(provide_any)]
This is a tracking issue for RFC 3192
The initial motivating use case for this API is to provide the necessary functionality to add generic member access to the
Error
trait to generalize extracting context likeBacktrace
and to make it possible to move theError
trait intocore
while leavingBacktrace
instd
.Public API
Steps / History
Provider
trait and merge its functionality intoError
.demand
orrequest
and use that name consistently..provide_*
calls into a switch table because each call fetches the type id fromErased::type_id
separately each time and the compiler doesn't know that these calls all return the same value. This should be fixed. See Add provide_any module to core rfcs#3192 (comment) for one possible solution (although alternative solutions may be possible).Unresolved Questions
demand_*
orrequest_*
?The text was updated successfully, but these errors were encountered: