/// Converts different types of external closures into internal validation functions.
///
/// This is a technical trait which is generally not intended to be implemented by users.
/// It's needed for user to be able to supply different types of closures to the
/// [`validate`](crate::Input::validate) method.
///
/// A generic implementation for `Fn(&T) -> Result<(), E>` is provided to facilitate development.