Syntax 如何从as_slice()更改为[]语法?

Syntax 如何从as_slice()更改为[]语法?,syntax,rust,slice,Syntax,Rust,Slice,针对较新的nightlies重新编译一些较旧的代码,我收到了关于使用as_slice()语法支持var[]语法的警告 但是,当我将替换为_slice()为[]时,会出现一个编译器错误,如图所示: expected `&str`, found `str` (expected &-ptr, found str) [E0308] src/main.rs:38 print_usage(program[], opts); 和我原来的相比 print_us

针对较新的nightlies重新编译一些较旧的代码,我收到了关于使用
as_slice()
语法支持
var[]
语法的警告

但是,当我将
替换为_slice()
[]
时,会出现一个编译器错误,如图所示:

 expected `&str`,
    found `str`
(expected &-ptr,
    found str) [E0308]
src/main.rs:38         print_usage(program[], opts);
和我原来的相比

print_usage(program.as_slice(), opts);

是将
as_slice()
语法完全消失了,还是将其编写为
vec[]
?当我按照编译器的要求去做时,我遇到的错误是怎么处理的?

你几乎成功了:

print_usage(&program[], opts);

因此,是的,现在我们应该使用方括号语法作为
&[start..end]
&mut[start..end]
而不是
作为
/
切片
/
切片
从/
,我认为由于新的解除限制强制规则,即使是
&program
(没有括号)也足够了(如果
程序
是一个
字符串
或其他带有
Deref
的东西)。作为参考,新语法称为,这是允许它的特性。