Skip to content

Spurious error "The requirement ... is added only by the Drop impl" #34426

Closed
@canndrew

Description

It seems like it's not possible to implement Drop for types that have higher ranked trait bounds on their type arguments.

trait WithLifetime<'a> {
}

struct Foo<A: for<'a> WithLifetime<'a>> {
    a: A,
}

impl<A: for<'a> WithLifetime<'a>> Drop for Foo<A> {
    fn drop(&mut self) {}
}

This gives the error "The requirement for<'a> A: WithLifetime<'a> is added only by the Drop impl" which is obviously untrue. Removing that bound from the Drop impl gives the error "the trait bound for<'a> A: WithLifetime<'a> is not satisfied" as it should.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    A-destructorsArea: Destructors (`Drop`, …)C-feature-requestCategory: A feature request, i.e: not implemented / a PR.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions