# Re-use struct fields on drop; was: Drop(&mut self) vs. drop(self)

**URL:** https://internals.rust-lang.org/t/re-use-struct-fields-on-drop-was-drop-mut-self-vs-drop-self/8594
**Category:** language design
**Created:** [October 17, 2018, 10:16am UTC](https://internals.rust-lang.org/t/re-use-struct-fields-on-drop-was-drop-mut-self-vs-drop-self/8594 "2018-10-17T10:16:36Z")
**Posts on this page:** 1
**Showing post:** 2

<div class="post-metadata">

### Author: ![matklad](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/matklad/32/12266_2.png) [@matklad](https://internals.rust-lang.org/u/matklad)
#### Post date: [October 17, 2018, 10:43am UTC](https://internals.rust-lang.org/t/re-use-struct-fields-on-drop-was-drop-mut-self-vs-drop-self/8594/2 "2018-10-17T10:43:52Z")

</div>

See [https://github.com/rust-lang/rust/issues/4330#issuecomment-26852226](https://github.com/rust-lang/rust/issues/4330#issuecomment-26852226)

The root problem, as I understand it, is that if you have `fn drop(self)`, you somehow need to not Drop the `self` the second time.

Like

```rust
fn foo(x: X) {
     // calling drop here
}

impl DropByValue for X {
    fn drop(self) {
        foo(self); // what does this mean?
    }
}

```

---

_[View the full topic](https://internals.rust-lang.org/t/re-use-struct-fields-on-drop-was-drop-mut-self-vs-drop-self/8594)._
