Skip to main content

fret_ui_headless/
form_validation.rs

1use std::sync::Arc;
2
3/// Returns `Some(message)` when `value` is empty after trimming whitespace.
4pub fn required_trimmed(value: &str, message: impl Into<Arc<str>>) -> Option<Arc<str>> {
5    value.trim().is_empty().then(|| message.into())
6}
7
8/// Returns `Some(message)` when `value` is shorter than `min_len`.
9pub fn min_len(value: &str, min_len: usize, message: impl Into<Arc<str>>) -> Option<Arc<str>> {
10    (value.chars().count() < min_len).then(|| message.into())
11}
12
13/// Returns the first validation error (if any).
14pub fn first_error(errors: impl IntoIterator<Item = Option<Arc<str>>>) -> Option<Arc<str>> {
15    errors.into_iter().find_map(|e| e)
16}