fix(deps): update rust crate thiserror to v2 #27

Merged
wathiede merged 1 commits from renovate/thiserror-2.x into master 2025-02-11 20:27:41 -08:00
Collaborator

This PR contains the following updates:

Package Type Update Change
thiserror dependencies major 1.0.50 -> 2.0.0
thiserror dependencies major 1.0.37 -> 2.0.0
thiserror dependencies major 1.0.30 -> 2.0.0

Release Notes

dtolnay/thiserror (thiserror)

v2.0.11

Compare Source

v2.0.10

Compare Source

  • Support errors containing a generic type parameter's associated type in a field (#​408)

v2.0.9

Compare Source

  • Work around missing_inline_in_public_items clippy restriction being triggered in macro-generated code (#​404)

v2.0.8

Compare Source

  • Improve support for macro-generated derive(Error) call sites (#​399)

v2.0.7

Compare Source

  • Work around conflict with #[deny(clippy::allow_attributes)] (#​397, thanks @​zertosh)

v2.0.6

Compare Source

  • Suppress deprecation warning on generated From impls (#​396)

v2.0.5

Compare Source

  • Prevent deprecation warning on generated impl for deprecated type (#​394)

v2.0.4

Compare Source

v2.0.3

Compare Source

  • Support the same Path field being repeated in both Debug and Display representation in error message (#​383)
  • Improve error message when a format trait used in error message is not implemented by some field (#​384)

v2.0.2

Compare Source

  • Fix hang on invalid input inside #[error(...)] attribute (#​382)

v2.0.1

Compare Source

  • Support errors that contain a dynamically sized final field (#​375)
  • Improve inference of trait bounds for fields that are interpolated multiple times in an error message (#​377)

v2.0.0

Compare Source

Breaking changes
  • Referencing keyword-named fields by a raw identifier like {r#type} inside a format string is no longer accepted; simply use the unraw name like {type} (#​347)

    This aligns thiserror with the standard library's formatting macros, which gained support for implicit argument capture later than the release of this feature in thiserror 1.x.

    #[derive(Error, Debug)]
    #[error("... {type} ...")]  // Before: {r#type}
    pub struct Error {
        pub r#type: Type,
    }
    
  • Trait bounds are no longer inferred on fields whose value is shadowed by an explicit named argument in a format message (#​345)

    // Before: impl<T: Octal> Display for Error<T>
    // After: impl<T> Display for Error<T>
    #[derive(Error, Debug)]
    #[error("{thing:o}", thing = "...")]
    pub struct Error<T> {
        thing: T,
    }
    
  • Tuple structs and tuple variants can no longer use numerical {0} {1} access at the same time as supplying extra positional arguments for a format message, as this makes it ambiguous whether the number refers to a tuple field vs a different positional arg (#​354)

    #[derive(Error, Debug)]
    #[error("ambiguous: {0} {}", $N)]
    //                  ^^^ Not allowed, use #[error("... {0} {n}", n = $N)]
    pub struct TupleError(i32);
    
  • Code containing invocations of thiserror's derive(Error) must now have a direct dependency on the thiserror crate regardless of the error data structure's contents (#​368, #​369, #​370, #​372)

Features
  • Support disabling thiserror's standard library dependency by disabling the default "std" Cargo feature: thiserror = { version = "2", default-features = false } (#​373)

  • Support using r#source as field name to opt out of a field named "source" being treated as an error's Error::source() (#​350)

    #[derive(Error, Debug)]
    #[error("{source} ==> {destination}")]
    pub struct Error {
        r#source: char,
        destination: char,
    }
    
    let error = Error { source: 'S', destination: 'D' };
    
  • Infinite recursion in a generated Display impl now produces an unconditional_recursion warning (#​359)

    #[derive(Error, Debug)]
    #[error("??? {self}")]
    pub struct Error;
    
  • A new attribute #[error(fmt = path::to::myfmt)] can be used to write formatting logic for an enum variant out-of-line (#​367)

    #[derive(Error, Debug)]
    pub enum Error {
        #[error(fmt = demo_fmt)]
        Demo { code: u16, message: Option<String> },
    }
    
    fn demo_fmt(code: &u16, message: &Option<String>, formatter: &mut fmt::Formatter) -> fmt::Result {
        write!(formatter, "{code}")?;
        if let Some(msg) = message {
            write!(formatter, " - {msg}")?;
        }
        Ok(())
    }
    
  • Enums with an enum-level format message are now able to have individual variants that are transparent to supersede the enum-level message (#​366)

    #[derive(Error, Debug)]
    #[error("my error {0}")]
    pub enum Error {
        Json(#[from] serde_json::Error),
        Yaml(#[from] serde_yaml::Error),
        #[error(transparent)]
        Other(#[from] anyhow::Error),
    }
    

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 these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [thiserror](https://github.com/dtolnay/thiserror) | dependencies | major | `1.0.50` -> `2.0.0` | | [thiserror](https://github.com/dtolnay/thiserror) | dependencies | major | `1.0.37` -> `2.0.0` | | [thiserror](https://github.com/dtolnay/thiserror) | dependencies | major | `1.0.30` -> `2.0.0` | --- ### Release Notes <details> <summary>dtolnay/thiserror (thiserror)</summary> ### [`v2.0.11`](https://github.com/dtolnay/thiserror/releases/tag/2.0.11) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.10...2.0.11) - Add feature gate to tests that use std ([#&#8203;409](https://github.com/dtolnay/thiserror/issues/409), [#&#8203;410](https://github.com/dtolnay/thiserror/issues/410), thanks [@&#8203;Maytha8](https://github.com/Maytha8)) ### [`v2.0.10`](https://github.com/dtolnay/thiserror/releases/tag/2.0.10) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.9...2.0.10) - Support errors containing a generic type parameter's associated type in a field ([#&#8203;408](https://github.com/dtolnay/thiserror/issues/408)) ### [`v2.0.9`](https://github.com/dtolnay/thiserror/releases/tag/2.0.9) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.8...2.0.9) - Work around `missing_inline_in_public_items` clippy restriction being triggered in macro-generated code ([#&#8203;404](https://github.com/dtolnay/thiserror/issues/404)) ### [`v2.0.8`](https://github.com/dtolnay/thiserror/releases/tag/2.0.8) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.7...2.0.8) - Improve support for macro-generated `derive(Error)` call sites ([#&#8203;399](https://github.com/dtolnay/thiserror/issues/399)) ### [`v2.0.7`](https://github.com/dtolnay/thiserror/releases/tag/2.0.7) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.6...2.0.7) - Work around conflict with #\[deny(clippy::allow_attributes)] ([#&#8203;397](https://github.com/dtolnay/thiserror/issues/397), thanks [@&#8203;zertosh](https://github.com/zertosh)) ### [`v2.0.6`](https://github.com/dtolnay/thiserror/releases/tag/2.0.6) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.5...2.0.6) - Suppress deprecation warning on generated From impls ([#&#8203;396](https://github.com/dtolnay/thiserror/issues/396)) ### [`v2.0.5`](https://github.com/dtolnay/thiserror/releases/tag/2.0.5) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.4...2.0.5) - Prevent deprecation warning on generated impl for deprecated type ([#&#8203;394](https://github.com/dtolnay/thiserror/issues/394)) ### [`v2.0.4`](https://github.com/dtolnay/thiserror/releases/tag/2.0.4) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.3...2.0.4) - Eliminate needless_lifetimes clippy lint in generated `From` impls ([#&#8203;391](https://github.com/dtolnay/thiserror/issues/391), thanks [@&#8203;matt-phylum](https://github.com/matt-phylum)) ### [`v2.0.3`](https://github.com/dtolnay/thiserror/releases/tag/2.0.3) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.2...2.0.3) - Support the same Path field being repeated in both Debug and Display representation in error message ([#&#8203;383](https://github.com/dtolnay/thiserror/issues/383)) - Improve error message when a format trait used in error message is not implemented by some field ([#&#8203;384](https://github.com/dtolnay/thiserror/issues/384)) ### [`v2.0.2`](https://github.com/dtolnay/thiserror/releases/tag/2.0.2) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.1...2.0.2) - Fix hang on invalid input inside #\[error(...)] attribute ([#&#8203;382](https://github.com/dtolnay/thiserror/issues/382)) ### [`v2.0.1`](https://github.com/dtolnay/thiserror/releases/tag/2.0.1) [Compare Source](https://github.com/dtolnay/thiserror/compare/2.0.0...2.0.1) - Support errors that contain a dynamically sized final field ([#&#8203;375](https://github.com/dtolnay/thiserror/issues/375)) - Improve inference of trait bounds for fields that are interpolated multiple times in an error message ([#&#8203;377](https://github.com/dtolnay/thiserror/issues/377)) ### [`v2.0.0`](https://github.com/dtolnay/thiserror/releases/tag/2.0.0) [Compare Source](https://github.com/dtolnay/thiserror/compare/1.0.69...2.0.0) ##### Breaking changes - Referencing keyword-named fields by a raw identifier like `{r#type}` inside a format string is no longer accepted; simply use the unraw name like `{type}` ([#&#8203;347](https://github.com/dtolnay/thiserror/issues/347)) This aligns thiserror with the standard library's formatting macros, which gained support for implicit argument capture later than the release of this feature in thiserror 1.x. ```rust #[derive(Error, Debug)] #[error("... {type} ...")] // Before: {r#type} pub struct Error { pub r#type: Type, } ``` - Trait bounds are no longer inferred on fields whose value is shadowed by an explicit named argument in a format message ([#&#8203;345](https://github.com/dtolnay/thiserror/issues/345)) ```rust // Before: impl<T: Octal> Display for Error<T> // After: impl<T> Display for Error<T> #[derive(Error, Debug)] #[error("{thing:o}", thing = "...")] pub struct Error<T> { thing: T, } ``` - Tuple structs and tuple variants can no longer use numerical `{0}` `{1}` access at the same time as supplying extra positional arguments for a format message, as this makes it ambiguous whether the number refers to a tuple field vs a different positional arg ([#&#8203;354](https://github.com/dtolnay/thiserror/issues/354)) ```rust #[derive(Error, Debug)] #[error("ambiguous: {0} {}", $N)] // ^^^ Not allowed, use #[error("... {0} {n}", n = $N)] pub struct TupleError(i32); ``` - Code containing invocations of thiserror's `derive(Error)` must now have a direct dependency on the `thiserror` crate regardless of the error data structure's contents ([#&#8203;368](https://github.com/dtolnay/thiserror/issues/368), [#&#8203;369](https://github.com/dtolnay/thiserror/issues/369), [#&#8203;370](https://github.com/dtolnay/thiserror/issues/370), [#&#8203;372](https://github.com/dtolnay/thiserror/issues/372)) ##### Features - Support disabling thiserror's standard library dependency by disabling the default "std" Cargo feature: `thiserror = { version = "2", default-features = false }` ([#&#8203;373](https://github.com/dtolnay/thiserror/issues/373)) - Support using `r#source` as field name to opt out of a field named "source" being treated as an error's `Error::source()` ([#&#8203;350](https://github.com/dtolnay/thiserror/issues/350)) ```rust #[derive(Error, Debug)] #[error("{source} ==> {destination}")] pub struct Error { r#source: char, destination: char, } let error = Error { source: 'S', destination: 'D' }; ``` - Infinite recursion in a generated Display impl now produces an `unconditional_recursion` warning ([#&#8203;359](https://github.com/dtolnay/thiserror/issues/359)) ```rust #[derive(Error, Debug)] #[error("??? {self}")] pub struct Error; ``` - A new attribute `#[error(fmt = path::to::myfmt)]` can be used to write formatting logic for an enum variant out-of-line ([#&#8203;367](https://github.com/dtolnay/thiserror/issues/367)) ```rust #[derive(Error, Debug)] pub enum Error { #[error(fmt = demo_fmt)] Demo { code: u16, message: Option<String> }, } fn demo_fmt(code: &u16, message: &Option<String>, formatter: &mut fmt::Formatter) -> fmt::Result { write!(formatter, "{code}")?; if let Some(msg) = message { write!(formatter, " - {msg}")?; } Ok(()) } ``` - Enums with an enum-level format message are now able to have individual variants that are `transparent` to supersede the enum-level message ([#&#8203;366](https://github.com/dtolnay/thiserror/issues/366)) ```rust #[derive(Error, Debug)] #[error("my error {0}")] pub enum Error { Json(#[from] serde_json::Error), Yaml(#[from] serde_yaml::Error), #[error(transparent)] Other(#[from] anyhow::Error), } ``` </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 these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjQuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
Author
Collaborator

⚠️ Artifact update problem

Renovate failed to update artifacts related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path notmuch/Cargo.toml --package thiserror@1.0.69 --precise 2.0.11
    Updating crates.io index
error: failed to select a version for the requirement `thiserror = "^1.0"`
candidate versions found which didn't match: 2.0.11
location searched: crates.io index
required by package `gloo-net v0.6.0`
    ... which satisfies dependency `gloo-net = "^0.6.0"` (locked to 0.6.0) of package `letterbox v0.0.138 (/data/repos/gitea/wathiede/letterbox/web)`

File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path server/Cargo.toml --package thiserror@1.0.69 --precise 2.0.11
    Updating crates.io index
error: failed to select a version for the requirement `thiserror = "^1.0"`
candidate versions found which didn't match: 2.0.11
location searched: crates.io index
required by package `gloo-net v0.6.0`
    ... which satisfies dependency `gloo-net = "^0.6.0"` (locked to 0.6.0) of package `letterbox v0.0.138 (/data/repos/gitea/wathiede/letterbox/web)`

File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path web/Cargo.toml --package thiserror@1.0.69 --precise 2.0.11
    Updating crates.io index
error: failed to select a version for the requirement `thiserror = "^1.0"`
candidate versions found which didn't match: 2.0.11
location searched: crates.io index
required by package `gloo-net v0.6.0`
    ... which satisfies dependency `gloo-net = "^0.6.0"` (locked to 0.6.0) of package `letterbox v0.0.138 (/data/repos/gitea/wathiede/letterbox/web)`

### ⚠️ Artifact update problem Renovate failed to update artifacts related to this branch. You probably do not want to merge this PR as-is. ♻ Renovate will retry this branch, including artifacts, only when one of the following happens: - any of the package files in this branch needs updating, or - the branch becomes conflicted, or - you click the rebase/retry checkbox if found above, or - you rename this PR's title to start with "rebase!" to trigger it manually The artifact failure details are included below: ##### File name: Cargo.lock ``` Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path notmuch/Cargo.toml --package thiserror@1.0.69 --precise 2.0.11 Updating crates.io index error: failed to select a version for the requirement `thiserror = "^1.0"` candidate versions found which didn't match: 2.0.11 location searched: crates.io index required by package `gloo-net v0.6.0` ... which satisfies dependency `gloo-net = "^0.6.0"` (locked to 0.6.0) of package `letterbox v0.0.138 (/data/repos/gitea/wathiede/letterbox/web)` ``` ##### File name: Cargo.lock ``` Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path server/Cargo.toml --package thiserror@1.0.69 --precise 2.0.11 Updating crates.io index error: failed to select a version for the requirement `thiserror = "^1.0"` candidate versions found which didn't match: 2.0.11 location searched: crates.io index required by package `gloo-net v0.6.0` ... which satisfies dependency `gloo-net = "^0.6.0"` (locked to 0.6.0) of package `letterbox v0.0.138 (/data/repos/gitea/wathiede/letterbox/web)` ``` ##### File name: Cargo.lock ``` Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path web/Cargo.toml --package thiserror@1.0.69 --precise 2.0.11 Updating crates.io index error: failed to select a version for the requirement `thiserror = "^1.0"` candidate versions found which didn't match: 2.0.11 location searched: crates.io index required by package `gloo-net v0.6.0` ... which satisfies dependency `gloo-net = "^0.6.0"` (locked to 0.6.0) of package `letterbox v0.0.138 (/data/repos/gitea/wathiede/letterbox/web)` ```
renovatebot force-pushed renovate/thiserror-2.x from 1d9fa1e404 to 69c63ebe38 2025-02-09 14:45:51 -08:00 Compare
renovatebot force-pushed renovate/thiserror-2.x from 69c63ebe38 to 6c01fff4c5 2025-02-09 14:56:08 -08:00 Compare
renovatebot force-pushed renovate/thiserror-2.x from 6c01fff4c5 to a9803bb6a1 2025-02-10 17:31:43 -08:00 Compare
wathiede merged commit 083b7c9f1c into master 2025-02-11 20:27:41 -08:00
wathiede deleted branch renovate/thiserror-2.x 2025-02-11 20:27:41 -08:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wathiede/letterbox#27
No description provided.