Неразрешенный импорт при вызове макроса, определенного во внешнем ящике

Я пытаюсь реализовать собственный HTTP-заголовок, используя макрос impl_header из гипер ящик, но кажется, что он не может разрешить модуль hyper::header.

Вот мой код:

#[macro_use] extern crate hyper;
use hyper::header;
struct CustomHeader;
impl_header!(CustomHeader, "value", String);

А вот и ошибка компилятора:

<hyper macros>:11:14: 11:20 error: unresolved import `header::HeaderFormat`. Maybe a missing `extern crate header`?
<hyper macros>:11 Result { use header:: HeaderFormat ; self . fmt_header ( f ) } } }
                               ^~~~~~
<hyper macros>:1:1: 11:67 note: in expansion of impl_header!
lib.rs:4:1: 4:45 note: expansion site
error: aborting due to previous error
Could not compile `macro_issue`.

Любая подсказка, почему это происходит и как я могу это исправить?

Спасибо


person mhristache    schedule 15.02.2015    source источник
comment
Похоже, они не использовали $crate, когда ссылаясь на свои собственные модули. Должно быть простое исправление!   -  person Renato Zannon    schedule 15.02.2015


Ответы (1)


Я согласен с Ренато, что это проблема с гипер, и вам следует сообщить об ошибке (или даже лучше запрос на перенос!). Если вы хотите пока обойти это, вы можете реэкспортировать header как свой собственный:

#[macro_use]
extern crate hyper;

pub use hyper::header as header;

struct CustomHeader;
impl_header!(CustomHeader, "value", String);

fn main() {}

К сожалению, это просто открывает новую волну ошибок, с которыми я позволю вам разобраться!

person Shepmaster    schedule 15.02.2015