Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
sobaka_v_kepke
@chabapok_twitter
насколько понимаю, плагин - более широкое понятие.
Alexander Mescheryakov
@XX
Есть что-то, что можно сделать плагином, но нельзя процедурным макросом?
Вообще интересно, когда нужно использовать одно, а когда другое?
Denis Lisov
@tanriol
@XX Ну, например, clippy на процедурных макросах не сделаешь.
Denis Lisov
@tanriol
Грубо говоря, процедурный макрос имеет доступ к "принадлежащему" ему коду в форме дерева токенов, но не имеет доступа к прочей внутренней информации компилятора (например, типам, существующим реализациям, вообще другим частям кода). Он вынужден разбирать этот код самостоятельно.
Alexander Mescheryakov
@XX
Ага, понятно. Непонятно только, почему одно время процедурные макросы и плагины компилятора использовали как синонимы..
Denis Lisov
@tanriol
Потому что базовая версия нынешних процедурных макросов была стабилизирована в 1.15, а в окрестности 1.0 "процедурные макросы" можно было реализовать примерно через те же интерфейсы, что и плагины компилятора - и, очевидно, nightly-only.
Alexander Mescheryakov
@XX
А как теперь решается проблема, что у нас есть модуль std::vec и макрос std::vec? В смысле, как теперь такое корректно импортить?
Denis Lisov
@tanriol
Импортируются оба. Не конфликтуют, поскольку в разных пространствах имён.
Psilon
@Pzixel
тут по сути ситуация, что имя типа совпадает с именем неймспейса
Alexander Mescheryakov
@XX

Кстати, еще вопрос про универсальную запись вызова функций. В определении макроса vec есть участок:

<[_]>::into_vec(box [$($x),*])

Почему здесь мы обязаны использовать угловые скобки? Почему не работает конструкция вида:

[i32]::into_vec(Box::new([1, 2, 3]))

?

Denis Lisov
@tanriol
Рискну предположить, что для упрощения парсера. В противном случае парсер, встречающий [name не может знать, ему начинать это парсить как тип или как выражение, а у них грамматика разная.
Alexander Mescheryakov
@XX

Интересно, что ошибка при этом именно в том, что пропущены скобки:

error: missing angle brackets in associated item path
 --> src/main.rs:2:16
  |
2 |     let nums = [i32]::into_vec(Box::new([1, 2, 3]));
  |                ^^^^^^^^^^^^^^^ help: try: `<[i32]>::into_vec`

То есть, надо понимать, он понял, что перед ним тип и вызов его ассоциированного элемента... Но скобки все равно хочет )

Denis Lisov
@tanriol
...он понял, что тут пытаются вызвать ассоциированный метод типа, но он-то это уже распарсил как значение :-(
Alexander Mescheryakov
@XX
хмм... возможно
Denis Lisov
@tanriol
Возможно, здесь можно было бы сделать отступление на более ранний момент, но с парсером, написанным вручную, это может быть весьма нетривиально.
Psilon
@Pzixel
не вижу смысла сильно усложнять парсер
ради того, чтобы две скобки не писать
rust-ru-irc-bot
@rust-ru-irc-bot
O01eg Как в tokio принято совмещать выполнение Send и !Send футур?
Roman
@kpp
!Send футуры надо выполнять на current_thread runtime
rust-ru-irc-bot
@rust-ru-irc-bot
O01eg А Send футуры надо выполнять на обычном Runtime. Как их вместе-то сдружить?
Denis Lisov
@tanriol
Ну самый тупой вариант, если он ничему не противоречит, выполнять всё в одном потоке на рантайме current_thread
rust-ru-irc-bot
@rust-ru-irc-bot
O01eg Хм, можно выделить поток из пула через blocking
rust-ru-irc-bot
@rust-ru-irc-bot
O01eg Нельзя, он уже занят для многопоточного рантайма. Только если отдельно выделять настоящий поток.
Сухарик
@suhr
Читая лор, я вдруг обнаружил вот это: https://azul.rs/
Roman
@kpp

А Send футуры надо выполнять на обычном Runtime. Как их вместе-то сдружить?

Send футуры можно и на однопоточном выполнять)

к вопросу о хадупах, облаках и «вы не гугл»
Vitaly
@Virtuos86

Читая лор, я вдруг обнаружил вот это: https://azul.rs/

Ага, я тоже читал. Я так понял, это WebView + маркетинговый буллшит. Имхо, конечно.

Andréy Lesnikóv
@ozkriff
https://ru.stackoverflow.com/questions/897932/Воспроизведение-звука-на-rust - вопрос на SO тухнет. Вроде, тут есть люди кто со звуком игрался.
Сухарик
@suhr
rust-jack, например.
rust-jack, наверное, проще всего использовать.
Denis Lisov
@tanriol
С запуском JACK-сервера? Не уверен, что это "проще всего"
Сухарик
@suhr
У меня просто всегда есть jack-сервер под рукой, так что мне просто.
Да и писал я только синты, а для них джек кошернее.
Alexander Irbis
@alexander-irbis
rust-portaudio с небольшой обвеской - тоже неплох, как кроссплатформенное решение.
tomaka/cpal - мне не зашёл, пришлось отказаться в пользу portaudio.
Alexander Mescheryakov
@XX
Запостил на Хабр перевод анонса выпуска Rust 1.30
https://habr.com/post/428073/
Roman
@kpp
Кто с actix (без web) дружит? Тривиальный пример в 20 строк ломается: https://github.com/akurdyukov/test-actix-overfull
...
 INFO 2018-10-29T14:22:04Z: test_actix_overfull: Supervisor accepted validating command Command { user_id: 4, payload: 254 }
 INFO 2018-10-29T14:22:04Z: test_actix_overfull: Supervisor accepted validating command Command { user_id: 0, payload: 255 }
thread 'main' panicked at 'Use Self::Context::notify() instead of direct use of address', /Users/alik/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-0.7.5/src/mailbox.rs:103:17
stack backtrace:
....
rust-ru-irc-bot
@rust-ru-irc-bot
HAHAH тут ктто есть ? кто мне поможет ?
Danil Berestov
@goosedb
Ну ты спрашивай.
rust-ru-irc-bot
@rust-ru-irc-bot
HAHAH у меня раст не перевелся полностью на русский язык!что делать ?
Danil Berestov
@goosedb
В смысле?)
sobaka_v_kepke
@chabapok_twitter
используй английский
русский язык ненужен
rust-ru-irc-bot
@rust-ru-irc-bot
HAHAH я поставил русский язык в верху в левом экране и одна 5-ая часть только перевелась а остальное нет,я хочу играть на русском языке я то зря потратил 32 евро чтобы играть на английском ?!
Ilya Bogdanov
@vitvakatu
забавно
Danil Berestov
@goosedb
Хороший тролль
Ilya Bogdanov
@vitvakatu
И правда кстати 32 евро стоит, я аж удивился