【问题标题】:Mismatched types on matching string [duplicate]匹配字符串上的类型不匹配[重复]
【发布时间】:2018-01-29 00:55:29
【问题描述】:

我似乎在混合类型,但我不知道如何解决这个问题。有人可以帮我吗?

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"),
    }
}

在比赛中,我收到此错误:

mismatched types: expected struct `std::string::String`, found str  

【问题讨论】:

  • 不相关,但可以写for arg in std::env::args().skip(1) { /*etc.*/ }

标签: rust


【解决方案1】:

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

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! 后面缺少的; 以使所有match 臂返回相同的类型。

【讨论】:

    猜你喜欢
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    相关资源
    最近更新 更多