Skip to content
Snippets Groups Projects

fix(deps): update rust crate thiserror to v2

Open Renovate Bot requested to merge renovate/thiserror-2.x into master

This MR contains the following updates:

Package Type Update Change
thiserror dependencies major 1.0 -> 2.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

:date: Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

:vertical_traffic_light: Automerge: Disabled by config. Please merge this manually once you are satisfied.

:recycle: Rebasing: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

:no_bell: Ignore: Close this MR and you won't be reminded about this update again.


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

This MR has been generated by Renovate Bot.

Edited by Renovate Bot

Merge request reports

Pipeline #670 failed

Pipeline failed for b9d78bca on renovate/thiserror-2.x

Approval is optional
Ready to merge by members who can write to the target branch.
  • The source branch is 18 commits behind the target branch.
  • 1 commit and 1 merge commit will be added to master.
  • Source branch will be deleted.

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Author Developer

    :warning: Artifact update problem

    Renovate failed to update an artifact related to this branch. You probably do not want to merge this MR as-is.

    :recycle: 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 MR'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 Cargo.toml --package thiserror@1.0.23 --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 `redox_users v0.4.3`
        ... which satisfies dependency `redox_users = "^0.4"` (locked to 0.4.3) of package `dirs-sys v0.3.7`
        ... which satisfies dependency `dirs-sys = "^0.3.6"` (locked to 0.3.7) of package `dirs v4.0.0`
        ... which satisfies dependency `dirs = "^4.0"` (locked to 4.0.0) of package `xdg v2.4.1`
        ... which satisfies dependency `xdg = "^2.4"` (locked to 2.4.1) of package `collective v0.1.2 (/builds/etcinit/renovate-runner/renovate/repos/gitlab/etcinit/collective)`
    
  • Renovate Bot mentioned in issue #1

    mentioned in issue #1

  • Renovate Bot added 3 commits

    added 3 commits

    Compare with previous version

  • Renovate Bot changed the description

    changed the description

Please register or sign in to reply
Loading