diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 0ebb125..cf125be 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -267,6 +267,7 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" name = "bilibili-video-downloader" version = "0.1.0" dependencies = [ + "anyhow", "serde", "serde_json", "specta", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 96e6043..8afd82a 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -27,6 +27,8 @@ specta = { version = "=2.0.0-rc.20", features = ["serde_json"] } tauri-specta = { version = "=2.0.0-rc.20", features = ["derive", "typescript"] } specta-typescript = { version = "=0.0.7" } +anyhow = { version = "1.0.98" } + [profile.release] strip = true lto = true diff --git a/src-tauri/src/extensions.rs b/src-tauri/src/extensions.rs new file mode 100644 index 0000000..74ad177 --- /dev/null +++ b/src-tauri/src/extensions.rs @@ -0,0 +1,20 @@ +pub trait AnyhowErrorToStringChain { + /// 将 `anyhow::Error` 转换为chain格式 + /// # Example + /// 0: error message\ + /// 1: error message\ + /// 2: error message + fn to_string_chain(&self) -> String; +} + +impl AnyhowErrorToStringChain for anyhow::Error { + fn to_string_chain(&self) -> String { + use std::fmt::Write; + self.chain() + .enumerate() + .fold(String::new(), |mut output, (i, e)| { + let _ = writeln!(output, "{i}: {e}"); + output + }) + } +} diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 43ff95e..d63cda1 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1,4 +1,5 @@ mod commands; +mod extensions; mod utils; use tauri::Wry;