首页 > 解决方案 > 如何通过 Rust 中的赋值运算符监听和响应变量突变?

问题描述

一些操作具有可以在调用操作时有效地响应的特征,如下所示:

use std::ops;

#[derive(Debug)]
struct MyNum(u32);

impl ops::Add for MyNum {
    type Output = Self;

    fn add(self, b: Self) -> Self {
        println!("Added {} and {}", self.0, b.0);
        MyNum(self.0 + b.0)
    }
}

fn main() {
    let a = MyNum(1);
    let b = MyNum(2);
    let c = a + b;
    println!("C = {}", c.0);
}

但是,正如文档所述:

由于赋值运算符 ( =) 没有支持特征,因此无法重载其语义

我希望能够通过赋值运算符监听值何时发生变化。这个想法是开发类似于Svelte 库但使用 Rust 的东西。捕获变量变异的最佳方法是什么 - 理想情况下在编译阶段保留任何开销?

标签: rustreactivemutability

解决方案


推荐阅读