1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
pub mod big_checkbox; pub mod checkbox; pub mod file; pub mod key_value; pub mod select; pub mod text; use std::sync::Arc; #[derive(Clone)] pub struct ValidationFn<V> { func: Arc<dyn Fn(V) -> Option<String>>, } impl<V> ValidationFn<V> { pub fn validate(&self, i: V) -> Option<String> { (self.func)(i) } } impl<V> Default for ValidationFn<V> { fn default() -> ValidationFn<V> { ValidationFn { func: Arc::new(|_: V| None), } } } impl<V> PartialEq for ValidationFn<V> { fn eq(&self, _other: &ValidationFn<V>) -> bool { true } } impl<V, FN> From<FN> for ValidationFn<V> where FN: Fn(V) -> Option<String> + 'static, { fn from(f: FN) -> ValidationFn<V> { ValidationFn { func: Arc::new(f) } } }