ты i муваеш во фьючу, которая должна быть 'static
ну вот а какой мне туда лайфтайм написать
аааа, понял да, это можно решить на стейбле, ща
Кложура у тебя почему-то сама по себе не компилится :/ Кто-нибудь понимает что не так с |i: &i32| async move { i; true } ? А так, вот решение: [play]
ну потому что у тебя "i" померло и всё, а футура осталась жить. Так нельзя
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=aec5a71b409ac3a17e903ef06d4f63fa можно вот так
async fn t(i: &i32) -> bool { i == &0 } а тут?
и тут. Тут нет NLL который пытается максимально сократить лайфтаймы, если у тебя лайфтайм попадает в асинк все, труба
А почему async fn t(x: &i32) -> bool { x; true } норм? Почему в случае async fn тип вывелся &'a T -> impl Future + 'a, а в случае кложуры — &'a T -> impl Future + 'b?
этот код компилится :)
потому что ты не асинк кложу сделал, а кложу а асинк блоком
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=b2041845aacc5397c1ed0cc7b2ba5259
оно тоже не работает
Я уже пробовал. Ты хоть запускай код перед тем как его кидать: error[E0708]: `async` non-`move` closures with parameters are not currently supported --> src/main.rs:3:6 | 3 | async |i: &i32| { i; true }; | ^^^^^^^^^^^^^^^ | = help: consider using `let` statements to manually capture variables by reference before entering an `async move` closure
Какая разница? Как я это себе представляю: |i: &i32| — for<'a> Fn(&'a i32) -> ???; async move { i; true } — мувает i: &'a T => impl Future + 'a
так оно не работает потому что not currently supported. Читайте хоть ошибки. Просто не имплементировали доконца, оно же найтли
ну вот есть разница 🤷♂️
Ты не можешь утверждать что оно будет работать если оно никак не реализовано ¯\_(ツ)_/¯
ну ладно если что, там в гвардах же будут проверяться в основном числа, а их можно копировать строки придется клонировать... но тут уже некуда деваться
Я бы просто забил на то что инлайн нельзя написать 🤔.........
аоаоаоаооаоа и трейт и тип в моем крейте, че он хочет?
там в _ и _ могут быть типы локальные для другого крейта видимо
что-то такое будет работать: https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=95a0792ed187b97330e30e9ded654619
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=953c277417f76b284004b9e67adc3ce9 не будет оно работать
ты говорил вроде можно копировать
Обсуждают сегодня