Size: a a a

2020 April 01

AZ

Alex Zhukovsky in rust_offtopic
Переслано от Alex Zhukovsky
error[E0733]: recursion in an `async fn` requires boxing
 --> src\main.rs:24:43
  |
24 | async fn get_comments(node: Tree<i32>) -> Tree<Comment> {
  |                                           ^^^^^^^^^^^^^ recursive `async fn`
  |
  = note: a recursive `async fn` must be rewritten to return a boxed `dyn Future`.
источник

DS

Doge Shibu in rust_offtopic
Alex Zhukovsky
Переслано от Alex Zhukovsky
error[E0733]: recursion in an `async fn` requires boxing
 --> src\main.rs:24:43
  |
24 | async fn get_comments(node: Tree<i32>) -> Tree<Comment> {
  |                                           ^^^^^^^^^^^^^ recursive `async fn`
  |
  = note: a recursive `async fn` must be rewritten to return a boxed `dyn Future`.
Чёт течёт абстракция.
источник

DS

Doge Shibu in rust_offtopic
(О чём и речь собственно)
источник

В

Вафель in rust_offtopic
Doge Shibu
Пишу без асинка, на футурах, всё асинхронно и красиво, проблем не вижу
А почему решил без асинка писать? Вроде все жаловались что комбинаторы очень плохо с борровингом дружат и постоянно Arc и ко приходиться юзать "чтобы компилятор успокоился"
источник

DS

Doge Shibu in rust_offtopic
Вафель
А почему решил без асинка писать? Вроде все жаловались что комбинаторы очень плохо с борровингом дружат и постоянно Arc и ко приходиться юзать "чтобы компилятор успокоился"
Потому что начал писать проект, когда асинк ещё был не очень стабильным.
источник

DS

Doge Shibu in rust_offtopic
Ну а проблемы с борровингом у меня и так решаются актиксовыми акторами
источник

DS

Doge Shibu in rust_offtopic
Которые более-менее подходят в моей задаче
источник

DS

Doge Shibu in rust_offtopic
По ряду сопутствующих причин, т.е. через них у меня идёт работа с тредпулом для вычислительных задач и т.п.
источник

В

Вафель in rust_offtopic
ясно
источник

DS

Doge Shibu in rust_offtopic
Вафель
ясно
Т.е. будь какая-нибудь норм либа с ФП-конкарренси для раста (IO, Ref, MVar, STM) взял бы её вместо акторов не думая, но такой вроде бы нет
источник

p

polunin.ai in rust_offtopic
Хз, у меня в одной функции 10-15 эвейтов, и писать бойлерплейт в виде .and_then везде не хочу
источник

G

Gymmasssorla in rust_offtopic
polunin.ai
Хз, у меня в одной функции 10-15 эвейтов, и писать бойлерплейт в виде .and_then везде не хочу
do-нотация должна спасти, но в Rust её нет, как и монад
источник

G

Gymmasssorla in rust_offtopic
Кстати, а в Haskell монада IO - это как Future в Rust? В том смысле, что асинхронная ли она или нет?
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
Хз, у меня в одной функции 10-15 эвейтов, и писать бойлерплейт в виде .and_then везде не хочу
можно было бы сделать "нечестные" адхок ду как в скале
источник

p

polunin.ai in rust_offtopic
Gymmasssorla
do-нотация должна спасти, но в Rust её нет, как и монад
То же что и эвейт, но хуже
источник

AZ

Alex Zhukovsky in rust_offtopic
все равно было бы удобнее
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
То же что и эвейт, но хуже
чем хуже?
источник

p

polunin.ai in rust_offtopic
Alex Zhukovsky
чем хуже?
Тем что читается справа на лево и не сделать:
foo().await.bar().await
источник

AZ

Alex Zhukovsky in rust_offtopic
больше одного авейта на строке это хрень
источник

G

Gymmasssorla in rust_offtopic
polunin.ai
Тем что читается справа на лево и не сделать:
foo().await.bar().await
do
  foo <- foo()
  bar <- bar()


В чтении проблем не испытывал
источник