针对较新的 nightlys 重新编译一些较旧的代码,我收到有关使用as_slice()有利于var[]语法的语法的警告。
但是,当我按照RFC 中as_slice()所示替换为时,我收到编译器错误:[]
expected `&str`,
found `str`
(expected &-ptr,
found str) [E0308]
src/main.rs:38 print_usage(program[], opts);
Run Code Online (Sandbox Code Playgroud)
与我原来的相比
print_usage(program.as_slice(), opts);
Run Code Online (Sandbox Code Playgroud)
语法是否as_slice()完全消失,或者只是将其写为更惯用vec[]?当我按照编译器要求我做的事情时遇到的错误是怎么回事?
你已经接近成功了:
print_usage(&program[], opts);
Run Code Online (Sandbox Code Playgroud)
所以是的,现在我们应该使用方括号语法作为&[start .. end]or来&mut [start .. end]代替as_slice// slice/ 。slice_fromslice_to