"错误:不匹配的类型"索引a& str时

时间:2015-03-12 07:57:23

标签: rust

我有一个struct MyStruct<'a>,其中self.text的类型为&'a str

我认为这会给我一个str的子串:

let slice: &str  = self.text[i .. self.text.len()];

但是我收到以下错误:

src/lexer.rs:67:28: 67:59 error: mismatched types:
 expected `&str`,
    found `str`
(expected &-ptr,
    found str) [E0308]
src/lexer.rs:67         let slice: &str  = self.text[i .. self.text.len()];

我做错了什么?

1 个答案:

答案 0 :(得分:4)

self.text[i .. self.text.len()]的类型为str;你需要重新借用结果才能获得&str。另请注意,您可以省略范围的上限。这让你:

let slice: &str = &self.text[i..];

编辑:要注意为什么:这是因为切片只是索引的一种特殊情况,其行为方式相同(如果您希望借用对你索引的东西,你需要借用它)。如果不进入动态大小类型,我无法真正了解更多细节,这可能最适合进行不同的讨论。