Size: a a a

2020 June 21

n

not a cake in Rust Async
Эх, надеялся без мютекса, поскольку Recipient умеет Clone и я его только создам и буду иногда читать. А тут на тебе, ругается на static Foo: OnceCell<Recipient<FooMessage>> = OnceCell::new(); поскольку Recipient не умеет Sync
источник

A

Adv0cat in Rust Async
not a cake
Хочу на основе примера из https://actix.rs/docs/websockets/ сделать так, чтобы можно было в main создать какого-нибудь актора и прокинуть Recipient<_> на него внутрь функции index из примера, чтобы потом MyWs мог общаться с этим созданным вначале актором. Как такое можно реализовать?
Простите, а в чем проблема-то? У вас же при создании в мейне актора вы делаете .start() что дает вам Addr<YourActor>, и потом этот адрес можно в .data(addr.clone()) покласть, и он будет доступен во всех слушателях как Data<Addr<YourActor>>
источник

n

not a cake in Rust Async
На самом деле, впервые слышу. Сейчас почитаю доки по этому поводу. Спасибо однако
источник

A

Adv0cat in Rust Async
not a cake
На самом деле, впервые слышу. Сейчас почитаю доки по этому поводу. Спасибо однако
Ну у actix-web есть example и там есть экземпл с чатом, и там как раз есть такой случай))
источник

A

Adv0cat in Rust Async
not a cake
На самом деле, впервые слышу. Сейчас почитаю доки по этому поводу. Спасибо однако
источник

A

Adv0cat in Rust Async
А вот эти мутексы ванцелы тут нафик не нужны)
источник

Ct

Casual tears in Rust Async
Как в функцию ожидающую impl futures::sink::Sink<T> впихнуть tokio::sync::mpsc::Sender<T> ?
источник

Ct

Casual tears in Rust Async
> I believe Sink was removed with v0.2 as the trait does not have a clear path into the standard library.

source: https://github.com/tokio-rs/tokio/issues/2389
источник

Ct

Casual tears in Rust Async
источник

MB

Mikail Bagishov in Rust Async
Casual tears
Как в функцию ожидающую impl futures::sink::Sink<T> впихнуть tokio::sync::mpsc::Sender<T> ?
Кажется можно накостылить что-то типа
futures::sink::drain().with(|msg| async {sender.send(msg).await})
источник

Ct

Casual tears in Rust Async
Mikail Bagishov
Кажется можно накостылить что-то типа
futures::sink::drain().with(|msg| async {sender.send(msg).await})
Я уже каналы из futures взял
источник

d

diabolo in Rust Async
not a cake
Да, с lazy_static заработало, сам не сразу додумался
once_cell
источник

n

not a cake in Rust Async
diabolo
once_cell
Уже знакомлюсь с actix_web::web::Data вместо использования глобальной переменной. Между прочем, почему все так once_cell рекомендуют? Это стильно, модно, молодёжно и должно в будущем заменить lazy_static?
источник

d

diabolo in Rust Async
not a cake
Уже знакомлюсь с actix_web::web::Data вместо использования глобальной переменной. Между прочем, почему все так once_cell рекомендуют? Это стильно, модно, молодёжно и должно в будущем заменить lazy_static?
нет, просто это логичнее и больше вариантов для маневров в безопасном виде, просто прочти документацию, а лучше код глянь
источник

A

Adv0cat in Rust Async
diabolo
once_cell
Ну от нафига эта штука человеку в axctix-web, если там есть нативные способы это вот все делать?)
источник
2020 June 22

KR

Kai Ren in Rust Async
Adv0cat
Ну от нафига эта штука человеку в axctix-web, если там есть нативные способы это вот все делать?)
Какие? о.О
источник

MZ

Max Zhuravkov in Rust Async
Не подскажете как в tokio комбинировать свои реализации Encoder/Decoder с LengthDelimitedCodec?
источник

MZ

Max Zhuravkov in Rust Async
1) Нужно создавать свою структуру с LengthDelimitedCodec и делать что типа
источник

MZ

Max Zhuravkov in Rust Async
struct MyCodec {
   frame_codec: LengthDelimitedCodec,
}

// MyCodec Encoder.encode
fn encode(&mut self, item: Self::Item, dst: &mut BytesMut)  {
   // Сначала преобразуем Item в bytes.
   // Передаем его в LengthDelimitedCodec,
   // чтобы получить длину пакета + пакет
   self.frame_codec.encode(bytes, dst)
}

// MyCodec Decoder.decode
fn decode(&mut self, src: &mut BytesMut)  {
   // Сначала результат работы LengthDelimitedCodec
   let result = self.frame_codec.decode(src);
   // Если все хорошо, то в result содержится наш пакет
   // и мы разбираем байты в Item
}
источник

MZ

Max Zhuravkov in Rust Async
Это вроде бы работает
источник