From 8f54c9228d8cf8e2bede37ddc9958db7ce4c63a8 Mon Sep 17 00:00:00 2001 From: Vincent Prouillet Date: Wed, 18 Jan 2017 21:34:53 +0900 Subject: Use chars().count() instead of len() --- validator/src/length.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/validator/src/length.rs b/validator/src/length.rs index f54a002..965d43b 100644 --- a/validator/src/length.rs +++ b/validator/src/length.rs @@ -8,15 +8,21 @@ pub trait HasLen { fn length(&self) -> u64; } +impl HasLen for String { + fn length(&self) -> u64 { + self.chars().count() as u64 + } +} + impl<'a> HasLen for &'a String { fn length(&self) -> u64 { - self.len() as u64 + self.chars().count() as u64 } } impl<'a> HasLen for &'a str { fn length(&self) -> u64 { - self.len() as u64 + self.chars().count() as u64 } } @@ -93,4 +99,10 @@ mod tests { let validator = Validator::Length { min: None, max: None, equal: Some(3) }; assert_eq!(validate_length(validator, vec![1, 2, 3]), true); } + + #[test] + fn test_validate_length_unicode_chars() { + let validator = Validator::Length { min: None, max: None, equal: Some(2) }; + assert_eq!(validate_length(validator, "日本"), true); + } } -- cgit v1.2.3