首页 > 解决方案 > 如何观察 Rust 的变化?

问题描述

我正在尝试设置剪贴板观察者。在大多数语言中,通常的路径是这样的:

func main() {
  old_contents
  loop {
    new = get_clipboard()
    if new != old_contents {
      old_contents = new
      do_something
    }
  }

这在 Rust 中不会立即起作用,因为循环有自己的变量版本等。只是在一般意义上,我应该怎么做呢?

标签: rust

解决方案


因为循环有自己的变量版本等等

对于一个简单的loop. 这是一个演示。

fn main() {
    let mut outer = 42;

    loop {
        println!("Outer in loop: {}", outer);
        outer = 23;
        break;
    }

    println!("Outer after loop: {}", outer);
}

或者,您可以从循环返回一个值

fn main() {
    let outer = loop {
        println!("In the loop.");
        break 23;
    };

    println!("Outer after loop: {}", outer);
}

推荐阅读