¿Es posible usar el mismo archivo para leer y escribir?

Estoy tratando de usar lo mismostd::fs::File objeto para escribir y leer, pero la lectura devuelve una cadena vacía.

lo intentéflush, sync_all yseek, pero nada ayudó. Con un nuevoFile Objeto Puedo leer el archivo fácilmente.

use std::io::{Read, Seek, Write};

const FILE_PATH: &str = "test.txt";

fn main() {
    // Create file
    let mut f = std::fs::File::create(FILE_PATH).unwrap();
    f.write_all("foo bar".as_bytes());
    f.seek(std::io::SeekFrom::Start(0));

    // Read from the same descriptor
    let mut content = String::new();
    f.read_to_string(&mut content);
    println!("{:?}", content); // -> ""

    // Read from the other descriptor
    let mut f = std::fs::File::open(FILE_PATH).unwrap();
    let mut content = String::new();
    f.read_to_string(&mut content);
    println!("{:?}", content); // -> "foo bar"
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta