`?`는 오류를`std :: io :: Error`로 변환 할 수 없습니다.

짐 레이 네리

reqwest 라이브러리를 사용하고 온라인 여러 곳에서 찾은 다음 패턴을 사용하여 게시물을 작성하려고합니다.

let res = http_client.post(&url)
                          .header("Content-Type", "application/x-www-form-urlencoded")
                          .form(&form_data)
                          .send()
                          .await?;
println!("authenticate response: {}", res.status)

위의 코드 블록은 컴파일 오류를 발생시킵니다.

`?` couldn't convert the error to `std::io::Error` the trait ` 
      `std::convert::From<reqwest::error::Error>` is not implemented for `std::io::Error`

이 오류가 발생하는 이유를 이해할 수 없습니다. 가능한 한 예제에 가깝게 코드를 만들었습니다. 나는 제거하면 그것은 컴파일 ?과를 res.status. 하지만 상태 res.status값을 가져와야 합니다. 더 중요한 것은 내가 무엇을 놓치고 있는지 또는 잘못하고 있는지 이해해야한다는 것입니다.

심슨

이 블록을 호출하는 함수의 반환 유형으로 인해 오류가 발생하며 컴파일러는 유형의 오류를 반환하려고합니다 std::io::Error.

오류 설명에서 main함수가 다음과 같은 결론을 내립니다 .

fn main() -> Result<(), std::io::Error> {
    // ...
}

문제는 reqwest가 io::Error. 이것은 내가 몇 달 전에 작성한 스 니펫입니다.

use exitfailure::ExitFailure;

fn main() -> Result<(), ExitFailure> {
    let res = http_client
        .post(&url)
        .header("Content-Type", "application/x-www-form-urlencoded")
        .form(&form_data)
        .send()
        .await?;

    println!("authenticate response: {}", res.status);
    Ok(())
}

반환 된 오류 유형을 사람이 읽을 수있는 반환 유형으로 변환하기 위해 exitfailure사용 했습니다 main. 나는 그것이 당신의 문제도 해결할 것이라고 생각합니다.

업데이트 : 주석에서 지적되었으며 exifailure는 더 이상 사용되지 않는 종속성을 가지고 있으며 외부 상자 없이도 달성 할 수 있습니다. 캡슐화 된 동적 오류를 반환하는 권장 방법이 있습니다.Box<dyn std::error::Error>

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let res = http_client
        .post(&url)
        .header("Content-Type", "application/x-www-form-urlencoded")
        .form(&form_data)
        .send()
        .await?;

    println!("authenticate response: {}", res.status);
    Ok(())

}

합의 된 오류를 반환하는 동작 main은 동일합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

오류 : 'Int'는 '@lvalue Float'로 변환 할 수 없습니다.

분류에서Dev

오류 : 'Int'는 '@lvalue Float'로 변환 할 수 없습니다.

분류에서Dev

오류 : Int는 NSRange로 변환 할 수 없습니다.

분류에서Dev

오류는 개체를 테이블로 변환 할 수 없습니다.

분류에서Dev

오류는 할당에서 'std :: string {aka std :: basic_string <char>}'을 'char'로 변환 할 수 없습니다.-C ++

분류에서Dev

"오류 : 경로를 인수로 전달하는 동안 'std :: __ cxx11 :: string * {aka std :: __ cxx11 :: basic_string <char> *}'를 'const char *'로 변환 할 수 없습니다.

분류에서Dev

오류 : (28, 58) 오류 : 호환되지 않는 유형 : 개체를 주소로 변환 할 수 없습니다.

분류에서Dev

오류는 반환을 uiviewcontroller 유형으로 변환 할 수 없습니다.

분류에서Dev

Rails는 문자열을 정수 오류로 변환 할 수 없습니다.

분류에서Dev

jsonarray를 jsonobject logcat 오류로 변환 할 수 없습니다.

분류에서Dev

오류 : 'float (*) (int)'를 'float'로 변환 할 수 없습니다.

분류에서Dev

오류 : char를 wchat_t *로 변환 할 수 없습니다.

분류에서Dev

std :: function 포인터 오류 : & A :: a를 std :: function <> && 유형으로 변환 할 수 없습니다.

분류에서Dev

오류 : 호환되지 않는 유형 : MainFragment를 활동으로 변환 할 수 없습니다

분류에서Dev

오류 : 호환되지 않는 유형 : 개체를 char로 변환 할 수 없습니다.

분류에서Dev

JAVAFX 오류 호환되지 않는 유형 : FXMLLoader를 노드로 변환 할 수 없습니다.

분류에서Dev

오류 : 호환되지 않는 유형 : 개체를 MyClass로 변환 할 수 없습니다.

분류에서Dev

오류 : 호환되지 않는 유형 : NewsLoader를 Loader <List <News >>로 변환 할 수 없습니다.

분류에서Dev

데이터를 가져 오는 동안 JSONArray를 JSONObject 오류로 변환 할 수 없습니다.

분류에서Dev

'Int'는 'CGFloat'SwiftUI 잘못된 오류로 변환 할 수 없습니다.

분류에서Dev

UIImageView를 서브 클래 싱 할 때 "Int는 CGFloat로 변환 할 수 없습니다."오류

분류에서Dev

오류는 다음과 같습니다. ValueError : float NaN을 정수로 변환 할 수 없습니다.

분류에서Dev

오류를 피하는 방법 : 문자열을 부동 소수점으로 변환 할 수 없습니다.

분류에서Dev

C ++ 오류 : 'std :: basic_string <char>'을 'const char *'로 변환 할 수 없습니다.

분류에서Dev

오류는 Mulesoft를 사용하여 배열을 객체로 강제 변환 할 수 없습니다.

분류에서Dev

호환되지 않는 유형 : FirebaseMessagingService를 Context로 변환 할 수 없습니다.

분류에서Dev

C # StreamWriter는 암시 적으로 형식을 문자열로 SYSTEMS.IO로 변환 할 수 없습니다.

분류에서Dev

오류 : 할당에서 'Cell <int> *'를 'List <int> *'로 변환 할 수 없습니다.

분류에서Dev

변수는 Swift에서 CGContext로 변환 할 수 없습니다.

Related 관련 기사

  1. 1

    오류 : 'Int'는 '@lvalue Float'로 변환 할 수 없습니다.

  2. 2

    오류 : 'Int'는 '@lvalue Float'로 변환 할 수 없습니다.

  3. 3

    오류 : Int는 NSRange로 변환 할 수 없습니다.

  4. 4

    오류는 개체를 테이블로 변환 할 수 없습니다.

  5. 5

    오류는 할당에서 'std :: string {aka std :: basic_string <char>}'을 'char'로 변환 할 수 없습니다.-C ++

  6. 6

    "오류 : 경로를 인수로 전달하는 동안 'std :: __ cxx11 :: string * {aka std :: __ cxx11 :: basic_string <char> *}'를 'const char *'로 변환 할 수 없습니다.

  7. 7

    오류 : (28, 58) 오류 : 호환되지 않는 유형 : 개체를 주소로 변환 할 수 없습니다.

  8. 8

    오류는 반환을 uiviewcontroller 유형으로 변환 할 수 없습니다.

  9. 9

    Rails는 문자열을 정수 오류로 변환 할 수 없습니다.

  10. 10

    jsonarray를 jsonobject logcat 오류로 변환 할 수 없습니다.

  11. 11

    오류 : 'float (*) (int)'를 'float'로 변환 할 수 없습니다.

  12. 12

    오류 : char를 wchat_t *로 변환 할 수 없습니다.

  13. 13

    std :: function 포인터 오류 : & A :: a를 std :: function <> && 유형으로 변환 할 수 없습니다.

  14. 14

    오류 : 호환되지 않는 유형 : MainFragment를 활동으로 변환 할 수 없습니다

  15. 15

    오류 : 호환되지 않는 유형 : 개체를 char로 변환 할 수 없습니다.

  16. 16

    JAVAFX 오류 호환되지 않는 유형 : FXMLLoader를 노드로 변환 할 수 없습니다.

  17. 17

    오류 : 호환되지 않는 유형 : 개체를 MyClass로 변환 할 수 없습니다.

  18. 18

    오류 : 호환되지 않는 유형 : NewsLoader를 Loader <List <News >>로 변환 할 수 없습니다.

  19. 19

    데이터를 가져 오는 동안 JSONArray를 JSONObject 오류로 변환 할 수 없습니다.

  20. 20

    'Int'는 'CGFloat'SwiftUI 잘못된 오류로 변환 할 수 없습니다.

  21. 21

    UIImageView를 서브 클래 싱 할 때 "Int는 CGFloat로 변환 할 수 없습니다."오류

  22. 22

    오류는 다음과 같습니다. ValueError : float NaN을 정수로 변환 할 수 없습니다.

  23. 23

    오류를 피하는 방법 : 문자열을 부동 소수점으로 변환 할 수 없습니다.

  24. 24

    C ++ 오류 : 'std :: basic_string <char>'을 'const char *'로 변환 할 수 없습니다.

  25. 25

    오류는 Mulesoft를 사용하여 배열을 객체로 강제 변환 할 수 없습니다.

  26. 26

    호환되지 않는 유형 : FirebaseMessagingService를 Context로 변환 할 수 없습니다.

  27. 27

    C # StreamWriter는 암시 적으로 형식을 문자열로 SYSTEMS.IO로 변환 할 수 없습니다.

  28. 28

    오류 : 할당에서 'Cell <int> *'를 'List <int> *'로 변환 할 수 없습니다.

  29. 29

    변수는 Swift에서 CGContext로 변환 할 수 없습니다.

뜨겁다태그

보관