< 返回版块

5angXR 发表于 2024-07-04 16:36

fn parse_input(args: &[String]) -> (String, String) {
    if args.len() < 3 {
        panic!("\r\nat least 3 arguments!\r\n");
    }
    (args[1].clone(), args[2].clone())
}
fn parse_input3(args: &Vec<String>) -> (String, String) {
    if args.len() < 3 {
        panic!("\r\nat least 3 arguments!\r\n");
    }
    (args[1].clone(), args[2].clone())
}

fn main() {
    let args: Vec<String> = env::args().collect();
    let array_string: [String; 3] = ["0".to_string(),"1".to_string(),"2".to_string(),];


    parse_input(&args); //ok
    parse_input(&array_string); //ok

    parse_input3(&args); //ok
    parse_input3(&array_string); //编译报错
}

args和array_string是两种类型, 但都能传入parse_input, 这是什么原理?

评论区

写评论
我心飞翔 2024-07-04 16:42

因为 Vec 实现了 Deref

1 共 1 条评论, 1 页