diff options
| author | Vincent Prouillet | 2017-01-18 21:34:53 +0900 |
|---|---|---|
| committer | Vincent Prouillet | 2017-01-19 13:38:47 +0900 |
| commit | 8f54c9228d8cf8e2bede37ddc9958db7ce4c63a8 (patch) | |
| tree | f06665548c923aab3238c34cff4b2cea9b38ef9f | |
| parent | 77d5ef335a57c035341f5ba19da8fc187d58781f (diff) | |
| download | validator-8f54c9228d8cf8e2bede37ddc9958db7ce4c63a8.tar.bz2 | |
Use chars().count() instead of len()
| -rw-r--r-- | validator/src/length.rs | 16 |
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); + } } |
