Skip to content

cargo doc fails to compile existential associated types #58011

Closed
@alecmocatta

Description

@alecmocatta

While building, testing and running the below code works fine, cargo doc fails with:

error[E0277]: the trait bound `(): D` is not satisfied
  --> test_existential_doc_crash.rs:13:5
   |
13 |     existential type B: D;
   |     ^^^^^^^^^^^^^^^^^^^^^^ the trait `D` is not implemented for `()`
   |
   = note: the return type of a function must have a statically known size
#![feature(existential_type)]

pub trait A {
    type B: D;
    fn c() -> Self::B;
}

pub trait D {}
impl D for u8 {}

pub struct E;
impl A for E {
    existential type B: D;
    fn c() -> Self::B {
        0u8
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-impl-traitArea: `impl Trait`. Universally / existentially quantified anonymous types with static dispatch.C-bugCategory: This is a bug.F-type_alias_impl_trait`#[feature(type_alias_impl_trait)]`T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.requires-nightlyThis issue requires a nightly compiler in some way.

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions