Skip to content

Update Rust crate thiserror to v2#418

Merged
taspelund merged 2 commits intomainfrom
renovate/thiserror-2.x
Mar 24, 2026
Merged

Update Rust crate thiserror to v2#418
taspelund merged 2 commits intomainfrom
renovate/thiserror-2.x

Conversation

@oxide-renovate
Copy link
Copy Markdown
Contributor

@oxide-renovate oxide-renovate Bot commented Nov 26, 2024

This PR contains the following updates:

Package Type Update Change
thiserror workspace.dependencies major 1.02.0

Release Notes

dtolnay/thiserror (thiserror)

v2.0.18

Compare Source

v2.0.17

Compare Source

  • Use differently named __private module per patch release (#​434)

v2.0.16

Compare Source

  • Add to "no-std" crates.io category (#​429)

v2.0.15

Compare Source

  • Prevent Error::provide API becoming unavailable from a future new compiler lint (#​427)

v2.0.14

Compare Source

  • Allow build-script cleanup failure with NFSv3 output directory to be non-fatal (#​426)

v2.0.13

Compare Source

  • Documentation improvements

v2.0.12

Compare Source

  • Prevent elidable_lifetime_names pedantic clippy lint in generated impl (#​413)

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 - "after 8pm,before 6am" in timezone America/Los_Angeles, Automerge - "after 8pm,before 6am" in timezone America/Los_Angeles.

🚦 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.


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

This PR has been generated by Renovate Bot.

@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch from 38057ed to 672ba08 Compare February 14, 2025 06:20
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch 3 times, most recently from 20de2e4 to 7d8aefb Compare March 24, 2025 22:12
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch from 7d8aefb to 7dca9cf Compare April 3, 2025 18:15
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch from 7dca9cf to 5e5a776 Compare June 3, 2025 04:46
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch from 5e5a776 to 4aa934b Compare July 17, 2025 03:30
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch 3 times, most recently from d7997ed to 5317584 Compare September 13, 2025 03:06
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch from 5317584 to 498c7d5 Compare September 14, 2025 03:15
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch from 498c7d5 to be15086 Compare October 2, 2025 03:15
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch from be15086 to cc76955 Compare December 3, 2025 05:51
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch from cc76955 to 5c8c9cc Compare December 11, 2025 04:27
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch 2 times, most recently from 8be66d1 to 925dc2d Compare January 8, 2026 04:16
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch 2 times, most recently from 7887485 to 64db03d Compare February 12, 2026 04:31
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch from 64db03d to 8cf371a Compare February 17, 2026 05:19
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch 2 times, most recently from 979d91b to e0a436d Compare March 21, 2026 03:26
@oxide-renovate oxide-renovate Bot force-pushed the renovate/thiserror-2.x branch from e0a436d to 4b7a327 Compare March 24, 2026 16:46
thiserror 2.x rejects mixing implicit {} and explicit {0} positional
arguments in #[error] format strings on tuple variants. Use named
arguments to resolve the ambiguity.
@oxide-renovate
Copy link
Copy Markdown
Contributor Author

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@taspelund taspelund merged commit 1685105 into main Mar 24, 2026
15 checks passed
@taspelund taspelund deleted the renovate/thiserror-2.x branch March 24, 2026 18:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant