From b4047ae05386fbbab9a5f9baee41b66a684fbe61 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Wed, 11 Mar 2020 23:50:22 -0300 Subject: [PATCH] multipart: Convert from `derive_more` to `thiserror` The `thiserror` has the advantage of implementing `std::error::Error` and it integrates better with the Rust ecosystem. Signed-off-by: Otavio Salvador --- actix-multipart/Cargo.toml | 2 +- actix-multipart/src/error.rs | 26 ++++++++++++-------------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/actix-multipart/Cargo.toml b/actix-multipart/Cargo.toml index e81b07cb7..74e752735 100644 --- a/actix-multipart/Cargo.toml +++ b/actix-multipart/Cargo.toml @@ -20,11 +20,11 @@ actix-web = { version = "3.0.0-alpha.1", default-features = false } actix-service = "1.0.1" actix-utils = "1.0.3" bytes = "0.5.3" -derive_more = "0.99.2" httparse = "1.3" futures = "0.3.1" log = "0.4" mime = "0.3" +thiserror = "1.0.11" twoway = "0.2" [dev-dependencies] diff --git a/actix-multipart/src/error.rs b/actix-multipart/src/error.rs index cdbb5d395..537eafef2 100644 --- a/actix-multipart/src/error.rs +++ b/actix-multipart/src/error.rs @@ -2,39 +2,37 @@ use actix_web::error::{ParseError, PayloadError}; use actix_web::http::StatusCode; use actix_web::ResponseError; -use derive_more::{Display, From}; +use thiserror::Error; /// A set of errors that can occur during parsing multipart streams -#[derive(Debug, Display, From)] +#[derive(Debug, Error)] pub enum MultipartError { /// Content-Type header is not found - #[display(fmt = "No Content-type header found")] + #[error("No Content-type header found")] NoContentType, /// Can not parse Content-Type header - #[display(fmt = "Can not parse Content-Type header")] + #[error("Can not parse Content-Type header")] ParseContentType, /// Multipart boundary is not found - #[display(fmt = "Multipart boundary is not found")] + #[error("Multipart boundary is not found")] Boundary, /// Nested multipart is not supported - #[display(fmt = "Nested multipart is not supported")] + #[error("Nested multipart is not supported")] Nested, /// Multipart stream is incomplete - #[display(fmt = "Multipart stream is incomplete")] + #[error("Multipart stream is incomplete")] Incomplete, /// Error during field parsing - #[display(fmt = "{}", _0)] - Parse(ParseError), + #[error(transparent)] + Parse(#[from] ParseError), /// Payload error - #[display(fmt = "{}", _0)] - Payload(PayloadError), + #[error(transparent)] + Payload(#[from] PayloadError), /// Not consumed - #[display(fmt = "Multipart stream is not consumed")] + #[error("Multipart stream is not consumed")] NotConsumed, } -impl std::error::Error for MultipartError {} - /// Return `BadRequest` for `MultipartError` impl ResponseError for MultipartError { fn status_code(&self) -> StatusCode {