Closed
Description
Expanding derive(Default)
on an enum adds incorrect bounds to generic parameters.
rust-analyzer version: 0.4.2522-standalone (11d45c8 2025-07-02)
rustc version: rustc 1.88.0 (6b00bc388 2025-06-23)
editor or extension: VSCode 1.101.2, rust-lang.rust-analyzer 0.3.2519
code snippet to reproduce:
#[derive(Default)]
pub enum Maybe<T> {
Yes(T),
#[default]
No,
}
rust-analyzer macro expansion output:
// Recursive expansion of Default macro
// =====================================
impl<T: core::default::Default> core::default::Default for Maybe<T> {
fn default() -> Self {
Maybe::No
}
}
cargo-expand output:
#[automatically_derived]
impl<T> ::core::default::Default for Maybe<T> {
#[inline]
fn default() -> Maybe<T> {
Self::No
}
}