簡體   English   中英

如何將整個箱子傳遞給程序宏?

[英]How to pass a whole crate to a procedural macro?

我試圖將我的整個箱子傳遞給程序宏。

我已經嘗試將此代碼放在我的lib.rs

#![my_macro]
#![feature(proc_macro)]
extern crate my_macro;
use my_macro::{my_macro};

並失敗: error: cannot find attribute macro 'my_macro' in this scope

我也嘗試將宏調用放在use子句下面:

#![feature(proc_macro)]
extern crate my_macro;
use mock_macro::{my_macro};
#![my_macro]

但也失敗了: error: an inner attribute is not permitted in this context

有可能嗎? (我知道syn有解析整個箱子的功能)

只要您啟用feature(extern_absolute_paths)並使用屬性宏的絕對路徑,就可以從Rust 1.25.0開始每晚執行此操作。

#![::my_crate::my_macro]
#![feature(extern_absolute_paths, proc_macro)]

在板條根上調用的屬性宏問題正在生銹/銹蝕#41430中被跟蹤。 隨着RFC 2126的實現進一步發展,我們希望消除必須使用絕對路徑指定屬性的限制。 您也可能遇到其他限制,特別是嘗試將函數從crate級別的過程宏注入包中當前會使編譯器崩潰

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM