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。