例如Box 结构体已经实现了Deref , 可以使用*直接访问Box指针指向的值
let a:Box<i32> = Box::new(12);
let b:i32 = *a; //使用*解引用
如何实现Deref呢? (以下示例没有实现泛型,只针对i32类型做的简单示例。)
use std::ops::Deref;
struct MyBox(i32);
impl MyBox {
pub fn new(val: i32) -> MyBox {
MyBox(val)
}
}
impl Deref for MyBox {
type Target = i32;
fn deref(&self) -> &Self::Target {
&self.0
}
}
fn main() {
let m = MyBox::new(23);
println!("{}", *m);
}
版权声明:本文为NII.CN的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://nii.cn/4040.html 发布者:nii