Rust: почему попадаю на ошибку файла не существует?
Есть список директорий, идет по нему в цикле и проверяем время модификации в файле (в Linux). Вроде все происходит очень быстро, но периодически славливаю ошибку, что файла не существует, когда он пытается получить по нему modifed. Почему так происходит? Мне казалось все очень быстро должно происходить и попасть на тот момент, когда файл уже перемещен практически не возможно. Есть ли решение более правильное?
Вот кусок, который это делает:
for file in WalkDir::new(_path_hash).into_iter().filter_map(|file| file.ok()) {
if file.metadata().unwrap().is_file() {
let time = file.metadata().unwrap().modified();
}
Ответы (1 шт):
Можете попробовать использовать функцию metadata() только один раз и сохранить результат в переменную. Затем вы можете проверить, является ли файл файлом, и только после этого получить время модификации. Таким образом вы избежите шанс того, что во время вызова второй функции metadata() - будет ошибка, связанная с переносом или удалением файла
for file in WalkDir::new(_path_hash).into_iter().filter_map(|file| file.ok()) {
let metadata = file.metadata();
if let Ok(metadata) = metadata {
if metadata.is_file() {
let time = metadata.modified();
}
}
}