Skip to content

v0.8.1: PdmError Structured Error Enum

Choose a tag to compare

@fb0sh fb0sh released this 18 Jul 06:17

What's Changed

PdmError Structured Error Enum

Replaced Result<T, String> with PdmResult<T> across the entire Rust backend, introducing a typed PdmError enum with 10 variants:

  • Cancelled — download cancelled by user
  • Http(u16) — HTTP status code error
  • ClientBuild(String) — HTTP client construction failure
  • Probe(String) — URL probe failed
  • NotFound(u64) — download not found
  • Db(String) — database error
  • Config(String) — configuration error
  • Io(String) — I/O error
  • Network(String) — network error
  • Other(String) — generic fallback

Automatic conversion via From impls for reqwest::Error, rusqlite::Error, io::Error, String, &str, PoisonError, and serde_json::Error. The Tauri command layer (cmd.rs) retains String for IPC compatibility.

Files Changed

  • types.rs — PdmError enum, Display, Error trait, From impls, PdmResult alias
  • db.rs — all methods return PdmResult
  • download_manager.rs — all methods return PdmResult
  • engine/mod.rs — DownloadEngine trait returns PdmResult
  • engine/concurrent.rs — download() returns PdmResult, typed errors
  • engine/single.rs — uses PdmError::Cancelled/Http/Io/Network
  • worker.rs — add_with_id returns PdmResult
  • probe.rs — returns PdmResult
  • config.rs — save() returns PdmResult
  • cmd.rs — DM calls use .map_err for Tauri IPC boundary

Full Changelog: v0.8.0...v0.8.1