aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Prouillet2017-01-18 21:34:53 +0900
committerVincent Prouillet2017-01-19 13:38:47 +0900
commit8f54c9228d8cf8e2bede37ddc9958db7ce4c63a8 (patch)
treef06665548c923aab3238c34cff4b2cea9b38ef9f
parent77d5ef335a57c035341f5ba19da8fc187d58781f (diff)
downloadvalidator-8f54c9228d8cf8e2bede37ddc9958db7ce4c63a8.tar.bz2
Use chars().count() instead of len()
-rw-r--r--validator/src/length.rs16
1 files 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);
+ }
}