2017-12-30 12:00:14 +00:00
|
|
|
% Drop
|
2017-03-03 14:50:30 +00:00
|
|
|
|
2017-12-31 03:21:47 +00:00
|
|
|
<small>There is a new edition of the book and this is an old link.</small>
|
2017-12-31 01:56:24 +00:00
|
|
|
|
|
|
|
> `Drop` lets us customize what happens when a value is about to go out of scope.
|
|
|
|
|
|
|
|
```rust
|
|
|
|
struct CustomSmartPointer {
|
|
|
|
data: String,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl Drop for CustomSmartPointer {
|
|
|
|
fn drop(&mut self) {
|
|
|
|
println!("Dropping CustomSmartPointer with data `{}`!", self.data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let c = CustomSmartPointer { data: String::from("my stuff") };
|
|
|
|
let d = CustomSmartPointer { data: String::from("other stuff") };
|
|
|
|
println!("CustomSmartPointers created.");
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
---
|
|
|
|
|
2017-12-31 03:21:47 +00:00
|
|
|
Here are the relevant sections in the new and old books:
|
2017-03-03 14:50:30 +00:00
|
|
|
|
2018-12-07 14:56:43 +00:00
|
|
|
* **[in the current edition: Ch 15.03 — The `Drop` Trait Runs Code on Cleanup][2]**
|
2017-12-31 03:21:47 +00:00
|
|
|
* <small>[In the first edition: Ch 3.20 — Drop][1]</small>
|
2017-06-14 18:11:46 +00:00
|
|
|
|
|
|
|
|
2018-12-07 14:56:43 +00:00
|
|
|
[1]: https://doc.rust-lang.org/1.30.0/book/first-edition/drop.html
|
|
|
|
[2]: ch15-03-drop.html
|