我在自述文件中找到了此示例:
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 ...
是我自己对filename
和filename2
相同的测试,还是我错过了什么?
这个[..]
叫什么名字?
答案 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
}
[..]
包含完整范围,而&
则引用了该范围。