在Rust 书籍和文档中,str被称为切片(在书中他们说切片到 a String)。因此,我希望str其行为与任何其他切片相同:例如,我应该能够使用std::slice. 然而,情况似乎并非如此:
虽然这按预期工作(游乐场):
fn main() {
let vec = vec![1, 2, 3, 4];
let int_slice = &vec[..];
for chunk in int_slice.chunks(2) {
println!("{:?}", chunk);
}
}
Run Code Online (Sandbox Code Playgroud)
这无法编译:(游乐场)
fn main() {
let s = "Hello world";
for chunk in s.chunks(3) {
println!("{}", chunk);
}
}
Run Code Online (Sandbox Code Playgroud)
并出现以下错误消息:
error[E0599]: no method named `chunks` found for type `&str` in the current scope
--> src/main.rs:3:20
|
3 | for chunk in s.chunks(3) {
| ^^^^^^
Run Code Online (Sandbox Code Playgroud)
这是否意味着str不是普通切片?
如果不是: 的特征是什么str,使得它不可能成为切片?
旁注:如果上面是一个“int 切片”,那么不应该str被描述为“char 切片”吗?