簡體   English   中英

如何在宏內導入類型?

[英]How do I import types inside of macros?

是否允許在函數中間use -statements?

如果是這樣,我如何參考模塊( selfsuper ?完整路徑?)

如果沒有,是在我調用宏的文件中導入結構/枚舉和宏是唯一的選擇嗎?

是否允許在函數中間use -statements?

是。

如果是這樣,我如何參考模塊( selfsuper ?完整路徑?)

[來自評論]我如何參考定義宏和類型的模塊?

AFAIK,這是不可能的。 唯一的希望是特殊$crate元變量是指宏所定義的箱子這樣,你可以和必須指定要參考一下,喜歡的類型的完整路徑:

use $crate::path::to::MyType;

請注意,此類型必須是公開的才能在使用您的宏的其他包裝箱中訪問! 這意味着該類型屬於您的包的公共接口,並且更改其路徑被視為一個重大變化。 由於破壞性更改應該很少發生,因此您不必經常更改宏定義中的路徑;-)

你可以簡單地使用use一個函數內部。 例如:

fn foo() {
    // do some other stuff
    use std::collections::HashMap; // use statement only valid
                                   // inside the current scope
    // use HashMap
}

use語句對於crate root來說總是絕對的。 你可以使它們相對於當前模塊如下: use self::submodule::Type

本書記錄在Rust書中

暫無
暫無

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

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