Rust 切片模式是否可以在不进行克隆的情况下用于解析命令行参数?

Rust 切片模式是否可以在不进行克隆的情况下用于解析命令行参数?,rust,Rust,可以使用解析命令行参数吗 我将参数捕获为:let args:Vec=std::env::args().skip(1.collect() 我的想法是这样的,它不可编译: // example usage: progname run bash ls -la match args { ["run", rest_of_commands[..]] => println!("{:?}", rest_of_commands), _ => println!("usage: run &

可以使用解析命令行参数吗

我将参数捕获为:
let args:Vec=std::env::args().skip(1.collect()

我的想法是这样的,它不可编译:

// example usage: progname run bash ls -la
match args {
    ["run", rest_of_commands[..]] => println!("{:?}", rest_of_commands),
    _ => println!("usage: run <your-command>"),
}
//示例用法:progname运行bash ls-la
匹配参数{
[“run”,rest\u of_命令[…]=>println!(“{:?}”,rest\u of_命令),
_=>println!(“用法:运行”),
}

从1.40开始,“rest”没有稳定的语法。然而,《夜间》中有这样一种语法:

#![feature(slice_patterns)]

fn main() {
    let args = ["foo", "bar"];
    match args {
        ["run", rest_of_commands @ ..] => println!("{:?}", rest_of_commands),
        _ => println!("usage: run <your-command>"),
    }
}
#![特征(切片模式)]
fn main(){
设args=[“foo”,“bar”];
匹配参数{
[“运行”,剩余的命令@..]=>println!(“{:?}”,剩余的命令),
_=>println!(“用法:运行”),
}
}
()


语法
identifier@..
表示“其余的”。

我想这会满足您的要求。请定义在这种情况下,有效的含义。问“我想探索吗”是一个基于观点的问题。基于意见的问题与堆栈溢出无关。@Shepmaster我正在学习这门语言,希望避免在某些情况下习惯的
.clone()
。你说得对,“我想要……吗”听起来像是一个观点,但它是对原始问题的编辑。谢谢你的回答!但是,您是否有办法将
std::env::args().collect()
返回的
Vec
转换为
&str
数组(如您和我的示例所示)@sysarcher。