fn print_message() {
println!("这是特定字符串");
}
fn exit_program() {
std::process::exit(0);
}
fn main() {
let command_handlers: std::collections::HashMap<&str, fn()> = std::collections::HashMap::from([
("print", print_message),
("exit", exit_program),
]);
loop {
println!("请输入命令 (print/exit):");
let mut input = String::new();
std::io::stdin().read_line(&mut input).expect("读取输入失败");
let command = input.trim();
if let Some(handler) = command_handlers.get(command) {
handler();
} else {
println!("未知命令,请重新输入。");
}
}
}
函数指针的作用解释
- 定义函数指针类型:在Rust中,函数指针类型为
fn()
。在上述代码中,command_handlers
这个 HashMap
存储了命令和对应的函数指针。这里使用函数指针将命令与对应的处理函数关联起来,使得代码结构更加清晰和可维护。
- 调用函数:通过从
HashMap
中获取函数指针,然后像调用普通函数一样调用它(如 handler()
),就可以执行对应的处理逻辑。这种方式实现了根据用户输入的不同命令,动态调用不同的函数,这正是事件驱动编程的核心思想。函数指针在这里起到了一个桥梁的作用,连接了用户输入(事件)和对应的处理逻辑(函数)。