Condvar
文档显示了一个示例,其中包括以下内容:
let pair = Arc::new((Mutex::new(false), Condvar::new()));
// <snipped for brevity>
let &(ref lock, ref cvar) = &*pair;
我想知道将&
这项任务的双方都包括在内可能有什么好处。换句话说,为什么不直接写:
let (ref lock, ref cvar) = *pair;
两个版本都编译;有语义上的区别吗?如果没有,是否有任何理由更喜欢示例中出现的语法?
总的来说,我仍然在努力理解何时/何地&*
应该习惯性地出现在 Rust 代码中。我的直觉是将这个字符组合“看”(读)为无操作,尽管我理解由于 Rust 的Deref
语义,情况并非如此。