Enums 处理值枚举时类型不匹配
我试图使用Enums 处理值枚举时类型不匹配,enums,rust,rpc,matching,Enums,Rust,Rpc,Matching,我试图使用rmp_rpcRust库来创建一个服务器,该服务器接受用Python编写的客户端的命令。我正在修改示例以达到我的目标 如何将不同类型(整型/字符串/布尔型)的参数处理到匹配语句中,而不出现“不匹配类型;应为i32,找到枚举'rmp_rpc::Value'”错误?对于每个方法,参数类型可能不同 fn handle_request(&mut self, method: &str, params: &[Value]) -> Self::RequestFuture
rmp_rpc
Rust库来创建一个服务器,该服务器接受用Python编写的客户端的命令。我正在修改示例以达到我的目标
如何将不同类型(整型/字符串/布尔型)的参数处理到匹配语句中,而不出现“不匹配类型;应为i32,找到枚举'rmp_rpc::Value'”错误?对于每个方法,参数类型可能不同
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:方法) 在呼叫站点:
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"))
}
这是。我根据西蒙所做的是
匹配方法{
“sum”=>Methods::sum(参数[0]。as_64().expect(“预期的u64”),参数[1]。as_64().expect(“预期的u64”),
“conc”=>Methods::concatenate(参数[0]。as_str().expect(“预期的str”),params[1]。as_str().expect(“预期的str”),
“draw”=>Methods::draw(参数),
_=>错误(“无效参数“.into())
}
但也要将每个函数的输出固定到结果中。请查看如何创建结果,然后查看您的问题以将其包括在内。我们无法说出代码中存在哪些板条箱、类型、特征、字段等。理想情况下,制作一些能够再现你在计算机上的错误的东西。还有,谢谢!这起作用了。之后,我只需编辑函数定义,使其输出相同。否则,我有一个“不兼容类型的匹配臂”错误
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
}
}