Size: a a a

Rust — русскоговорящее сообществo

2020 March 24

AL

Arsenii Lyashenko in Rust — русскоговорящее сообществo
Max Frai
let columns = row.iter();
       let data = columns.skip(3).next().unwrap();

Почему здесь columns после нельзя уже использовать? Почему на второй строчке владение уходит. Я думал итераторы как раз позволяют манипулировать с данными вот так. Хочу в следующей строчке, например, сделать columns.skip(1).next()
by_ref
источник

MF

Max Frai in Rust — русскоговорящее сообществo
действительно. что-то я никогда даже не слышал об этом методе у итератора
источник

В

Вафель in Rust — русскоговорящее сообществo
На самом деле очень смешной метод. Он просто возвращает ссылку на себя
источник

r

red75prime in Rust — русскоговорящее сообществo
Эквивалент (&mut columns).skip(3) ...
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Вафель
На самом деле очень смешной метод. Он просто возвращает ссылку на себя
Мутабельную?
источник

r

red75prime in Rust — русскоговорящее сообществo
Естественно. Иначе как итерироваться. fn by_ref(&mut self) -> &mut Self
источник

ИЛ

Иван Лещенко in Rust — русскоговорящее сообществo
polunin.ai
Мутабельную?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Почему тогда не .by_mut()?
источник

ИЛ

Иван Лещенко in Rust — русскоговорящее сообществo
polunin.ai
Почему тогда не .by_mut()?
Какой смысл от немутабельного итератора?
источник

В

Вафель in Rust — русскоговорящее сообществo
polunin.ai
Почему тогда не .by_mut()?
Потому что нет никакого смысла в &Iterator
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Иван Лещенко
Какой смысл от немутабельного итератора?
Не знаю
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Вафель
Потому что нет никакого смысла в &Iterator
Можно было бы соблюдать неявные соглашения и сделать .by_mut(). Я изначально подумал что там обычная ссылка возвращается, и только потом понял что итератор по иммутабельной ссылке что-то странное.
источник

AZ

Alex Zhukovsky in Rust — русскоговорящее сообществo
polunin.ai
Не знаю
у итератора всего один метод, которы принимает &mut self. Хотя для однообразия с другими функциями можно было бы as_ref_mut сделать
источник

Э

Эрик in Rust — русскоговорящее сообществo
Alexander Krivitskiy
Ого... А чего просто индекс не взять?
Ну, там тоже есть сложности, но вот ты реально прав, индекс и без ансейфа и места меньше занимает. Просто сперва подразумевалось, что вектор иногда будет сортироваться, но в итоге не сортируется.
источник

В

Вафель in Rust — русскоговорящее сообществo
Alex Zhukovsky
у итератора всего один метод, которы принимает &mut self. Хотя для однообразия с другими функциями можно было бы as_ref_mut сделать
Но это на 4 символа длинее, так что вот...)
источник

AK

Alexander Krivitskiy in Rust — русскоговорящее сообществo
Эрик
Ну, там тоже есть сложности, но вот ты реально прав, индекс и без ансейфа и места меньше занимает. Просто сперва подразумевалось, что вектор иногда будет сортироваться, но в итоге не сортируется.
+ то что ты делаешь - довольно стрёмно. В плюсах это был бы UAF.
источник

d

diabolo in Rust — русскоговорящее сообществo
Alexander Krivitskiy
+ то что ты делаешь - довольно стрёмно. В плюсах это был бы UAF.
+
источник

AL

Arsenii Lyashenko in Rust — русскоговорящее сообществo
Есть ли какой-то крейт для того, чтобы брать 1 мутабельную и несколько немутабельных ссылки со слайса с условием, что это будут разные участки памяти?
источник

KK

Kirill (Cykooz) Kuzminykh in Rust — русскоговорящее сообществo
Arsenii Lyashenko
Есть ли какой-то крейт для того, чтобы брать 1 мутабельную и несколько немутабельных ссылки со слайса с условием, что это будут разные участки памяти?
По моему это есть как метод слайса, что то вроде split. Выдаёт две мутабельные ссылки: на начало слайса и некое место в середине, которое укажешь аргументом.
источник

AL

Arsenii Lyashenko in Rust — русскоговорящее сообществo
Kirill (Cykooz) Kuzminykh
По моему это есть как метод слайса, что то вроде split. Выдаёт две мутабельные ссылки: на начало слайса и некое место в середине, которое укажешь аргументом.
Точно, спасибо
источник