.await
.map(|ok| if ok { ok } else { /* UnauthorizedError */ })
.map_err(|err| reject::custom(err))?;
Функция verify_token возвращает Result<bool, Error>
нужно проверить, если вернулся Ok(false), то трансформировать этот результат в Err(Unauthorized), и в конце цепочки получить его в map_err
match … { Ok(false) => Err(Unauthorized), v => v, } как-то так
в каком операторе цепочки можно вставить такое сопоставление? в map такой вариант не работает
match data::server::verify_token(&user_id, &token) .await { … }.map_err(…)
если у тебя найтли, можно использовать Result::flatten: is_auth = data::server::verify_token(&user_id, &token) .await .map(|ok| ok.then(|| ok).ok_or(Unauthorized)) .flatten() .map_err(|err| reject::custom(err))?;
да найтли, спасибо тебе за подсказку
можно ещё добавить Option::then_some: is_auth = data::server::verify_token(&user_id, &token) .await .map(|ok| ok.then_some(ok).ok_or(Unauthorized)) .flatten() .map_err(|err| reject::custom(err))?;
Обсуждают сегодня