#[derive(Debug, thiserror::Error)]
pub enum StorageError {
#[error("上传失败 ({file}): {reason}")]
UploadFailed { file: String, reason: String },
#[error("下载失败 ({file}): {reason}")]
DownloadFailed { file: String, reason: String },
#[error("存储客户端未初始化")]
ClientNotInitialized,
#[error("删除失败 ({file}): {reason}")]
DeleteFailed { file: String, reason: String },
#[error("列表失败 ({prefix}): {reason}")]
ListFailed { prefix: String, reason: String },
#[error("路径无效: {0}")]
InvalidPath(String),
#[error("IO 错误: {0}")]
Io(#[from] std::io::Error),
}