Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Propagate per-entry errors from Path.list!

Aperta
#440 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
64/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
rust
Ambito
cli

Direzione di ricerca

Inizia da src/lib.rs:1173-1177 e analizza hosted_dir_list, la conversion esistente degli errori di directory e il punto di ingresso Path.list!. Aggiungi la copertura per un errore proveniente da una voce ReadDir usando un’astrazione controllabile o un harness per le race condition del filesystem, preservando il comportamento di successo e quello per i non-directory su Unix e Windows.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug

Context

hosted_dir_list currently discards errors produced while iterating an otherwise successfully opened directory:

let entries = read_dir
    .filter_map(|entry| entry.ok().map(|entry| entry.path()))
    .collect();

See src/lib.rs:1173-1177.

This can return an incomplete list as Ok when an entry disappears during iteration or the filesystem reports an I/O error. Because Path.list! already returns a Try, silently returning partial data is surprising and can lead applications to make incorrect decisions.

Suggested direction

Collect the iterator as a Result<Vec<_>, io::Error> and map the first entry error through the existing directory error conversion. If partial results are considered useful, expose them through a deliberately different API and result type.

Acceptance criteria

  • An error from any ReadDir entry is not silently dropped.
  • Path.list! returns either a complete snapshot-like result or a typed error.
  • Tests exercise the error branch through a controllable abstraction or filesystem race harness.
  • Existing success and non-directory cases continue to pass on Unix and Windows.
Lingua principale
Rust
Stelle
121
Fork
45
Merge medio
19h 1m
PR unite (30g)
16

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di roc-lang/basic-cli

Tutte le issue di roc-lang/basic-cli

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.