【发布时间】:2019-06-22 16:19:41
【问题描述】:
我正在阅读 Rust 书,第 4 章中的参考和借用似乎与我不一致。
在Reference and Borrowing中,下图4-5显示s指向s1而不是堆上的实际数据。
fn main() {
let s1 = String::from("hello");
let len = calculate_length(&s1);
println!("The length of '{}' is {}.", s1, len);
}
fn calculate_length(s: &String) -> usize {
s.len()
}
但在String Slices 中,图表清楚地表明world 引用了实际数据,尽管只是其中的一部分。它还说,以下代码“类似于引用整个字符串,但带有额外的 [0..5] 位。它不是对整个字符串的引用,而是对字符串的一部分的引用。”
fn main() {
let s = String::from("hello world");
let hello = &s[0..5];
let world = &s[6..11];
}
现在我想我的问题是为什么 world 在 String Slices 案例中不指代 s?我知道world 不能只指向s,因为那样它就无法获取最后5 个字母。但这两张图在我看来完全不同,但它们都是“参考”。有人可以提供一个合乎逻辑的方式来理解它吗?
谢谢!
【问题讨论】:
标签: rust