2016-09-07 6 views
2

Hyper에서 실험하려면 the GET example으로 시작했습니다. 예는 (no method `get` in `client`)를 컴파일되지 않는다는 사실을 제외하고 내가 한 줄에 내 문제를 증류 한 :컴파일러가 충분한 유형 정보를 추론 할 수 없기 때문에 hyper :: client를 만들 수 없습니다.

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

이 코드는 컴파일되지 않습니다 :

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

나 자신을 위해이 오류를 재현하지 못했습니다. 파일에'extern crate hyper; '및'hyper :: Client; 사용 하시겠습니까? 여기 내 작업 버전 : http://play.integer32.com/?gist=4debd4812508baf255f21715fbf44ef0 –

+0

내 main.rs.에 코드를 붙여 넣습니다. 같은 오류 –

+0

확인. rust-lang repo에서 하이퍼를 사용할 때 하이퍼 리포지토리에서 하이퍼를 사용할 때 컴파일됩니다. hyper = {git = "https://github.com/hyperium/hyper"} 이것은 컴파일되지 않습니다. 그 이유는 아마도 ... –

답변

4

일반적으로이 오류가 의미 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의 인스턴스인가?

+0

네, 하이퍼 :: 클라이언트를 사용합니다. Client를 사용하는 코드를 가지고 있고, 모두 잘 컴파일되고 실행됩니다. 그러나 리팩토링을 원할 때이 오류가 발생했습니다. –

+0

그래서 일반 매개 변수가 있습니다. https://github.com/hyperium/hyper/blob/master/src/client/mod.rs 하지만 아마도 다른 문서를 보았을 것입니다. http : //hyper.rs/hyper/v0.9.4/hyper/client/index.html 일반 매개 변수가없는 경우 –