Size: a a a

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

2020 November 05

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Mag Pie
Куда выводить ошибку? Если стдаут нету, то и выводить некуда
Во-первых, есть stderr
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Во-вторых, есть код возврата
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
В-третьих, можно предоставить решать мне, что делать с ошибкой. Может, я её в лог в файле пишу.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Ладно в макросах, но .flush()-то и так возвращает Result, дайте мне его обработать
источник

MP

Mag Pie in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Вау. У меня просто, блин, нет слов.
А что говорит blame? Когда эту проверку запилили и с каким комментарием?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Mag Pie
А что говорит blame? Когда эту проверку запилили и с каким комментарием?
Ща, я пока пытаюсь со вторым кейсом разобраться
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Mag Pie
А что говорит blame? Когда эту проверку запилили и с каким комментарием?
У меня в репозитории раста гит блейм зависает, лол
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Эту ересь добавили вот тут
https://github.com/rust-lang/rust/issues/25977
источник

M

MrSmith in Rust — русскоговорящее сообществo
Mikail Bagishov
Ну это техническое ограничение а не фундаментальное
Да я это придумал полтора года назад, работать не будет. Нужен SON, и поддержка компилятора.
источник

M

MrSmith in Rust — русскоговорящее сообществo
Причем там встаёт вопрос дизайна, делаем ли мы модули для библиотек или ограничиваем семантически или ограничиваем возможности
источник

SL

S. L. in Rust — русскоговорящее сообществo
Тут скорее вопрос по с++, но аналогичный код на расте выдаст ошибку. На с++ покажет 0, пытаюсь понять почему
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
S. L.
Тут скорее вопрос по с++, но аналогичный код на расте выдаст ошибку. На с++ покажет 0, пытаюсь понять почему
Могу предположить из-за реаллокации
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Поведение программы на С++ не определено.
Поэтому в том, что она выводит 0, нет ничего удивительного
источник

MP

Mag Pie in Rust — русскоговорящее сообществo
S. L.
Тут скорее вопрос по с++, но аналогичный код на расте выдаст ошибку. На с++ покажет 0, пытаюсь понять почему
Там может быть любой мусор, я бы посмотрел на то что за код выдаёт компилятор. Это же реаллокация массива
источник

MP

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

MP

Mag Pie in Rust — русскоговорящее сообществo
Наверняка у разных компиляторов различается поведение
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
Mag Pie
Там может быть любой мусор, я бы посмотрел на то что за код выдаёт компилятор. Это же реаллокация массива
Не факт что мусор, может там аллокация с запасом, но всё же от этого риск не уменьшается
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
А неопределено оно потому, что был сделан push_back в вектор, у которого size() == capacity(). Все ссылки и итераторы после этого инвалидируются.

А в расте такой код просто не скомпилируется.
источник

SL

S. L. in Rust — русскоговорящее сообществo
т.е изначально размер вектора равен 3, когда мы пушим туда элемент, то его размер увеличивается в 2 раза, потому что четвертый элемент туда не влазит. Из-за увеличения размера ему приходится искать новое место в памяти. После этого он пытается обратиться по ссылке к старому месту в памяти?
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
S. L.
т.е изначально размер вектора равен 3, когда мы пушим туда элемент, то его размер увеличивается в 2 раза, потому что четвертый элемент туда не влазит. Из-за увеличения размера ему приходится искать новое место в памяти. После этого он пытается обратиться по ссылке к старому месту в памяти?
+
источник