fret_ui_headless/
form_validation.rs1use std::sync::Arc;
2
3pub fn required_trimmed(value: &str, message: impl Into<Arc<str>>) -> Option<Arc<str>> {
5 value.trim().is_empty().then(|| message.into())
6}
7
8pub 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
13pub fn first_error(errors: impl IntoIterator<Item = Option<Arc<str>>>) -> Option<Arc<str>> {
15 errors.into_iter().find_map(|e| e)
16}