Невозможно создать Hyper::Client, поскольку компилятор не может вывести достаточно информации о типе.

Чтобы поэкспериментировать с Hyper, я начал с примера GET. Помимо того факта, что пример не компилируется (no method `get` in `client`), я свел свою проблему к одной строке:

fn temp() {
    let client = Client::new();
}

Этот код не будет компилироваться:

 unable to infer enough type information about `_`; type annotations or generic parameter binding required [E0282]

person Roman Smelyansky    schedule 07.09.2016    source источник
comment
Я попробовал это для себя и не смог воспроизвести ошибку. В вашем файле есть extern crate hyper; и use hyper::Client;? Вот моя рабочая версия: play.integer32.com/?gist=4debd4812508baf255f21715fbf44ef0   -  person Joe Clay    schedule 07.09.2016
comment
Вставил ваш код в мой main.rs. Та же ошибка   -  person Roman Smelyansky    schedule 07.09.2016
comment
В порядке. Когда я использую гипер из репозитория rust-lang, это компилируется, когда я использую гипер из гиперрепозитория hyper={git = github. com/hyperium/hyper} Это не скомпилируется. Может быть, это объясняет, почему...   -  person Roman Smelyansky    schedule 07.09.2016


Ответы (1)


В общем случае эта ошибка означает, что Client имеет какой-то общий параметр, и компилятор не может определить его значение. Надо бы как-нибудь рассказать.

Вот пример с std::vec::Vec:

use std::vec::Vec;

fn problem() {
    let v = Vec::new(); // Problem, which Vec<???> do you want?
}

fn solution_1() {
    let mut v = Vec::<i32>::new(); // Tell the compiler directly
}

fn solution_2() {
    let mut v: Vec<i32> = Vec::new(); // Tell the compiler by specifying the type
}

fn solution_3() {
    let mut v = Vec::new();
    v.push(1); // Tell the compiler by using it
}

Но hyper::client::Client не имеет общих параметров. Вы уверены, что Client, который вы пытаетесь создать, принадлежит Hyper?

person michalsrb    schedule 07.09.2016
comment
Да, я использую Hyper::Client. У меня есть версия моего кода, которая использует Client, и все в порядке, компилируется и запускается. Но когда я хотел провести рефакторинг, возникла эта ошибка. - person Roman Smelyansky; 07.09.2016
comment
Итак, есть общий параметр: github.com/hyperium/ hyper/blob/master/src/client/mod.rs Но я, наверное, как и вы, посмотрел в другой документации: hyper.rs/hyper/v0.9.4/hyper/client/index.html, где нет общего параметра - person Roman Smelyansky; 07.09.2016