Ersetzen einer ausgeliehenen Variablen

Ich habe einen Eimer mit Objekten, die Werte akkumulieren müssen. Es ist durch ein @ geschütRwLock, und als solches behalte ich auch seine Schreibsperre. Ich möchte eine einzelne Schreibsperre für die Dauer des Vorgangs beibehalten.

Beispielsweise

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);
    }
}

Während mein Beispiel mit festen Daten arbeitet, scheint das @ nicht erforderlich zu seiRwLock überhaupt würde der reale Code bei "real code" eingeben und nicht unbedingt an der Grenze von @ verlasslocked wird "voll".

Wie erstelle ich ein neueslocked undwriter Objekt bei Bedarf, ohne dass der Leihprüfer anderer Meinung ist?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage