2016-09-07 4 views
2

ハイパーで実験するには、the GET exampleで開始しました。コンパイラが十分な型情報を推論できないため、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;'と 'use hyper :: Client;'がありますか?ここに私の作業バージョンがあります:http://play.integer32.com/?gist=4debd4812508baf255f21715fbf44ef0 –

+0

私のmain.rs.にあなたのコードを貼り付けました。同じエラー –

+0

私がhyper-repoからhyperを使用すると、これをコンパイルします。 hyper = {git = "https://github.com/hyperium/hyper"} これはコンパイルされません。それはおそらく理由を説明します... –

答えて

4

をこのエラーが意味するであろう例は、私は、単一の行に私の問題を蒸留している(no method `get` in `client`)をコンパイルしないことを除けば事実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

はい、私はハイパー::クライアントを使用します。私は、クライアントを使用するコードのバージョンを持っており、すべてがうまくコンパイルされ、実行されています。しかし、私がリファクタリングしたいとき、このエラーが発生しました。 –

+0

だから、一般的なパラメータがあります:あなたが行ったように、おそらく、 https://github.com/hyperium/hyper/blob/master/src/client/mod.rs しかし、私、別のドキュメントで見て: HTTP ://hyper.rs/hyper/v0.9.4/hyper/client/index.html 一般的なパラメータはありません –

関連する問題