2

Hyperライブラリを使用し、ヘッダーにユーザーエージェント文字列を使用して、RustでGithubのAPIにGETリクエストを実行しようとしています。でコンパイルする運がありませんでした.header(UserAgent("string"))。私が望むことを達成するための慣用的な方法を提案してくれる人はいますか?

extern crate hyper;

use std::io::Read;

use hyper::Client;
use hyper::header::{Connection, Headers};

struct Subtasks {
    github: &'static str,
}

struct Tasks {
    rust: Subtasks,
    go:   Subtasks,
}

fn main() {
    // initialize struct and populate
    let tasks = Tasks {
        rust: Subtasks {
            github: "https://api.github.com/rust-lang/rust",
        },
        go: Subtasks {
            github: "https://api.github.com/golang/go",
        },
    };

    let client = Client::new();
    let mut result = client.get(tasks.rust.github)
        .header(Connection::close())
        .send()
        .unwrap();

    let mut body = String::new();
    result.read_to_string(&mut body).unwrap();

    println!("Response: {}", body);
}
4

2 に答える 2

4

たぶん、あなたはこの種のエラーを受けていましたか?

src/main.rs:31:20: 31:28 error: mismatched types:
 expected `collections::string::String`,
    found `&'static str`
(expected struct `collections::string::String`,
    found &-ptr) [E0308]
src/main.rs:31  .header(UserAgent("string"))

その場合は、次を使用して動作させることができます

.header(UserAgent("string".to_string()))

そしてUserAgentスコープに入れる

use hyper::header::{Connection, Headers, UserAgent};

問題は、ヘッダーを作成するときに a の代わりに文字列リテラルを使用することでした。これは、文字列リテラルでメソッドをString呼び出すことによって解決されます。to_string()

于 2016-01-03T13:52:38.293 に答える