首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配字符串上的不匹配类型

匹配字符串上的不匹配类型
EN

Stack Overflow用户
提问于 2017-08-21 03:07:39
回答 1查看 195关注 0票数 0

我似乎是混合类型,但我不太清楚如何解决这个问题。有人能帮我吗?

代码语言:javascript
复制
let args_vector: Vec<String>  = env::args().collect();
for arg in &args_vector[1..]{
    match arg{
        "--bytes"  => {
                flag.c = true;
            },
        "--chars" => {
                flag.m =true;
            },
        _ => println! ("Error"),
    }
}

在比赛中,我得到了一个错误:

代码语言:javascript
复制
mismatched types: expected struct `std::string::String`, found str  
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-21 04:22:07

在这里,arg是匹配中的String类型,而"--bytes"&str类型。因此,必须将arg类型为String转换为&str。这可以使用String::as_ref()来完成。

代码语言:javascript
复制
let args_vector: Vec<String> = env::args().collect();
for arg in &args_vector[1..] {
    match arg.as_ref() {
        "--bytes" => {
            flag.c = true;
        }
        "--chars" => {
            flag.m = true;
        }
        _ => println!("Error")
    };
}

注意,在println!之后缺少的println!使所有match分支返回相同的类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45788808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档