В Rust book и docs , str
упоминается как срез (в книге они говорят, что срез в 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);
}
}
Компиляция не удалась: (детская площадка )
fn main() {
let s = "Hello world";
for chunk in s.chunks(3) {
println!("{}", chunk);
}
}
Со следующим сообщением об ошибке:
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) {
| ^^^^^^
Означает ли это, что str
не является обычным срезом?
Если это не так: Какова характеристика str
, которая делает невозможным быть срезом?
С другой стороны: если вышеупомянутое является "int срезом", не следует описывать str
как"кусок ломтика"?