[..]对Rust切片意味着什么,又叫什么?

时间:2019-03-22 12:53:09

标签: string rust slice

我在自述文件中找到了此示例:

use std::env;

fn main() {
    let filename: &str = &env::args().nth(1).unwrap()[..];
    let filename2: &str = &env::args().nth(1).unwrap();
    println!("{:?}", filename);
    println!("{:?}", filename2)
}

我对第一行感兴趣:let filename ...

[..]之后的unwrap是什么意思?

第二行let filename2 ...是我自己对filenamefilename2相同的测试,还是我错过了什么?

这个[..]叫什么名字?

1 个答案:

答案 0 :(得分:3)

字符串可以用作字节数组。此加法严格不执行任何操作:

#![feature(core_intrinsics)]

fn print_type_of<T>(_: &T) {
    println!("{}", unsafe { std::intrinsics::type_name::<T>() });
}

fn main() {
    let x = "abc";

    print_type_of(&x); // &str

    let x = &x[..];

    print_type_of(&x); // &str
}

[..]包含完整范围,而&则引用了该范围。