rust-lang/rust-clippy

lint idea: `useless_default_generic_parameters`

Open

#14.848 geöffnet am 19. Mai 2025

Auf GitHub ansehen
 (12 Kommentare) (3 Reaktionen) (1 zugewiesene Person)Rust (1.391 Forks)batch import
A-lintG-Rust-for-Linuxgood first issue

Repository-Metriken

Stars
 (10.406 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 16T 6h) (79 gemergte PRs in 30 T)

Beschreibung

What it does

Given a type with a generic argument that has a default:

type Result<T = ()> = core::result::Result<T, MyError>;

Usage of this type when specifying the default should not use generics:

fn foo() -> Result<()> { Ok(()) }
//                ^^^^ unnecessary generic, `()` already is the default
//                hint: use `Result` instead.

Advantage

  • Removes duplication of the default value
  • Reduces visual clutter
  • Reminds people that the type has a default value

Drawbacks

  • when a library adds a default value, one gets this warning when updating
  • macros might trigger this involuntarily

Example

type Result<T = ()> = core::result::Result<T, MyError>;

fn foo() -> Result<()> {
    Ok(())
}

Could be written as:

type Result<T = ()> = core::result::Result<T, MyError>;

fn foo() -> Result {
    Ok(())
}

Contributor Guide