172 похожих чатов

Например помню пример, который в rust создавал блокировку. Там два раза

подряд в одной функции блокировался мьютекс.

Раст, например, мог бы запрещать локать во второй раз на этапе компиляции, если бы объекты в расте могли бы приобретать эффекты.

Например, после lock() переменная мьютекса неявно приобретает эффект 'already_locked<'lifetime_of_returned_ref>, который запрещает вызов метода lock(), пока полученная ссылка не завершит время жизни.

Такой функционал мог бы сделать раст более мощным, но вопрос в том, а надо ли? Компиляция и так не быстрая. Хотя надеюсь, что трейты для функций привнесут что-то новое. (Я пока не читал это RFC)

6 ответов

20 просмотров

как раз дважды лок в одной функции вполне может отслеживаться линтерами, проблема же когда они раскиданы ровным слоем по всей программе

Василий Требунцов
линтером, но не системой типов

да, но это всё еще нельзя в общем виде гарантировать каким-то образом

Тип переменной не может меняться, он всегда один

Василий-Требунцов Автор вопроса
Пух
да, но это всё еще нельзя в общем виде гарантирова...

Ну, здесь я не про дедлоки, а про концепцию в целом. Например можно сделать билдеры, которые смогут вернуть значение T, после того, как необходимые методы вызваны.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта