Size: a a a

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

2020 April 18

D

Dima in Rust — русскоговорящее сообществo
ну да, особенно когда у меня все *ptr
источник

D

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

ID

Ivan Dubrov in Rust — русскоговорящее сообществo
Ну это-то да, в этом-то и вопрос был. Объяснение не в сигнатуре trace, а где-то в деталях: FFI там, C-код, unsafe.
Вопрос вот в чем: каким образом в сборку стека вовлечены друге потоки? а если не вовлечены, то зачем блокировка (поток-то один!)?
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Привет! Можно посоветоваться по организации архитектуры библиотеки с фьючерсами?

Задача такая. Есть некий объект Factory, который создает некие экзампляры Instance, связанные с Factory. Инстансы создаются асинхронно. При этом инстансы связаны с Factory(используют некоторый стафф из них по ссылкам), и обычно имеют ограниченное время жизни. Также инстансы имеют асинхронные методы, для выполнения некой важной работы.

Мне нужно организовать архитектуру так, чтобы пользователь мог создавать свои собственные имплементации и Factory, и Instance. Кроме того, у обеих сущностей есть некое дефолтное поведение.

У меня что-то такое получилось, организовав Factory и Instance в виде трейтов с лайфтайм-ссылками, ассоциированными типами, и навесив на все это async_trait(а местами выведя дефолтные методы отдельно от трейтов, так как async_trait не справился с резолвом лайвтайм-границ как надо). Но это все получилось очень-очень громоздко. Как это можно сделать менее громоздко?
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Вообще, более общий вопрос такой: Какие есть бест-практики для организации интерфейснов с асинхронными функциями?
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Ivan Dubrov
Ну это-то да, в этом-то и вопрос был. Объяснение не в сигнатуре trace, а где-то в деталях: FFI там, C-код, unsafe.
Вопрос вот в чем: каким образом в сборку стека вовлечены друге потоки? а если не вовлечены, то зачем блокировка (поток-то один!)?
В мане linubwind написано, что она потокобезопасная.
Но может в винде все не так хорошо?
источник

ID

Ivan Dubrov in Rust — русскоговорящее сообществo
В Windows точно все плохо.
источник

ID

Ivan Dubrov in Rust — русскоговорящее сообществo
>All DbgHelp functions, such as this one, are single threaded. Therefore, calls from more than one thread to this function will likely result in unexpected behavior or memory corruption. To avoid this, you must synchronize all concurrent calls from more than one thread to this function.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Значит локи ради винды сделали
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Ilya Lakhin
Вообще, более общий вопрос такой: Какие есть бест-практики для организации интерфейснов с асинхронными функциями?
Либо async_trait, либо пусть функция возвращает BoxFuture
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
Mikail Bagishov
Значит локи ради винды сделали
тогда бы за cgf(platform) вынесли его наверно
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
polunin.ai
Либо async_trait, либо пусть функция возвращает BoxFuture
В общем, я решил просто отказаться от трейтов. Будет дефолтная имплементация, и всё ) И пусть пользователь сам мучается. А когда в расте починят трейты, я может быть подумаю
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
Ilya Lakhin
В общем, я решил просто отказаться от трейтов. Будет дефолтная имплементация, и всё ) И пусть пользователь сам мучается. А когда в расте починят трейты, я может быть подумаю
ты бы хоть код какой показал, а то абстрактные описания не оч мотивируют помогать)
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Алексей Герасимов
ты бы хоть код какой показал, а то абстрактные описания не оч мотивируют помогать)
Я потом покажу. Сорри, вопрос сильно общий вышел )
источник

A

Alik in Rust — русскоговорящее сообществo
Какая error handling либа сейчас актуальна?
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
failure?
источник

ID

Ivan Dubrov in Rust — русскоговорящее сообществo
anyhow + thiserror imo
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
Alik
Какая error handling либа сейчас актуальна?
thiserror, snafu
источник

ID

Ivan Dubrov in Rust — русскоговорящее сообществo
Забудьте про failure, оно мертво.
источник

G

Gymmasssorla in Rust — русскоговорящее сообществo
Ivan Dubrov
Забудьте про failure, оно мертво.
+
источник