Size: a a a

2020 July 29

V

Vetro in Rust Async
Ну да, я уточнить просто хотел
источник

d

diabolo in Rust Async
Denis
и каналы — нифига не панацея, как некоторым кажется :))))))
я не сказал, что это панацея, я сказал что это наимение болезненный подход
источник

d

diabolo in Rust Async
при этом канал каналу рознь — нормальный подход — это oneschot
источник

YM

Yaroslav M in Rust Async
Vetro
С каналами заметил проблему, что если начинаешь хотя бы чуть чуть ими пользоваться - спустя какое-то время замечаешь что уже весь код ими обмазан
ето же самый жир в асинхронном программировании, каналы))
источник

YM

Yaroslav M in Rust Async
Anton
Товарищи чет я туплю, если в ниже приведенном коде раскомментировать box trait, оно перестоет компилится

use std::{
   sync::Arc,
   convert::Infallible,
};

use tokio::sync::Mutex;
use warp::Filter;

type Ctl = Arc<Mutex<Control>>;

struct Control {
   foo: bool,
   // bar: Option<Box<dyn Bar>>,
}

trait Bar {}


#[tokio::main]
async fn main() {

   let ctl =  Arc::new(Mutex::new(Control {
       foo: true,
       // bar: None,
   }));

   let ctl = warp::any().map(move || ctl.clone());

   let routes = warp::any()
       .and(ctl)
       .and_then(dump_ctl);

   warp::serve(routes).run(([127, 0, 0, 1], 3030)).await;

}

async fn dump_ctl(ctl: Ctl) -> Result<impl warp::Reply, Infallible> {
   Ok(format!("ctl.foo = {}", ctl.lock().await.foo))
}
разобрался?
я недавно такую же проблему решал, решил
покажи кусочек ошибки
источник

A

Anton in Rust Async
Yaroslav M
разобрался?
я недавно такую же проблему решал, решил
покажи кусочек ошибки
Разобрался - просто месяц на плюсах посидел и все забыл, оно хочет Send, для трейтов докинул определение, для поинтеров сделал обертку

pub struct SendPtr<T> {
  pub ptr: *mut T
}

unsafe impl<T> Send for SendPtr<T> {}
источник

YM

Yaroslav M in Rust Async
збс
источник
2020 July 30

BM

Bionic Muskrat in Rust Async
По каким причинам tokio::time::Interval может не тикать? Вобще, даже первый tick не "completes immediately". interval.tick().await просто намертво блочит поток. Период установлен в 2 миллисекунды.
источник

BM

Bionic Muskrat in Rust Async
Вот. Я хочу получать некоторую информацию с некоторым интервалом, отправлять ее на хранение и получать ее когда мне захочется. Реализовал первым пришедшим в голову способом. Работает все кроме тиканья интервала.

https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=b07240fc40640fa13a97ad8f23cc2f4e
источник

ph

pl 🦑 hk in Rust Async
источник

YM

Yaroslav M in Rust Async
Bionic Muskrat
Вот. Я хочу получать некоторую информацию с некоторым интервалом, отправлять ее на хранение и получать ее когда мне захочется. Реализовал первым пришедшим в голову способом. Работает все кроме тиканья интервала.

https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=b07240fc40640fa13a97ad8f23cc2f4e
похоже что луп тикнул (отправил),
ещё тикнул (получил),
тикнул тут monitor.get().await
и вышел)
источник

ph

pl 🦑 hk in Rust Async
источник

BM

Bionic Muskrat in Rust Async
Yaroslav M
похоже что луп тикнул (отправил),
ещё тикнул (получил),
тикнул тут monitor.get().await
и вышел)
Программа живет бесконечно. Если я напишу println!("Hello") в loop, который во втором thread::spawn, "Hello" будет бесконечно выводиться.
источник

BM

Bionic Muskrat in Rust Async
Это не то, что мне надо. Я хочу, чтобы оно просто с некоторым интервалом парсило данные и складировало их, а пользователь мог бы запросить их когда ему хочется.
источник

BM

Bionic Muskrat in Rust Async
А переписав на select все решилось само собой
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=e9ccf7a980e29ab46cd1990c09ff556f (playground дает неправильный вывод, но в реальности все как надо выводится)
источник

BM

Bionic Muskrat in Rust Async
источник
2020 August 01

В

Вафель in Rust Async
Я что-то не понимаю, почему try_fold определён в TryStreamExt?

Почему нельзя как с итераторами try_fold'ить обычный стрим?
источник

В

Вафель in Rust Async
источник

В

Вафель in Rust Async
Я конечно могу сделать while let + .next, но это как-то совсем некрасиво
источник

D

Denis in Rust Async
Возможно именно поэтому карлуха и не любит futures-util)
источник