如何摆脱 Rust 中互斥锁定的“无可辩驳的 `if let` 模式”警告?

问题描述 投票:0回答:1

我想在使用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);
}
multithreading rust
1个回答
0
投票

使用普通块:

{
    let mut vec = sources.lock().unwrap();
    vec.push(4);
}
© www.soinside.com 2019 - 2024. All rights reserved.