cloud_storage_sync/
error.rs

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