我正在尝试使用qazxsw poi Rust库来创建一个服务器,该服务器接受来自用Python编写的客户端的命令。我正在修改qazxsw poi示例以达到我的目标。
如何处理不同类型的参数(整数/字符串/布尔值)到匹配语句而不会得到“不匹配的类型;期望i32,找到枚举'rmp_rpc ::值'”错误?对于每种方法,参数类型可能不同。
rmp_rpc
您需要在调用站点执行此类型检查,或者将类型检查推迟到被调用者(this方法)。
在通话现场:
fn handle_request(&mut self, method: &str, params: &[Value]) -> Self::RequestFuture {
match method {
"sum" => Methods::sum(params[0], params[1]),
"draw" => Methods::draw(params),
"conc" => Methods::concatenate(params[0], params[1])
}
在被叫方:
Echo::<whatever>
这是match method {
"sum" => Echo::sum(params[0].as_u64().expect("expected u64"), params[1].as_u64().expect("expected u64")),
"draw" => Echo::draw(params), // <-- this must continue to be passed as &[Value]
"concatenate => Echo::conc(params[0].as_str().expect("expected str"), params[1].as_str().expect("expected str"))
}
。
我根据西蒙所做的是
impl Echo {
pub fn sum(v1: Value, v2: Value) -> u64 {
let v1 = v1.as_u64().expect("expected u64");
let v2 = v2.as_u64().expect("expected u64");
v1 + v2
}
}
但也要将每个函数的输出修复为Result <'Value,Value>,以避免不兼容的类型错误