use std::{error::Error, ops::Range}; use unicode_segmentation::UnicodeSegmentation; pub fn validate_optional_length( opt: &Option, len_range: Range, err: E, ) -> Result, E> { if let Some(opt) = opt { let opt = opt.trim(); let len = opt.graphemes(true).size_hint().1.unwrap(); if !len_range.contains(&len) { Err(err) } else { Ok(Some(opt.to_string())) } } else { Ok(None) } }