1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
use snafu::{Backtrace, Snafu}; use std::path::PathBuf; #[derive(Debug, Clone)] pub enum OpSource { CreateObject, CopyObject, ReadObject, DownloadUrl, ListPrefix, Pre(Box<Self>), } impl OpSource { pub fn pre(op: OpSource) -> Self { Self::Pre(Box::new(op)) } } #[derive(Debug, Snafu)] #[snafu(visibility(pub(crate)))] pub enum Error { CloudStorage { #[snafu(source(from(cloud_storage::Error, Box::new)))] source: Box<cloud_storage::Error>, object: String, op: OpSource, }, #[snafu(display("IOError occured, path: {}: {}", "path", "source"))] Io { path: PathBuf, source: std::io::Error, backtrace: Backtrace, }, #[snafu(display("Tokio IOError occured, path: {}: {}", "path", "source"))] TokioIo { path: PathBuf, source: tokio::io::Error, backtrace: Backtrace, }, #[snafu(context(false))] Reqwest { source: reqwest::Error, }, Other { message: &'static str, }, WrongPath { path: PathBuf, }, }