трейтов?
Что лучше возвращать dyn Future или Box<dyn Future>?
а как ты первое вернёшь?
Пока не пытался, сейчас пока что трейт только описываю. Не разу пока не писал асинхронные трейты. Возможно знания немного отстают хахах Пока что делаю попытки, чтобы познать всё это
Сейчас глянул в объяснения async-trait крейта, там ещё Box::pin делают
Я так когда ещё не сильно просветлён был, сделал себе проц-макро чтобы можно было вот так писать: #[fn_box_pin_async] async fn handler(options: PatternRouteOptions<IdWithNameGroup>) -> HttpHandlerResult { ... } Который превращает функцию в: fn handler(options: PatternRouteOptions<IdWithNameGroup>) -> ::std::pin::Pin<::std::boxed::Box<dyn ::std::future::Future<Output=HttpHandlerResult> + ::std::marker::Send + 'static>> { ::std::boxed::Box::pin(async move { ... }) } А всё чтобы эти функции (с разными типами) в хешмапу складывать. Сейчас, возможно, придумал бы как без бокса обойтись, но пока не дохожу до того куска где они используются)
лучше включить найтли и начать писать на расте
Есть же вроде крэйт async trait. Я использую.
https://crates.io/crates/async-trait Вешаешь короче над трейтом, делаешь там свой асинк, через ~пару месяцев убираешь (скорее всего стабилизируют)
Обсуждают сегодня