Skip to content

"conflicting associated type bounds when expanding trait alias", but there is no actual conflict #146548

@Jules-Bertholet

Description

@Jules-Bertholet

I tried this code:

#![feature(trait_alias)] trait Foo { type Assoc; } trait Alias = Foo<Assoc = fn(&())>; type Dyn = dyn Alias<Assoc = fn(&())>;

I expected to see this happen: It compiles, just as it would if fn(&()) were replaced with i32

Instead, this happened:

error: conflicting associated type bounds for `Assoc` when expanding trait alias --> src/lib.rs:9:12 | 7 | trait Alias = Foo<Assoc = fn(&())>; | --------------- `Assoc` is specified to be `for<'a> fn(&'a ())` here 8 | 9 | type Dyn = dyn Alias<Assoc = fn(&())>; | ^^^^^^^^^^---------------^ | | | `Assoc` is specified to be `for<'a> fn(&'a ())` here 

AIUI this is a consequence of #136458?

@rustbot label T-types F-trait_alias A-dyn-trait A-associated-items requires-nightly

Meta

rustc --version --verbose:

rustc 1.91.0-nightly (02c7b1a7a 2025-09-13) binary: rustc commit-hash: 02c7b1a7ac1d739663878030510508372e46f254 commit-date: 2025-09-13 host: x86_64-unknown-linux-gnu release: 1.91.0-nightly LLVM version: 21.1.1 

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-associated-itemsArea: Associated items (types, constants & functions)A-dyn-traitArea: trait objects, vtable layoutC-bugCategory: This is a bug.F-trait_alias`#![feature(trait_alias)]`T-typesRelevant to the types team, which will review and decide on the PR/issue.needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.requires-nightlyThis issue requires a nightly compiler in some way.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions