"error: mismatched types" when indexing a &str
"error: mismatched types" when indexing a &str
我有一个 struct MyStruct<'a>
,其中 self.text
的类型是 &'a str
我假设这会给我这个 str 的子串:
let slice: &str = self.text[i .. self.text.len()];
但是我收到以下错误:
src/lexer.rs:67:28: 67:59 错误:类型不匹配:
预期的`&str`,
找到`str`
(预期 &-ptr,
找到 str) [E0308]
src/lexer.rs:67 let slice: &str = self.text[i .. self.text.len()];
我做错了什么?
self.text[i .. self.text.len()]
是 str
类型;您需要重新借用结果才能得到 &str
。另请注意,您可以省略范围的上限。这让你:
let slice: &str = &self.text[i..];
编辑:要注意为什么:这是因为切片只是索引的一种特殊情况,其行为方式相同(如果你想借用你索引的东西的引用,你需要从它那里借用)。如果不讨论动态大小的类型,我真的无法深入了解更多细节,这可能最好留作不同的讨论。
我有一个 struct MyStruct<'a>
,其中 self.text
的类型是 &'a str
我假设这会给我这个 str 的子串:
let slice: &str = self.text[i .. self.text.len()];
但是我收到以下错误:
src/lexer.rs:67:28: 67:59 错误:类型不匹配: 预期的`&str`, 找到`str` (预期 &-ptr, 找到 str) [E0308] src/lexer.rs:67 let slice: &str = self.text[i .. self.text.len()];
我做错了什么?
self.text[i .. self.text.len()]
是 str
类型;您需要重新借用结果才能得到 &str
。另请注意,您可以省略范围的上限。这让你:
let slice: &str = &self.text[i..];
编辑:要注意为什么:这是因为切片只是索引的一种特殊情况,其行为方式相同(如果你想借用你索引的东西的引用,你需要从它那里借用)。如果不讨论动态大小的类型,我真的无法深入了解更多细节,这可能最好留作不同的讨论。