greyblake / nutype

Rust newtype with guarantees πŸ‡ΊπŸ‡¦ πŸ¦€
MIT License
1.42k stars 23 forks source link

Support for UTF-16 length validation #162

Open gobanos opened 4 months ago

gobanos commented 4 months ago

Context

We are using nutype to replicate our frontend validators in the backend. One tricky aspect is string length validation.

In the javascript frontend we use .length to validate the strings which is the length of the UTF-16 string in javascript engine.

Currently we are using custom validators for that purpose, like so

#[nutype(
    validate(not_empty, predicate = |t| t.encode_utf16().count() <= 255),
)]
pub struct ValidTitle(String);

Suggestions

We'd be interested in either alternative string validators len_utf16_max & len_utf16_min or an extra parameter to the string length validator with the encoding.

Thanks for that great lib :blush: