Size: a a a

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

2020 November 12

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
с другой стороны есть принцип для непубличных интерфесов не переусложнять их раньше времени
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Тут скорее вопрос, что выдавать на выход в публичном интерфейсе
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Есть методы-геттеры, которые вовзвращают некоторые итерируемые данные. Для чего они будут использоваться заранее сказать сложно. Можно выдавать итератор, можно выдавать слайс.
источник

MP

Mag Pie in Rust — русскоговорящее сообществo
Random access нужен? Итерация более одного раза нужна? Использование поддиапазон нужно?
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Не исключено
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Слайсы, как я понимаю, несколько дороже?
источник

MP

Mag Pie in Rust — русскоговорящее сообществo
Ilya Lakhin
Слайсы, как я понимаю, несколько дороже?
Это с чего вдруг?
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Я спрашиваю, я не знаю )
источник

MP

Mag Pie in Rust — русскоговорящее сообществo
Это просто поинтер на кусок памяти с его длинной. Два раза usize
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
В отличии от некоторых других языков, слайсы в расте зиро-костные, как и итераторы.
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
ок, зачем тогда где-то вообще выдавать итераторы?
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Ilya Lakhin
ок, зачем тогда где-то вообще выдавать итераторы?
Ну например BTreeSet не может выдать слайс на свое содержимое, потому что его элементы не лежат подряд
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Но во всех случаях где можно выдать слайс, лучше выдать слайс. Получается так
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Ну есть исключение. Если то, что данные лежат подряд это деталь реализации, то ты можешь оставить себе больше свободы и вернуть итератор
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
А можно пример?
источник

AZ

Alexander Zaitsev in Rust — русскоговорящее сообществo
Ilya Lakhin
А можно пример?
сделал ты враппер Collection. Возвращаешь итератор. а внутри потом переключился с вектора на дерево, потому что увидел, что так быстрее\выше\сильнее. а интерфейсы при этом не сломал
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
А, я понял
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
ок
источник

M

MrSmith in Rust — русскоговорящее сообществo
S. L.
Тут скорее вопрос по с++, но аналогичный код на расте выдаст ошибку. На с++ покажет 0, пытаюсь понять почему
Ты не понимаешь кое что, от этого все ломается. Первый вопрос, для чего нужны ссылки? Да, там о вещают про гарантию инициализации и тд, но в реальности одна из главных причин оператор [], ты не можешь сделать того же с указателем. Но ссылки не гарантируют, что они не могут инвалидироваться со временем и стать висячими dangling, проблема в auto, требуется копировать объект или можно ввести другой способ обеспечения связывания, по id к примеру, или обновлять указатели при релокации
источник

KK

Kirill (Cykooz) Kuzm... in Rust — русскоговорящее сообществo
Ilya Lakhin
А можно пример?
Самый очевидный пример - итераторы используются когда данные генерятся на лету, а не лежат в памяти. Например по формуле, или читаются из очень большого файла или из сети и т.п.
источник