gpt4 book ai didi

rust - 调用仅在运行时已知的函数

转载 作者:行者123 更新时间:2023-11-29 07:47:42 26 4
gpt4 key购买 nike

我想通过创建一个输入验证服务器来首次尝试 Rust 应用程序,该服务器可以验证来自 AJAX 请求的值。这意味着我需要一种方法来使用 JSON 配置文件来指定根据输入值的名称使用哪些验证函数,也许还有一个在运行时在 HTTP 请求中出现的表单名称。我如何在 Rust 中执行类似于 PHP 的 call_user_function_array 的操作?

最佳答案

您可以将对函数的引用添加到 HashMap :

use std::collections::HashMap;

// Add appropriate logic
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 (kind, value) in &input {
let valid = match methods.get(kind) {
Some(f) => f(value),
None => false,
};

println!("'{}' is a valid {}? {}", value, kind, valid);
}
}

这里唯一棘手的部分是行 let mut methods: HashMap<_, fn(&str) -> bool> = HashMap::new() .您需要定义该映射将具有作为函数 指针的值。每个函数都有自己独特的匿名类型,函数指针是其之上的抽象。

关于rust - 调用仅在运行时已知的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30540807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com