Size: a a a

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

2020 March 13

MF

Max Frai in Rust — русскоговорящее сообществo
the trait std::future::Future is not implemented for [closure@src/main.rs:125:18: 127:6 preloader_consumer:_]
источник

r

red75prime in Rust — русскоговорящее сообществo
preloader_logic(consumer).await;
Ok(())
источник

A

Anton 📦 ᯌ in Rust — русскоговорящее сообществo
Max Frai
Подскажите, а как правильно делать sleep в асинхронном цикле, который внутри ожидает сообщений от mpsc-продьюсеров?
Tokio::sleep ?
источник

r

red75prime in Rust — русскоговорящее сообществo
main тоже асинхронный
источник

A

Anton 📦 ᯌ in Rust — русскоговорящее сообществo
Anton 📦 ᯌ
Tokio::sleep ?
Он просто будет ждать футуру
источник

MF

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

MF

Max Frai in Rust — русскоговорящее сообществo
Но оно меня еще заставило сделать async move и включить async closures
источник

MF

Max Frai in Rust — русскоговорящее сообществo
red75prime
main тоже асинхронный
а если у меня дальше логика должна идти после вызова этой функции, разве мне await не остановит все?
источник

K

Kitsu in Rust — русскоговорящее сообществo
Max Frai
Но оно меня еще заставило сделать async move и включить async closures
|| async move { <body> }
источник

r

red75prime in Rust — русскоговорящее сообществo
Max Frai
а если у меня дальше логика должна идти после вызова этой функции, разве мне await не остановит все?
Да, остановит.  Так что tokio::spawn(preloader_logic(consumer))
источник

MF

Max Frai in Rust — русскоговорящее сообществo
Вот так работает, спасибо
источник

r

red75prime in Rust — русскоговорящее сообществo
preloader_logic() возвращает футуру. Замыкание там не нужно
источник

MF

Max Frai in Rust — русскоговорящее сообществo
Возможно я чего-то не понимаю…
Вот есть у меня:
let (producer, mut consumer) = mpsc::unbounded_channel::<String>();
Я этот producer запихивают в state актикса и в асинхронном обработчике клонирую, чтобы создать нового продьюсера.
let mut producer = state.preloader_producer.clone();
producer.send(data); // <—
источник

MF

Max Frai in Rust — русскоговорящее сообществo
Почему-то в примере у них после send они делают await и все ок, а у меня этот метод синхронный тчо ли. Возвращает Result<(), ..>
источник

MF

Max Frai in Rust — русскоговорящее сообществo
И если так и оставить, то не логгируется в консьюмере, что пришел таск
источник

MF

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

r

red75prime in Rust — русскоговорящее сообществo
Какая версия tokio?
источник

MF

Max Frai in Rust — русскоговорящее сообществo
0.2
источник

MF

Max Frai in Rust — русскоговорящее сообществo
tokio = { version = "0.2", features = ["sync"] }
источник

r

red75prime in Rust — русскоговорящее сообществo
Для UnboundedSender send не асинхронный. Должно работать без await. Проблема в чём-то другом
источник