s3handler 0.9.0

An s3 handler for s3rs nu-shell-s3-plugin
Documentation
#[derive(thiserror::Error, Debug)]
pub enum Error {
    #[error("Could not load file: {0:?}")]
    LoadError(std::io::Error),
    #[error("The response should be XML: {0:?}")]
    XMLParseError(quick_xml::Error),
    #[error("The field {0} not found in response")]
    FieldNotFound(&'static str),
    #[error("Unexpected input from user: {0}")]
    UserError(&'static str),
    #[error("Can not make a request: {0}")]
    ReqwestError(String),
    #[error("Error in RequestPool: {0}")]
    RequestPoolError(String),
    #[error("The resource with uncorrect scheme")]
    SchemeError(),
    #[error("Write without bucket")]
    ModifyEmptyBucketError(),
    #[error("Pull bucket wihout object")]
    PullEmptyObjectError(),
    #[error("Resource url error: {0}")]
    ResourceUrlError(String),
    #[error("Pools should be initialized before pull or push on canal")]
    PoolUninitializeError(),
    #[error("Header parsing error")]
    HeaderParsingError(),
    #[error("No object specified to move")]
    NoObject(),
}

impl From<std::io::Error> for Error {
    fn from(err: std::io::Error) -> Self {
        Error::LoadError(err)
    }
}

impl From<&'static str> for Error {
    fn from(s: &'static str) -> Self {
        Error::UserError(s)
    }
}

impl From<url::ParseError> for Error {
    fn from(err: url::ParseError) -> Self {
        Error::ResourceUrlError(err.to_string())
    }
}

impl From<reqwest::Error> for Error {
    fn from(err: reqwest::Error) -> Self {
        Error::ReqwestError(err.to_string())
    }
}

impl From<reqwest::header::ToStrError> for Error {
    fn from(_err: reqwest::header::ToStrError) -> Self {
        Error::HeaderParsingError()
    }
}