5 个不稳定版本
0.3.1 | 2020年8月24日 |
---|---|
0.3.0 | 2020年8月24日 |
0.2.1 | 2020年8月11日 |
0.2.0 | 2020年8月11日 |
0.1.0 | 2019年11月30日 |
#3 in #destroy
6KB
62 行(不含注释)
必须销毁
必须销毁用于创建一个必须显式调用的类型的参数化析构函数。
MustDestroy<T, Args>
作为一个封装类型的守卫,该类型实现了 Destroy
特性,如果守卫被丢弃,则会引发 panic
。
然而,在守卫上调用销毁,将会在封装的子对象上调用销毁,并且将被安全地消耗。
use must_destroy::{MustDestroy, Destroy};
struct MyDestroyableItem;
impl Destroy<(&'_ str, i32)> for MyDestroyableItem {
fn destroy(self, args: (&str, i32)) {
// Do things to destroy item...
// Just to show our arguments got through fine
assert_eq!("Test String", args.0);
assert_eq!(12, args.1);
}
}
fn main() {
let destroy_me = MustDestroy::new(MyDestroyableItem);
// Dropping the item here would cause a panic at runtime
// drop(destroy_me)
// However calling destroy will consume the item, and not cause
// a panic.
// We currently have to pass the arguments as a tuple.
//
// I'd like to be able to hide the need to do this though.
destroy_me.destroy(("Test String", 12));
}