Size: a a a

2020 July 15

PP

Piu Piu in Rust Async
Adatan
Бля, как же сложно в расте после Go...
а как ты хотел
источник

A

Adatan in Rust Async
ну дженериков нет (если ты не мучаешься с рефлексией или перебором интерфейсов) в стабе, а дев я не смог поставить
источник

DZ

Dmitriy Zhiλtsov in Rust Async
Piu Piu
а как ты хотел
а я вообще не хотел в го - ситуация заставила )
источник

KR

Kai Ren in Rust Async
В Go после Раста стрёмно тем, что ты хочешь мувнуть значение в замыкание, а оно само неявно копируется. И вроде бы всё ок, но как-то не по себе.
источник

KR

Kai Ren in Rust Async
Семантика вьедается в мозги ппц
источник

AV

A V in Rust Async
а ещё что шаришь структуру между разными потоками, компилятор тебе не говорит об этом, и потом ловишь рандомные падения в рантайме
источник

KR

Kai Ren in Rust Async
А ещё не всегда`nil` == nil
источник

V

Vetro in Rust Async
A V
а ещё что шаришь структуру между разными потоками, компилятор тебе не говорит об этом, и потом ловишь рандомные падения в рантайме
а мутировать без мутекса позволяет?
источник

V

Vetro in Rust Async
или атомарных операций
источник

KR

Kai Ren in Rust Async
да
источник

MB

Mikail Bagishov in Rust Async
Vetro
а мутировать без мутекса позволяет?
Причем мьютексы там стандартные-плохие: компилятор не проверяет, что мьютекс был взят перед использованием данных. Ну и для RWLock корректность Lock/RLock тоже возлагается на программиста.
источник

V

Vetro in Rust Async
мммм)
источник

AV

A V in Rust Async
Vetro
а мутировать без мутекса позволяет?
Ахахах думаешь, борроу-чекер - универсальная фича? )
источник

AV

A V in Rust Async
В какой язык пальцем ни ткни - ограничений на мутацию нет
источник

K

Kitsu in Rust Async
хаскель?
источник

MB

Mikail Bagishov in Rust Async
A V
Ахахах думаешь, борроу-чекер - универсальная фича? )
Ну в C++ можно хоть какое-то подобие безопасности сделать.
источник

AV

A V in Rust Async
Kitsu
хаскель?
речь не идёт о языках без мутации вестимо
источник

MB

Mikail Bagishov in Rust Async
То есть отслеживать лайфтайм мьютекса не выйдет.
Но хотя бы можно не дать использовать данные без залоканного мьютекса.
источник

MZ

Max Zhuravkov in Rust Async
Kai Ren
В Go после Раста стрёмно тем, что ты хочешь мувнуть значение в замыкание, а оно само неявно копируется. И вроде бы всё ок, но как-то не по себе.
Модель памяти гоу достаточно стандартная - happens-before и тп (Те ничего совсем нового там в принципе нет). Понятно что после rust уже привыкаешь что к тому что компилятор по рукам бьет если что не так. Чем меньше многопоточного кода у в программе (и он сосредоточен именно там где он нужен) тем программы проще поддерживаются. Приятно конечно скинуть часть работы на компилятор - но реальность такова что еще N-лет корректность большей части многопоточного ПО будет анализироваться в основном разработчиками, а не тулами
источник

MZ

Max Zhuravkov in Rust Async
Mikail Bagishov
Причем мьютексы там стандартные-плохие: компилятор не проверяет, что мьютекс был взят перед использованием данных. Ну и для RWLock корректность Lock/RLock тоже возлагается на программиста.
Кроме rust (и может есть каких-нибудь изотерических языков) out of the box чтобы компилятор делал проверки аналогичные rustc? Наверное нет,  мутексы как мутексы. Они не могут быть “плохими” - программист проверит вместо компилятора
источник