|
@@ -198,12 +198,17 @@ impl<T, S: Storage<T>> GenerationalBox<T, S> {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /// Drop the value out of the generational box and invalidate the generational box. This will return the value if the value was taken.
|
|
|
+ /// Recycle the generationalbox, dropping the value.
|
|
|
+ pub fn recycle(&self) {
|
|
|
+ _ = Storage::take(&self.raw.0.data);
|
|
|
+ <S as AnyStorage>::recycle(&self.raw);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// Drop the value out of the generational box and invalidate the generational box.
|
|
|
+ /// This will return the value if the value was taken.
|
|
|
pub fn manually_drop(&self) -> Option<T> {
|
|
|
if self.validate() {
|
|
|
- let o = Storage::take(&self.raw.0.data);
|
|
|
- <S as AnyStorage>::recycle(&self.raw);
|
|
|
- o
|
|
|
+ Storage::take(&self.raw.0.data)
|
|
|
} else {
|
|
|
None
|
|
|
}
|