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

时间:2017-08-21 03:07:40

标签: rust

我似乎在混合类型,但我无法弄清楚如何解决这个问题。有人能帮助我吗?

M = np.eye(3)
max_m20 = 2e-3
max_m10 = 0.6
for m20, m10 in zip(np.linspace(0, max_m20, nsteps), np.linspace(0, max_m10, nsteps)):
    M[2, 0] = m20
    M[1, 0] = m10
    warped = cv2.warpPerspective(img, M, (w, h))
    cv2.imshow('warped', warped)
    k = cv2.waitKey(1)
    if k == ord('q') & 0xFF:
        break

在比赛中,我收到了这个错误:

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

1 个答案:

答案 0 :(得分:3)

此处arg在匹配中的类型为String"--bytes"的类型为&str。因此,arg类型的String必须转换为&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武器返回相同的类型。