rust - 如果我从不将 MutexGuard 分配给变量,它在哪里?
问题描述
我不明白MutexGuard
内部代码块中的“在哪里”。互斥锁被锁定并展开,产生一个MutexGuard
. 不知何故,这段代码设法取消引用该MutexGuard
对象,然后可变地借用该对象。去哪儿了MutexGuard
?此外,令人困惑的是,这种取消引用不能替换为deref_mut
. 为什么?
use std::sync::Mutex;
fn main() {
let x = Mutex::new(Vec::new());
{
let y: &mut Vec<_> = &mut *x.lock().unwrap();
y.push(3);
println!("{:?}, {:?}", x, y);
}
let z = &mut *x.lock().unwrap();
println!("{:?}, {:?}", x, z);
}
解决方案
推荐阅读
- c# - 从表中检索数据以确认记录是否存在时,如何解决“Specified Cast Is Not Valid”错误?
- android - 如何设置 ViewPager 在侧面有两个片段,中间页面充满视图和另一个片段?
- python - 有没有办法控制在 Python argparse 中评估参数的顺序
- python - 为什么分配整个 Blender 数组比通过迭代分配要快得多?
- kubernetes - 如何跨多个 Kubernetes 集群实现主动/被动设置?
- java - Android如何在继续下一个代码之前等待onComplete方法结束
- amazon-ec2 - 在 c++ 中的 aws ec2 describeinstance api 调用中创建过滤器的语法帮助
- c# - SQLite 到 SQL 和反向同步 - PrimaryKey 问题的使用
- ssh - 为什么 Ansible 仍然能够在没有 ssh 的情况下连接节点
- javascript - 如何创建“100K”等数字后缀而不必重复?