Skip to content

Commit

Permalink
Improve E0184 explanation
Browse files Browse the repository at this point in the history
  • Loading branch information
GuillaumeGomez committed Jan 8, 2020
1 parent ee84c30 commit 326994d
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions src/librustc_error_codes/error_codes/E0184.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
Explicitly implementing both Drop and Copy for a type is currently disallowed.
This feature can make some sense in theory, but the current implementation is
incorrect and can lead to memory unsafety (see [issue #20126][iss20126]), so
it has been disabled for now.
The `Copy` trait was implemented on a type with a `Drop` implementation.

Erroneous code example:

```compile_fail,E0184
#[derive(Copy)]
struct Foo; // error!
impl Drop for Foo {
fn drop(&mut self) {
}
}
```

Explicitly implementing both `Drop` and `Copy` trait on a type is currently
disallowed. This feature can make some sense in theory, but the current
implementation is incorrect and can lead to memory unsafety (see
[issue #20126][iss20126]), so it has been disabled for now.

[iss20126]: https://github.com/rust-lang/rust/issues/20126

0 comments on commit 326994d

Please sign in to comment.