aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);
+ }
}