Size: a a a

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

2021 June 13

D

Denis in Rust — русскоговорящее сообщество
and_then применим только к футурам, возвращающим Output = Result<..>
источник

D

Denis in Rust — русскоговорящее сообщество
а then применим к любым футурам, при этом никаких предположений об аутпуте футуры не делается
источник

DF

Dollar Føølish in Rust — русскоговорящее сообщество
это печально
источник

D

Denis in Rust — русскоговорящее сообщество
почему? О_о
источник

DF

Dollar Føølish in Rust — русскоговорящее сообщество
а как монаду теперь натягивать?
источник

D

Denis in Rust — русскоговорящее сообщество
какую монаду?
источник

DF

Dollar Føølish in Rust — русскоговорящее сообщество
которая с гатами появится
источник

D

Denis in Rust — русскоговорящее сообщество
я хз какая монада появится с гатами
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
ну так там выше then. все р авно резалты повылазили
источник

C

ChzChz in Rust — русскоговорящее сообщество
async move {
           Ok::<_, Infallible>(service_fn(move |req| {
               debug!("\nmaking request{:?}", req);
               handle_incoming(req, Arc::clone(&client))
           }))
       }
 

как понять этот турбофиш в Ok? это потому что async move {…} не имеет явного типа и вычисляется компилятором, но нужно указать тип ошибки как в Result<T, E>?
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
fn main_async() -> impl Future<Output = Result<(), Void>> {
   test().then(|_| {
       println!("two");
       ok(())
   })
}
источник

D

Denis in Rust — русскоговорящее сообщество
ну потому что ты ok(()) возвращаешь, зачем? возвращай просто async { }
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
я хочу вернуть "футура успешно выполнилась" не используя асинк/авейт. В комбинаторе then, не в map
источник

D

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

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
о, спасибо. Буду знать
источник

Э

Эрик in Rust — русскоговорящее сообщество
let a: Result<i32, AnyType> = Ok::<_, AnyType>(0);
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
чтобы указать тип ошибки. Хотя не оч понятно зачем тут вообще тогда Ok если можно service_fn напрямую вернуть
источник

Э

Эрик in Rust — русскоговорящее сообщество
Там тип ошибки нельзя получить из Ok, поэтому его явно указывают. В данном случае это Infallible, который очень похож на ! тип. Про never-type ! прочитать можно в доках к stdlib.
источник

Э

Эрик in Rust — русскоговорящее сообщество
Потому что генерики с резалтом.
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообщество
зачем резалт вообще тут если ошибка не юзается?
источник