< 返回版块

ngugcx 发表于 2019-12-10 13:46

match status.as_str() {
    "not_deal" => { order.status = "open".to_owned() }
    "part_deal" => { order.status = "open".to_owned() }
    "done" => { order.status = "closed".to_owned() }
    "cancel" => { order.status = "canceled".to_owned() }
    _ => { println!("{}", status) }
}

match status.as_str() / match &*status / match status.as_ref() 都不行。 现在应该怎么写? 谢谢!

评论区

写评论
kolapapa 2019-12-10 19:28

这种问题建议直接贴上play代码

作者 ngugcx 2019-12-10 14:21

果然又是我错了。。。 应该用as_str()而不是to_string()。

对以下内容的回复:

作者 ngugcx 2019-12-10 14:11

发现问题不在match。

let status = ro["data"]["status"].to_string();
if status == "not_deal" {
    println!("xxx {}", status);
}

ro是一个serde_json的object。 status是std::string::String类型,打印出来是"not_deal",但这个if判断居然不相等。

对以下内容的回复:

作者 ngugcx 2019-12-10 13:58

没报错, 结果是错的,只匹配到默认选项。

对以下内容的回复:

Mike Tang 2019-12-10 13:55

报错信息?

1 共 5 条评论, 1 页