Rust 实现Deref自动解引用

例如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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020-07-24 14:55
下一篇 2021-08-05 13:31

发表回复

您的电子邮箱地址不会被公开。

联系我们

邮件:83390286[AT]QQ.COM

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信