Size: a a a

2021 April 22

KR

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

KR

Kai Ren in Rust Async
У тебя не должно быть накладных расходов на ворк-стиллинг, ибо не будет кому стилить. Зато будет внятная из-коробочная машинерия очереди тасок в фоне.
источник

KR

Kai Ren in Rust Async
Можно городить самому через отдельный тред + current_thread, но зачем, если можно не городить?
источник

G

George in Rust Async
О_о

Звучит как магия "токио всё сделает за тебя", но я попробую
источник

G

George in Rust Async
Вообще да, я хотел сначала чуть ли не в no_std собираться, но с libc, но потом столкнулся с длительностью запросов в интернет. Теперь и  в ureq смысла нет, раз энивей токио тащу.
источник

KR

Kai Ren in Rust Async
Ну, ты можешь создать mpsc::unbounded и в него пихать свои таски, запустить тред и в нём в цикле отрабатывать их из оереди, и всё без асинка и не блокируя libmysql.

Но зачем, если асинк шустрее будет отрабатывать таски конкурентно?
источник

KR

Kai Ren in Rust Async
И писанины меньше.
источник

DR

Dmitry Rodionov in Rust Async
Мб по определению задачи так не прокатит, но как вариант, триггер пишет в другую таблицу «очередь» задачи на отправку, и отдельный демон их разгребает. С сайд эффектами в транзакциях могут быть проблемы если это важно, например триггер стрельнул -> запрос улетел, а транзакция откатилось и вызова udf на самом деле “не было”
источник

G

George in Rust Async
Триггер AFTER.
База не наша, писать права не имеем. Но UDF поставить можем.
источник

G

George in Rust Async
К тому же мы энивей после запроса идём "посмотреть" за дополнительными данными (ибо UDF и присылает, куда смотреть), т.к. в сам триггер попадает не всё нужное. Так что отсутствие сущности мы заметим. А вот то, что по каким-то внутренним причинам во время создания одной из сущностей вызывается два UPDATE и после них один INSERT - загадка, на которой рабочий день и окончился.
источник

G

George in Rust Async
Работает. Даже drop-ать не надо.
источник

DR

Dmitry Rodionov in Rust Async
Понял, тогда действительно мимо :)
источник

G

George in Rust Async
Но! Я всё ещё не знаю, как рантайм будет "жить" в динамической библиотеке, и будет ли жить вообще.
Надо в конструктор Lazy какой-нибудь маркер типа создания файла с датой-временем положить.
источник

KR

Kai Ren in Rust Async
Да какая разница где он живёт? Тред заспавнился и погнал, пока процесс жив.
источник

KR

Kai Ren in Rust Async
Lazy сработает при первом обращении к нему.
источник

G

George in Rust Async
Вот таких шалостей от mysql и боюсь, хотя ей логичнее через dlopen в память загрузить и потом вызывать. Тогда по идее оно должно жить постоянно.
источник

KR

Kai Ren in Rust Async
Just check it =/
источник

G

George in Rust Async
Я пока ещё в оффтопной для этого чата фазе - "да как блт этими вашими указателями *mut *mut i8 пользоваться вообще". Как допишу - опробую. Там ещё баг с подсветкой, так что и ишью отписывать мб буду.
источник
2021 April 24

YJ

Yo Jla in Rust Async
Привет
подскажите, как правильно законсьюмить такой стрим данных от BLE устройства,
примеров нет, сообразить сам не могу.

async fn notifications(&self) -> Result<Pin<Box<dyn Stream<Item = ValueNotification>>>> {....


let notify_result = peripheral.notifications().await?;
notify_result.into_stream().iter(0..).map(|data| my_on_notification_handler(data));

__notify_result.into_stream().iter(0..).map(|data| my_on_notification_handler(data));
                         ^^^^^^^^^^^ method (into_stream()) not found in Pin<Box<dyn futures::Stream<Item = ValueNotification>>>__
источник

MB

Mikail Bagishov in Rust Async
Вызов into_stream() на стриме выглядит избыточным
источник