Size: a a a

Rust — русскоговорящее сообществo

2020 September 18

f

folex in Rust — русскоговорящее сообществo
red75prime
Консервативная оценка времени жизни async блока, похоже.
странно что она выстреливает уже после обработки сигнатуры fn fut
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
вафель 🧇
Асинк блок тут вообще не при чём, тут только impl Trait
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
В корневой функции T: 'static
источник

AE

Alexey Ermakov in Rust — русскоговорящее сообществo
там жеж компилятор подсказывает даже
8  | fn test<T>(t: T) -> Pin<Box<dyn Future<Output = ()> + 'static>> {
   |         - help: consider adding an explicit lifetime bound...: `T: 'static`
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Нет. T вообще никак не участвует в результате
источник

r

red75prime in Rust — русскоговорящее сообществo
folex
странно что она выстреливает уже после обработки сигнатуры fn fut
Ага. Учитывая, что и вот такое компилируется, что-то там не так.
fn fut<'a, T:'a >(_: T) -> impl Future<Output = ()> + 'static + 'a {
   async {
   }
}
источник

f

folex in Rust — русскоговорящее сообществo
видимо бага в оценке времени жизни любого трейта
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
вафель 🧇
Нет. T вообще никак не участвует в результате
А, ну да. Рил баг
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Alexey Ermakov
там жеж компилятор подсказывает даже
8  | fn test<T>(t: T) -> Pin<Box<dyn Future<Output = ()> + 'static>> {
   |         - help: consider adding an explicit lifetime bound...: `T: 'static`
Чел...

Вот функция:
fn fut<T>(_: T) -> impl Future<Output = ()> + 'static;

Она (насколько я вижу) возвращает всегда :'static значение. T тут не должен влиять.
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
уже второй баг компилятора за день, уххх
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
red75prime
Ага. Учитывая, что и вот такое компилируется, что-то там не так.
fn fut<'a, T:'a >(_: T) -> impl Future<Output = ()> + 'static + 'a {
   async {
   }
}
Не, это таки нормально.

Просто результат должен жить и не меньше 'a и не меньше 'static. То-же самое как и + 'a + 'b
источник

f

folex in Rust — русскоговорящее сообществo
fn fut<T>(_: T) -> BoxFuture<'static, ()> {
   Box::pin(std::future::ready(()))
}


забавно что вот так работает
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=3235a6acb71d69c0d974595a1a633533
источник

f

folex in Rust — русскоговорящее сообществo
fn fut<T>(_: T) -> BoxFuture<'static, ()> {
   Box::pin(async {})
}


и так соотв тоже
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Ну бага в impl Trait видимо ¯\_(ツ)_/¯
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
вафель 🧇
Ну бага в impl Trait видимо ¯\_(ツ)_/¯
Ты на найтли хоть?
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
А блин на плейграунде же стейбл
Мда
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Andrey Vlasov
Ты на найтли хоть?
Нет.

Это как раз костыль чтобы можно было переключатся между найти и стейбл
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Новый день - новое ишью
источник

f

folex in Rust — русскоговорящее сообществo
🤔или Box всегда 'static тут?

хотя внутри тоже чекается https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=be5dce36aacf757a6032c732b25f18e7
источник