You can add links to functions in HashMap:
use std::collections::HashMap;
fn validate_str(_: &str) -> bool { true }
fn validate_bool(_: &str) -> bool { true }
fn main() {
let mut methods: HashMap<_, fn(&str) -> bool> = HashMap::new();
methods.insert("string", validate_str);
methods.insert("boolean", validate_bool);
let input = [("string", "alpha"), ("boolean", "beta")];
for item in &input {
let valid = match methods.get(item.0) {
Some(f) => f(item.1),
None => false,
};
println!("'{}' is a valid {}? {}", item.1, item.0, valid);
}
}
- let mut methods: HashMap<_, fn(&str) -> bool> = HashMap::new(). , , . , - .