【问题标题】:What is the differences between the two slice in Rust?Rust 中的两个 slice 有什么区别?
【发布时间】:2017-12-14 13:45:27
【问题描述】:
let s1 = String::from("hello world.");
let r1 = &s1;
let sl1 = &s1[..];
let sl2 = &r1[..];
let sl3 = r1[..];
println!("{}", sl3);

sl1sl2有什么区别,为什么sl3无效? r1 不是已经引用了,为什么需要&

【问题讨论】:

标签: rust slice


【解决方案1】:

编译器取消引用在对索引语法 [] 进行脱糖处理时,Index::index 的输出(请参阅相关的 question 及其答案)。使用显式类型注释,绑定的类型如下:

let r1: &str = &s1;
let sl1: &str = &s1[..];
let sl2: &str = &r1[..];
let sl3: str = r1[..];

str 是一个未定型的类型,不能入栈,因此不能用作局部变量绑定sl3 的类型,因此会出现编译错误。

【讨论】:

    猜你喜欢
    • 2011-05-31
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 2022-01-23
    相关资源
    最近更新 更多