Rust. Срезы.
Другим типом данных, который не забирает во владение данные является срез.
Давайте рассмотрим одну проблему, нам нужно создать функцию в которую мы передаем строку, а она возвращает нам первое слово, а если программа не находит пробелы, то возвращает эту же строку.
fn first_word(s: &String) -> usize {
let bytes = s.as_bytes();
for (i, &item) in bytes.iter().enumerate() {
if item == b' ' {
return i;
}
}
s.len() }
Для того чтобы найти пробел, мы превращаем s в массив байт с помощью метода as_bytes(), далее мы сравниваем каждый байт с байтом пробела, если это будет байт пробела то возвратим индекс этого пробела...