From 55fcdf4c5df01052e062cbbacf0c56c1e28522a1 Mon Sep 17 00:00:00 2001 From: Rodgers Date: Fri, 9 Jul 2021 08:20:30 +0700 Subject: [PATCH] Keep map_err compatible --- src/validators/mod.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/validators/mod.rs b/src/validators/mod.rs index b1459441..8e30541b 100644 --- a/src/validators/mod.rs +++ b/src/validators/mod.rs @@ -97,9 +97,14 @@ pub trait InputValueValidatorExt: InputValueValidator + Sized { } /// Changes the error message - fn map_err Error>(self, f: F) -> MapErr { + fn map_err String>(self, f: F) -> MapErr { MapErr(self, f) } + + /// Changes the error struct + fn map_err_ext Error>(self, f: F) -> MapErrExt { + MapErrExt(self, f) + } } impl InputValueValidatorExt for I {} @@ -141,6 +146,19 @@ where pub struct MapErr(I, F); impl InputValueValidator for MapErr +where + I: InputValueValidator, + F: Fn(String) -> String + Send + Sync, +{ + fn is_valid(&self, value: &Value) -> Result<(), String> { + self.0.is_valid(value).map_err(&self.1) + } +} + +/// Invalidator for `InputValueValidator::map_err_ext` +pub struct MapErrExt(I, F); + +impl InputValueValidator for MapErrExt where I: InputValueValidator, F: Fn(Error) -> Error + Send + Sync,