我正在浏览Rust语言的源代码,以更好地了解这种语言。我发现了这个片段。
// Collect program arguments as a Vec<String>.
let cmd: Vec<_> = env::args().collect();
// Some unrelated code omitted here.
match subcommand::parse_name(&cmd[1][..]) {
// It did some stuff here.
}
我不理解 [...]
。所以,我去查看了 parse_name
的声明:
pub fn parse_name(name: &str) -> Option<Box<Subcommand>>
这正是我预期的,但我仍然不理解[..]
在这个上下文中的含义。它在这里的意思不仅仅是将cmd
中的第一个String
作为&str
传递吗?如果是这样,那写cmd[1]
是否等效?为什么他们要这样做?
&cmd[1][..]
的意思是“将cmd
中索引为 1 的字符串的每个字符作为一个字符串切片”? - Jaredcmd[1]
的开头取一个片段,到cmd[1]
的结尾,包括结尾在内”。 - daboross