pub trait Validator:
Send
+ Sync
+ Any {
// Required methods
fn name(&self) -> &'static str;
fn validate(&self, value: &Value) -> Result<(), String>;
fn as_any(&self) -> &dyn Any;
// Provided method
fn downcast_ref<U: Any>(&self) -> Option<&U>
where Self: Sized { ... }
}