kxio 0.1.0

Provides injectable Filesystem and Network resources to make code more testable
Documentation
#[derive(thiserror::Error, Debug)]
pub enum NetworkError {
    #[error(transparent)]
    Reqwest(#[from] crate::network::ReqwestError),

    #[error(transparent)]
    SerdeJson(#[from] serde_json::Error),

    #[error(transparent)]
    SerdeXml(#[from] serde_xml_rs::Error),

    #[error(transparent)]
    HttpMethod(#[from] http::method::InvalidMethod),

    #[error(transparent)]
    Http(#[from] http::Error),

    #[error("{0} failed: {1} ({2})")]
    RequestFailed(super::RequestMethod, super::StatusCode, super::NetUrl),

    #[error("{0} failed: {1} ({2})")]
    MockError(super::RequestMethod, super::StatusCode, super::NetUrl),

    #[error("missing response body")]
    MissingResponseBody,

    #[error("unexpected mock request: {method:?} {request_url}")]
    UnexpectedMockRequest {
        method: super::RequestMethod,
        request_url: super::NetUrl,
    },

    #[error("{0} failed: {1} ({2})")]
    RequestError(super::RequestMethod, super::StatusCode, super::NetUrl),

    #[error("invalid response type")]
    InvalidResponseType,

    #[error("invalid request body")]
    InvalidRequestBody,

    #[error("response body is empty")]
    EmptyResponseBody,
}

#[cfg(test)]
mod tests {
    use super::NetworkError;

    #[test]
    const fn test_network_error_is_send() {
        const fn assert_send<T: Send>() {}
        assert_send::<NetworkError>();
        assert_send::<Result<(), NetworkError>>();
    }
}