Замена заимствованной переменной

У меня есть ведро объектов, которые должны накапливать значения. Он защищенRwLockи как таковой я также держу вокруг его блокировки записи. Я хочу сохранить одну блокировку записи на время процесса.

Например:

use std::sync::RwLock;

fn main() {
    let locked = RwLock::new(Vec::<u32>::new());

    // this is the entry point for real-world code
    let mut writer = locked.write().unwrap();    

    // copy into 'locked' until it is full (has 4 items)
    for v in 0..100 {
        if writer.len() > 4 {
            // discard 'writer' and 'locked', create anew
            locked = RwLock::new(Vec::<u32>::new());
            writer = locked.write().unwrap();
        }
        writer.push(v);
    }
}

В то время как мой пример работает с фиксированными данными, и поэтому, похоже, не нуждается вRwLock вообще, реальный код будет входить в «реальный код» и не обязательно выходить на границеlocked становится "полным".

Как мне создать новыйlocked а такжеwriter возражать когда нужно без заемщика-несогласного?

Ответы на вопрос(1)

Ваш ответ на вопрос