-
Notifications
You must be signed in to change notification settings - Fork 8
Commit 35ac45d
Update Rust crate thiserror to v2 (#33909)
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [thiserror](https://redirect.github.com/dtolnay/thiserror) | workspace.dependencies | major | `1` -> `2` |
---
### Release Notes
<details>
<summary>dtolnay/thiserror (thiserror)</summary>
### [`v2.0.11`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.11)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/2.0.10...2.0.11)
- Add feature gate to tests that use std ([#​409](https://redirect.github.com/dtolnay/thiserror/issues/409), [#​410](https://redirect.github.com/dtolnay/thiserror/issues/410), thanks [@​Maytha8](https://redirect.github.com/Maytha8))
### [`v2.0.10`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.10)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/2.0.9...2.0.10)
- Support errors containing a generic type parameter's associated type in a field ([#​408](https://redirect.github.com/dtolnay/thiserror/issues/408))
### [`v2.0.9`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.9)
[Compare Source](https://redirect.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 ([#​404](https://redirect.github.com/dtolnay/thiserror/issues/404))
### [`v2.0.8`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.8)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/2.0.7...2.0.8)
- Improve support for macro-generated `derive(Error)` call sites ([#​399](https://redirect.github.com/dtolnay/thiserror/issues/399))
### [`v2.0.7`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.7)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/2.0.6...2.0.7)
- Work around conflict with #\[deny(clippy::allow_attributes)] ([#​397](https://redirect.github.com/dtolnay/thiserror/issues/397), thanks [@​zertosh](https://redirect.github.com/zertosh))
### [`v2.0.6`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.6)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/2.0.5...2.0.6)
- Suppress deprecation warning on generated From impls ([#​396](https://redirect.github.com/dtolnay/thiserror/issues/396))
### [`v2.0.5`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.5)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/2.0.4...2.0.5)
- Prevent deprecation warning on generated impl for deprecated type ([#​394](https://redirect.github.com/dtolnay/thiserror/issues/394))
### [`v2.0.4`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.4)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/2.0.3...2.0.4)
- Eliminate needless_lifetimes clippy lint in generated `From` impls ([#​391](https://redirect.github.com/dtolnay/thiserror/issues/391), thanks [@​matt-phylum](https://redirect.github.com/matt-phylum))
### [`v2.0.3`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.3)
[Compare Source](https://redirect.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 ([#​383](https://redirect.github.com/dtolnay/thiserror/issues/383))
- Improve error message when a format trait used in error message is not implemented by some field ([#​384](https://redirect.github.com/dtolnay/thiserror/issues/384))
### [`v2.0.2`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.2)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/2.0.1...2.0.2)
- Fix hang on invalid input inside #\[error(...)] attribute ([#​382](https://redirect.github.com/dtolnay/thiserror/issues/382))
### [`v2.0.1`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.1)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/2.0.0...2.0.1)
- Support errors that contain a dynamically sized final field ([#​375](https://redirect.github.com/dtolnay/thiserror/issues/375))
- Improve inference of trait bounds for fields that are interpolated multiple times in an error message ([#​377](https://redirect.github.com/dtolnay/thiserror/issues/377))
### [`v2.0.0`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.0)
[Compare Source](https://redirect.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}` ([#​347](https://redirect.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 ([#​345](https://redirect.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 ([#​354](https://redirect.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 ([#​368](https://redirect.github.com/dtolnay/thiserror/issues/368), [#​369](https://redirect.github.com/dtolnay/thiserror/issues/369), [#​370](https://redirect.github.com/dtolnay/thiserror/issues/370), [#​372](https://redirect.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 }` ([#​373](https://redirect.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()` ([#​350](https://redirect.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 ([#​359](https://redirect.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 ([#​367](https://redirect.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 ([#​366](https://redirect.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),
}
```
### [`v1.0.69`](https://redirect.github.com/dtolnay/thiserror/releases/tag/1.0.69)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/1.0.68...1.0.69)
- Backport [2.0.2](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.2) fixes
### [`v1.0.68`](https://redirect.github.com/dtolnay/thiserror/releases/tag/1.0.68)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/1.0.67...1.0.68)
- Handle incomplete expressions more robustly in format arguments, such as while code is being typed ([#​341](https://redirect.github.com/dtolnay/thiserror/issues/341), [#​344](https://redirect.github.com/dtolnay/thiserror/issues/344))
### [`v1.0.67`](https://redirect.github.com/dtolnay/thiserror/releases/tag/1.0.67)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/1.0.66...1.0.67)
- Improve expression syntax support inside format arguments ([#​335](https://redirect.github.com/dtolnay/thiserror/issues/335), [#​337](https://redirect.github.com/dtolnay/thiserror/issues/337), [#​339](https://redirect.github.com/dtolnay/thiserror/issues/339), [#​340](https://redirect.github.com/dtolnay/thiserror/issues/340))
### [`v1.0.66`](https://redirect.github.com/dtolnay/thiserror/releases/tag/1.0.66)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/1.0.65...1.0.66)
- Improve compile error on malformed format attribute ([#​327](https://redirect.github.com/dtolnay/thiserror/issues/327))
### [`v1.0.65`](https://redirect.github.com/dtolnay/thiserror/releases/tag/1.0.65)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/1.0.64...1.0.65)
- Ensure OUT_DIR is left with deterministic contents after build script execution ([#​325](https://redirect.github.com/dtolnay/thiserror/issues/325))
### [`v1.0.64`](https://redirect.github.com/dtolnay/thiserror/releases/tag/1.0.64)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/1.0.63...1.0.64)
- Exclude derived impls from coverage instrumentation ([#​322](https://redirect.github.com/dtolnay/thiserror/issues/322), thanks [@​oxalica](https://redirect.github.com/oxalica))
### [`v1.0.63`](https://redirect.github.com/dtolnay/thiserror/releases/tag/1.0.63)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/1.0.62...1.0.63)
- Documentation improvements
### [`v1.0.62`](https://redirect.github.com/dtolnay/thiserror/releases/tag/1.0.62)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/1.0.61...1.0.62)
- Support referring to nested tuple struct fields inside `#[error("…", …)]` attribute ([#​309](https://redirect.github.com/dtolnay/thiserror/issues/309))
### [`v1.0.61`](https://redirect.github.com/dtolnay/thiserror/releases/tag/1.0.61)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/1.0.60...1.0.61)
- Use `core::fmt` and `core::panic` to facilitate `error_in_core` support ([#​299](https://redirect.github.com/dtolnay/thiserror/issues/299), thanks [@​jordens](https://redirect.github.com/jordens))
### [`v1.0.60`](https://redirect.github.com/dtolnay/thiserror/releases/tag/1.0.60)
[Compare Source](https://redirect.github.com/dtolnay/thiserror/compare/1.0.59...1.0.60)
- Resolve unexpected_cfgs warning ([#​298](https://redirect.github.com/dtolnay/thiserror/issues/298))
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "on the first day of the month" in timezone America/Los_Angeles, 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.
---
- [ ] If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate).
GitOrigin-RevId: d435ec3d8d6bc3b185043b45c62d89abea835ee11 parent d0e1516 commit 35ac45dCopy full SHA for 35ac45d
1 file changed
+23
-3
lines changed+23-3Lines changed: 23 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments