-
Notifications
You must be signed in to change notification settings - Fork 13.8k
Closed
Labels
A-destructorsArea: Destructors (`Drop`, …)Area: Destructors (`Drop`, …)C-feature-requestCategory: A feature request, i.e: not implemented / a PR.Category: A feature request, i.e: not implemented / a PR.
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.
Metadata
Metadata
Assignees
Labels
A-destructorsArea: Destructors (`Drop`, …)Area: Destructors (`Drop`, …)C-feature-requestCategory: A feature request, i.e: not implemented / a PR.Category: A feature request, i.e: not implemented / a PR.
Activity
durka commentedon Jun 27, 2016
As an aside, the error message rephrased the bound to
for<'a> A: WithLifetime<'a>
which is illegal syntax.Osspial commentedon Mar 17, 2019
I'd be willing to try and tackle this issue! Is there anyone that would be able to do any mentoring? The attempts I've made to figure out the proper way of fixing this have resulted in me getting lost in the compiler's code, and I'm running out of stamina going at it alone.
Add regression test for rust-lang#34426
for<'a> &'a ...
#67067Rollup merge of rust-lang#67059 - TommasoBianchi:dropck_fix_pr, r=pnk…
Rollup merge of rust-lang#67059 - TommasoBianchi:dropck_fix_pr, r=pnk…