【问题标题】:How do I change from as_slice() to [] syntax?如何从 as_slice() 更改为 [] 语法?
【发布时间】:2015-04-17 17:27:54
【问题描述】:

针对较新的 nightlies 重新编译一些较旧的代码,我收到有关使用 as_slice() 语法而不是 var[] 语法的警告。

但是,当我将as_slice() 替换为[] 时,如in the RFC 所示,我收到编译器错误消息:

 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[] 更符合习惯?当我按照编译器要求我执行的操作时遇到的错误是怎么回事?

【问题讨论】:

  • 作为参考,新语法被称为Index,这是允许它的特征。

标签: syntax rust slice


【解决方案1】:

你已经接近成功了:

print_usage(&program[], opts);

所以是的,现在我们应该使用方括号语法作为&[start .. end]&mut [start .. end] 而不是as_slice/slice/slice_from/slice_to

【讨论】:

  • 我认为由于新的 deref 强制规则,即使 &program(不带括号)就足够了(如果 programString 或其他带有 Deref<Target=str> 的东西)。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
相关资源
最近更新 更多