# destruct-drop
[](https://github.com/OpenByteDev/destruct-drop/actions/workflows/ci.yml)
[](https://crates.io/crates/destruct-drop)
[](https://docs.rs/destruct-drop)
[](https://deps.rs/repo/github/openbytedev/destruct-drop)
[](https://github.com/OpenByteDev/destruct-drop/blob/master/LICENSE)
Macro for dropping the fields of a struct or enum without dropping the container.
## Usage
Add `#[derive(DestructDrop)]` to your `struct` or `enum` definition.
```rust
use destruct_drop::DestructDrop;
#[derive(DestructDrop)]
struct Container {
inner: Inner
}
struct Inner;
impl Drop for Container {
fn drop(&mut self) {
println!("dropped Container");
}
}
impl Drop for Inner {
fn drop(&mut self) {
println!("dropped Inner");
}
}
fn main() {
// prints "dropped Inner" and then "dropped Container"
drop(Container { inner: Inner });
// prints only "dropped Inner"
Container { inner: Inner }.destruct_drop();
}
```
## License
Licensed under MIT license ([LICENSE](https://github.com/OpenByteDev/destruct-drop/blob/master/LICENSE) or http://opensource.org/licenses/MIT)