我想在使用Mutex时通过'if let'语句创建一个小的范围,以便可以尽快解锁。但编译时我收到“无可辩驳的
if let
模式”警告。有没有更合适的写法?
use std::sync::Mutex;
fn main()
{
let sources = Mutex::new(vec![1,2,3]);
// this get warning: irrefutable `if let` pattern
if let mut vec = sources.lock().unwrap() {
vec.push(4);
};
// No deadlock will occur here
let mut vec = sources.lock().unwrap();
vec.push(5);
// deadlock will occur here, so I'd like the mutex guard dropped as quickly as possible.
let mut vec2 = sources.lock().unwrap();
vec2.push(6);
}
使用普通块:
{
let mut vec = sources.lock().unwrap();
vec.push(4);
}