и мне доступные всякие таиты и другие фичи?
Хотелось бы не боксить и не городить огромные Box::pin(async move { … }) (в том числе вложенные)
И что делать со сторонними библиотеками, которые не могут себе позволить возвращать/принимать type = impl Future, а только боксят, страдать?
Например, если я хочу избавиться от type Future = Pin<Box<dyn Future<Output = Result<Self::Response, Self::Error>>>>; в актиксе (у меня не получилось вывести нужный актиксу тип)
либо писать футуру руками, либо никак особо
можно ещё сделать smallbox заданного размера, создав его через макрос
но он не pinned сам по себе, потому что таскает данные рядом с собой
Псилон показывал вот так type ServiceResult<S: Service<ServiceRequest>, B> = impl Future<Output = Result<ServiceResponse<EitherBody<B>>, Error>>; И у него срабатывало вовсе без боксов, пинов и футур https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=3f0b41f7aef54ccfa0ee4a7de2e0b4ca
Обсуждают сегодня