Size: a a a

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

2020 November 23

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
red75prime
Да, я не прав. Это зависит от реализации асинка. Tokio для многопоточного рантайма использует work-stealing thread pool. Если один поток заблокировался, то другие возьмут на себя обработку готовых к выполнению футур. В .NET для асинка тоже могут использоваться разные контексты синхронизации. Некоторые используют один поток выполнения. Нужно смотреть что используется в unity
Там другое имеется в виду. Если лок не держится через await-ы, то асинхронный мьютекс не нужен
источник

VK

Vasily Kondratyev in Rust — русскоговорящее сообществo
Kai Ren
Грамотно юзаем неймспейсы. Банальнейшый пример log::info!() вместо info!() и user::Id вместо UserId. Импорты не бухнут, читаемость не страдает.
+1
и раскидываем use по файлу
есть статья в тему: https://tarquin-the-brave.github.io/blog/posts/rust_use_statements/
источник

r

red75prime in Rust — русскоговорящее сообществo
Mikail Bagishov
Там другое имеется в виду. Если лок не держится через await-ы, то асинхронный мьютекс не нужен
Зависит от ситуации и рантайма. Блокировать весь однопоточный рантайм на ожидании другого потока не всегда то что надо.
источник

r

red75prime in Rust — русскоговорящее сообществo
И нужно учитывать, что блокируя poll() мы блокируем всю футуру.
источник

AL

Andrey @ozkriff Lesn... in Rust — русскоговорящее сообществo
интересно, а много людей так делает? по мне прям сильно перегиб. главный мой контр-аргумент всему этому содержится в "When I Don’t Do This" разделе, где он говорит, что не делает так в модулях, которые делают только что-то одно: мы же, вроде как, и должны стремиться к модулям, которые что-то одно делают.
источник

KR

Kai Ren in Rust — русскоговорящее сообществo
Andrey @ozkriff Lesnikóv
интересно, а много людей так делает? по мне прям сильно перегиб. главный мой контр-аргумент всему этому содержится в "When I Don’t Do This" разделе, где он говорит, что не делает так в модулях, которые делают только что-то одно: мы же, вроде как, и должны стремиться к модулям, которые что-то одно делают.
Не знаю много ли, но нас сам Rust подтолкнул к этому вместе с clippy::pedantic (нельзя glob-импорты и ругань на module name repetitions). Код и правда стал проще и чище, хоть это и не так привычно, как в других языках.
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
red75prime
Вообще. Асинк из С# тоже не любит синхронные локи.
Любит, там проблема с тем что лок запоминает тред
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
А асинки к тредам не привязаны
источник

AL

Andrey @ozkriff Lesn... in Rust — русскоговорящее сообществo
Kai Ren
Не знаю много ли, но нас сам Rust подтолкнул к этому вместе с clippy::pedantic (нельзя glob-импорты и ругань на module name repetitions). Код и правда стал проще и чище, хоть это и не так привычно, как в других языках.
Хм. Я понимаю, как этим клиппи педантик подталкивает "грамотно юзать неймспейсы", но стимулов к размазыванию импортов по модулю я в линтах не замечал.
источник

b

in Rust — русскоговорящее сообществo
Оо халява
источник

S

Snarpix in Rust — русскоговорящее сообществo
Может в телеге уже есть бот который распознает эту картинку и банит?😁
источник

DT

Dim Turov in Rust — русскоговорящее сообществo
Snarpix
Может в телеге уже есть бот который распознает эту картинку и банит?😁
кстати, хорошая и не очень сложная идея 🙂
источник

KR

Kai Ren in Rust — русскоговорящее сообществo
Andrey @ozkriff Lesnikóv
Хм. Я понимаю, как этим клиппи педантик подталкивает "грамотно юзать неймспейсы", но стимулов к размазыванию импортов по модулю я в линтах не замечал.
А, не. Я не про размазывание, а больше про гранулярность неймспейсов и их использование в коде (а не только самого последнего элемента).

Касательно размазывания, то мы и сильно не размазываем. По сути, единственый кейс - это addhoc использование Ext-трейта in-place вместо того, чтобы тащить его на уровень модуля.
источник

a

anchor in Rust — русскоговорящее сообществo
Snarpix
Может в телеге уже есть бот который распознает эту картинку и банит?😁
Shieldy, которого упорно не хотят добавлять
источник

J

JohnByte in Rust — русскоговорящее сообществo
А почему размер выделяемой памяти для замыкания неизвестен во время компиляции? Компилятор-то видит какой указатель на функцию и значения окружения с известным размером ему передаются. Аналогично почему размер остальных имплементированных трейтов нельзя на стадии компиляции узнать?
источник

VB

Vlad Beskrovnyy in Rust — русскоговорящее сообществo
Так известен
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
JohnByte
А почему размер выделяемой памяти для замыкания неизвестен во время компиляции? Компилятор-то видит какой указатель на функцию и значения окружения с известным размером ему передаются. Аналогично почему размер остальных имплементированных трейтов нельзя на стадии компиляции узнать?
Разве не dyn-трейты вообще имеют какой-то размер в памяти?
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
Вроде как просто компайл-тайм абстракция
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
Мономорфизированный код имеет
источник

J

JohnByte in Rust — русскоговорящее сообществo
Чет тупанул. В общем случае у трейта нет размера. Это просто шаблончик. Поэтому можно передать или вернуть только указатель на трейт в heap
источник