Перебирать ReadDir и добавлять имена файлов в массив в Rust

Я пытаюсь использовать fs::read_dir(), перебирать результаты и добавлять все имена файлов в массив. Что-то вроде этого, но это не работает:

let mut result: Vec<&str> = Vec::new();
for i in fs::read_dir(directory).iter(){
    result.append(i);
}

Я перепробовал буквально все, что мог найти в Интернете, но я совершенно новичок в Rust и не совсем понимаю, что делаю. ПРИМЕЧАНИЕ. Параметр каталога должен быть строковым типом, поскольку я работаю с Tauri, а TypeScript/JavaScript имеет только обычную строку, а не какой-то другой сумасшедший тип, который, как я мог себе представить, есть в Rust.

Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Простой пример:

use std::ffi::OsStr;
use std::fs;

fn main() {
    let mut result: Vec<String> = Vec::new();
    for i in fs::read_dir(".").unwrap() {
        let i = i.unwrap().path();
        let file_name = i.file_name().and_then(OsStr::to_str).unwrap();
        result.push(file_name.to_string());
    }

    dbg!(result);
}

append() имеет смысл только при объединении двух коллекций. Используйте push(). read_dir() верните Result, вам нужно сначала проверить результат, чтобы использовать Iterator.

Интересно, почему каждый элемент в самом итераторе имеет тип Result, поэтому развертку нужно вызывать для каждого i в результате fs::read_dir()? К каким ошибкам мне следует быть готовым на уровне одного файла?

dfsg76 13.07.2024 11:19

@ dfsg76 dfsg76 может произойти много ошибок, каталог станет недоступным, поврежденная запись, возможно, какая-то странная вещь.

Stargateur 13.07.2024 15:07

Другие вопросы по теме