Почему не удается выполнить многократный импорт из Hyper Crate?

Я работаю над очень простым HTTP-клиентом в Rust, построенном поверх hyper ( GitHub, crates.io) ящик.

Когда я пытаюсь повторить examples/client.rs файл в новом проекте Cargo с помощью cargo build (а также используя rustc src/main.rs), Я получаю несколько ошибок, вызванных неудачным импортом из hyper,

Вот вершина моего main.rs:

extern crate hyper;

use hyper::client::{Client, Request, Response, DefaultTransport as HttpStream};
use hyper::header::Connection;
use hyper::{Decoder, Encoder, Next};

Остальная часть файла, за исключением некоторых комментариев, идентична examples/client.rs файл из hyper репозиторий.

Во время компиляции я получаю следующие ошибки:

src/main.rs:10:48: 10:78 error: unresolved import `hyper::client::DefaultTransport`. There is no `DefaultTransport` in `hyper::client` [E0432]
src/main.rs:10 use hyper::client::{Client, Request, Response, DefaultTransport as HttpStream};
                                                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/main.rs:10:48: 10:78 help: run `rustc --explain E0432` to see a detailed explanation
src/main.rs:12:13: 12:20 error: unresolved import `hyper::Decoder`. There is no `Decoder` in `hyper` [E0432]
src/main.rs:12 use hyper::{Decoder, Encoder, Next};
                           ^~~~~~~
src/main.rs:12:13: 12:20 help: run `rustc --explain E0432` to see a detailed explanation
src/main.rs:12:22: 12:29 error: unresolved import `hyper::Encoder`. There is no `Encoder` in `hyper` [E0432]
src/main.rs:12 use hyper::{Decoder, Encoder, Next};
                                    ^~~~~~~
src/main.rs:12:22: 12:29 help: run `rustc --explain E0432` to see a detailed explanation
src/main.rs:12:31: 12:35 error: unresolved import `hyper::Next`. There is no `Next` in `hyper` [E0432]
src/main.rs:12 use hyper::{Decoder, Encoder, Next};
                                             ^~~~
src/main.rs:12:31: 12:35 help: run `rustc --explain E0432` to see a detailed explanation
src/main.rs:53:6: 53:40 error: trait `hyper::client::Handler` is not in scope [E0405]
src/main.rs:53 impl hyper::client::Handler<HttpStream> for Dump {
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/main.rs:53:6: 53:40 help: run `rustc --explain E0405` to see a detailed explanation
src/main.rs:53:6: 53:40 help: you can to import it into scope: `use hyper::server::Handler;`.

В случае, если это может способствовать этой проблеме, вот содержание моего Cargo.toml:

name = "my_project"
version = "0.0.1"
authors = ["email@example.com"]

[dependencies]
getopts = "0.2"
hyper = "0.9.6"

[[bin]]
name = "my_project"

Некоторые операции импорта действительно работают, поэтому, если пример в хранилище обновлен, я действительно не могу сказать, что не так. Исходные файлы ящика выглядят так, как будто они раскрывают связанные типы, но я очень плохо знаком с Rust, поэтому я могу неправильно читать файлы.

1 ответ

Решение

Вы используете примеры из основной ветки, которые не работают с 0.9.6 версия. Вы можете посмотреть примеры на ветке 0.9.6 или использовать груз hyper прямо из GitHub, писать на Cargo.toml:

[dependencies]                                     
hyper = {git = "https://github.com/hyperium/hyper"}
Другие вопросы по тегам