为什么原始数据类型的变量在移动后仍可访问?

时间:2018-12-20 03:00:35

标签: rust move-semantics ownership

我有以下代码:

use std::thread;

fn half(v: f64) -> f64 {
    v / 2.0
}

fn gougu(a: f64, b: f64) -> f64 {
    (a * a + b * b).sqrt()
}

#[test]
fn foo() {
    let a = 3.0;
    let b = 4.0;
    let worker = thread::spawn(move || {
        let c = gougu(a, b);
        eprintln!("{}^2 + {}^2 = {}^2", a, b, c)
    });

    eprintln!("half {}", half(a))
}

eprintln!中,a在移入用于线程的闭包后移入half

我的问题是:

  • 谁现在拥有原始a
  • 为什么a可以移动两次?

0 个答案:

没有答案