精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Rust實現按需環境控制,Cargo.toml中的特性配置說明,跨平臺,可代替環境變量

開發
Cargo 的Cargo.toml 文件的語法 "特性" features提供了一種表達 條件編譯和可選依賴項的機制。

Cargo的配置術語:特性 features

Cargo 的Cargo.toml 文件的語法 "特性" features提供了一種表達 條件編譯[1] 和 可選依賴項 的機制。包在 Cargo.toml 中的 [features] 表中定義了一組具有名稱的特征,每個特征可以被啟用或禁用。在構建包時,可以通過命令行參數(如 --features)來啟用包中的特征。對于依賴項,可以在 Cargo.toml 中的依賴項聲明中啟用特征。

Cargo.toml 文件的 [features] 設置

特性是在 Cargo.toml 中的 [features] 表中定義的。每個特性都定義了一個數組,其中包含其他特征或可選依賴項,它們被該特性啟用。以下示例展示了如何使用特性來實現一個支持不同圖像格式的 2D 圖像處理庫。

[features]
# 定義了一個名為webp的 特性,它內部暫不定義任何配置項。
webp = []

這個特性啟用后,可以在編譯時通過 cfg 表達式 (即 cfg-macro 語法)選擇性地包含支持該特性的代碼。例如,在包的 lib.rs 中可以:

// 這個條件編譯,包含了一個模塊,實現 WEBP 支持。
// 代碼中可根據是否啟用了 "webp" 特性來選擇是否包含 WEBP 支持。若支持,則`pub mod webp`有效。
#[cfg(feature = "webp")]
pub mod webp;

cargo 通過使用rustc [--cfg flag] 來幫助代碼判斷某個特性是否支持;代碼中通過[cfg attribute] 或 [cfg macro]實現在符合特性的時候執行代碼段。

特性可以列出其他特性來啟用。例如,ICO 圖像格式可以包含 BMP 和 PNG 圖像,所以當它被啟用時,它應該確保其他特性也被啟用。

[features]
bmp = []
png = []
ico = ["bmp", "png"]
webp = []

Cargo 使用 rustc 的 cfg-expressions 來設置包中的特性。代碼可以使用 cfg-macro 來測試特性是否可用,以執行緊跟的相關代碼(僅在特性啟用的情況下編譯和運行的代碼)。

例如,ICO 圖像格式可以包含 BMP 和 PNG 圖像,因此當它被啟用時,它應該確保其他特性也被啟用。

特性名稱允許包含來自 https://unicode.org/reports/tr31/ 的字符(包括大多數字母),此外還允許從 _ 或數字 0 到 9 開始,并在第一個字符之后可能包含 -、+ 或 .。

default 特性是自帶的

默認情況下,所有特性都處于禁用狀態,除非明確啟用。可以通過指定 default 特性來更改此行為:

[features]
default = ["ico", "webp"]
bmp = []
png = []
ico = ["bmp", "png"]
webp = []

當包被構建時,default 特性被啟用,從而啟用了列出的特性。這種行為可以通過:

  • --no-default-features 命令行選項禁用包的默認特性。
  • default-features = false 選項可以在 Cargo.toml的 依賴聲明 (dependency-features) 中指定。

注意:選擇默認特性集時要小心。默認特性集是方便用戶不用費心選擇哪些特性被啟用,但也有缺點。依賴項會自動啟用默認特性,除非 default-features = false 被指定。這在希望 默認特性不被啟用時可能要額外告訴編譯器,尤其是在依賴圖中有多個依賴項時尤其如此。每個包必須確保default-features = false 被指定,以避免啟用它們。

另一個問題是在從默認特性集中移除特性時,這可能會破壞 SemVer 兼容性,因此你必須確保 你不會移除這些特性。

可選依賴

依賴的特性可被標記為可選的(optional),這表示它們不會被默認編譯。例如,讓我們假設我們的 2D 圖像處理庫使用一個外部包來處理 GIF 圖像。這可以用以下方式表達:

[dependencies]
gif = { version = "0.11.1", optional = true }

可選特性會隱式定義為與依賴同名的特性。這意味著代碼中可以使用相同的 cfg(feature = "gif") 語法,并且依賴可以像特性一樣啟用,例如 --features gif。

注意:[feature]表中的特性不能與依賴同一名稱。在rust的 nightly渠道上才有,可以在nightly版的rust中啟用 [namespaced 特性],注意這個是rust試驗階段的功能。

額外的特性可以啟用可選依賴,只要在特性列表中包含可選依賴的名字。例如,假設為了支持AVIF圖像格式,我們的庫需要兩個其他的依賴:

[dependencies]
ravif = { version = "0.6.3", optional = true }
rgb = { version = "0.8.25", optional = true }

[features]
avif = ["ravif", "rgb"]

本例中,avif特性會啟用兩個指定的依賴。

注意:另外的一種可選依賴的方法是使用 [platform-specific dependencies],這個是條件依賴,根據目標平臺。

特定于平臺的依賴項采用相同的格式,但在target下列出。像正常 Rust 一樣的#[cfg]語法,將用于定義這些部分:

[target.'cfg(windows)'.dependencies]
winhttp = "0.4.0"

[target.'cfg(unix)'.dependencies]
openssl = "1.0.1"

[target.'cfg(target_arch = "x86")'.dependencies]
native = { path = "native/i686" }

[target.'cfg(target_arch = "x86_64")'.dependencies]
native = { path = "native/x86_64" }

與 Rust 一樣,這里的語法支持not,any,和all運算符組合各種 cfg 名稱/值對。請注意cfg語法僅在 Cargo 0.9.0(Rust 1.8.0)之后可用.

除了#[cfg]語法,Cargo 還支持列出依賴關系適用的完整目標:

[target.x86_64-pc-windows-gnu.dependencies]
winhttp = "0.4.0"

[target.i686-unknown-linux-gnu.dependencies]
openssl = "1.0.1"

如果您使用的是自定義目標規范,請引用完整路徑和文件名:

[target."x86_64/windows.json".dependencies]
winhttp = "0.4.0"

[target."i686/linux.json".dependencies]
openssl = "1.0.1"
native = { path = "native/i686" }

[target."x86_64/linux.json".dependencies]
openssl = "1.0.1"
native = { path = "native/x86_64" }

依賴的特性

可在依賴聲明中啟用依賴的特性。features鍵指示要啟用的特性:

[dependencies]
# cargo.toml的依賴聲明中啟用 serde包的 `derive` 特性.
serde = { version = "1.0.118", features = ["derive"] }

default默認特性 可以用default-features = false聲明實現禁用,完整的示例如下:

[dependencies]
flate2 = { version = "1.0.3", default-features = false, features = ["zlib"] }

注意:這可能無法確保默認特性被禁用。如果另一個依賴項依賴了flate2且它未聲明default-features = false,則flate2的默認特性將被啟用。

依賴包的特性也可以在[features]表中啟用,語法為"package-name/feature-name"。例如:

[dependencies]
jpeg-decoder = { version = "0.1.20", default-features = false }

[features]
# 通過啟用jpeg-decoder的`rayon`特性,打開并行處理支持
parallel = ["jpeg-decoder/rayon"]

注意:"package-name/feature-name"語法也會啟用package-name,即使它是一個可選依賴項。

通過cargo的命令行參數控制

cargo build 命令支持控制是否啟用指定的feature,有3個相關參數:

-F, --features <FEATURES>  Space or comma separated list of features to activate
    --all-features         Activate all available features
    --no-default-features  Do not activate the `default` feature

通過命令行控制特性的啟用:

  • --features FEATURES: 參數啟用所指定FEATURES特性是否啟用。多個特性可以用逗號或空格分隔。如果使用空格,請確保在運行Cargo從shell(例如--features "foo bar")。如果在一個[工作區]中構建多個包,則可以使用package-name/feature-name語法來指定 特定工作區成員的特性。
  • --all-features參數,啟用指定的包的所有特性。
  • --no-default-features參數,指定不啟用指定包的default特性。

參考資料

[1]條件編譯: https://doc.rust-lang.org/cargo/reference/features.html#conditional-compilation

責任編輯:趙寧寧 來源: 深入理解Linux
相關推薦

2010-10-11 09:25:31

MySQL環境變量

2009-06-29 15:06:23

環境變量配置Java

2009-07-03 16:46:07

JSP環境變量

2021-11-29 10:25:16

Linux環境變量命令

2011-12-21 10:46:17

Java

2021-06-18 08:43:20

環境變量Linux

2023-11-30 10:42:43

Rust命令行參數

2011-06-14 09:04:52

Qt 環境變量

2010-09-16 15:33:48

Java環境變量

2009-06-16 15:57:53

Java環境變量

2011-05-31 13:41:50

Android 環境變量

2009-06-15 16:28:30

JAVA環境變量

2010-01-11 17:39:31

Fedora 8配置J

2021-06-09 08:21:14

Webpack環境變量前端

2020-11-23 15:21:12

Linux環境變量

2010-04-06 12:45:28

CentOS系統

2020-12-28 10:50:09

Linux環境變量命令

2012-09-18 01:22:33

Java環境變量Classpath

2021-02-15 15:52:27

Linux環境變量命令

2023-11-01 13:40:25

GolangGo
點贊
收藏

51CTO技術棧公眾號

无码人妻aⅴ一区二区三区玉蒲团| 成人福利在线视频| 国内精品免费视频| 超碰97国产精品人人cao| 国产成人免费视频精品含羞草妖精| 久久久99久久精品女同性| 搡的我好爽在线观看免费视频| 搞黄网站在线观看| 成人丝袜18视频在线观看| 国内免费久久久久久久久久久| 亚洲久久久久久| 你懂得影院夜精品a| 国产丝袜美腿一区二区三区| 国产欧美一区二区三区久久| 欧美 日韩 国产 一区二区三区| 色妞ww精品视频7777| 丰满岳妇乱一区二区三区| 日韩激情视频| wwwav网站| av成人激情| 日韩中文av在线| 婷婷五月精品中文字幕| 福利一区二区三区视频在线观看| 亚洲欧美区自拍先锋| 久久国产精品精品国产色婷婷| 波多野结衣绝顶大高潮| 欧美黄色一区| 一区二区三区美女xx视频| 国产男女无遮挡猛进猛出| 在线男人天堂| 一区二区三区**美女毛片| 久久爱av电影| www天堂在线| 日韩精品一级中文字幕精品视频免费观看| 另类视频在线观看| 精品无码人妻一区二区免费蜜桃| 日韩毛片免费视频一级特黄| 午夜一区二区三区在线观看| 在线视频精品一区| 日韩a在线观看| 国产99久久久国产精品免费看| 国产精国产精品| 在线看成人av| 国产精品久久观看| 亚洲天堂成人在线| 久久久久久久人妻无码中文字幕爆| 国产亚洲精彩久久| 欧美日韩在线视频观看| 国产91在线亚洲| 色影视在线观看| 久久蜜桃香蕉精品一区二区三区| 91精品天堂| 亚洲中文一区二区三区| 麻豆91精品| 韩日精品中文字幕| 久草免费在线视频观看| 91久久久精品国产| 中文字幕视频一区二区在线有码| 亚洲av无码一区二区三区网址 | 97超碰人人澡| 国产秀色在线www免费观看| youjizz国产精品| 91精品天堂| av中文字幕播放| 麻豆精品国产91久久久久久| 国产99视频精品免视看7| 可以免费看的av毛片| 韩国在线视频一区| 久久99精品久久久久久噜噜| 黄色录像免费观看| 色男人天堂综合再现| 怡红院精品视频| 精品成人av一区二区三区| 窝窝社区一区二区| 日韩欧美一区中文| 午夜视频在线免费看| 日本在线成人| 欧美不卡在线视频| xxxx国产视频| 红杏视频成人| 日韩精品免费在线| 亚洲国产无码精品| 狠狠做深爱婷婷综合一区| 国产一区二区三区久久精品| 丰满少妇高潮一区二区| 狠狠操综合网| 中文字幕欧美专区| 少妇视频一区二区| 欧美激情综合色综合啪啪| 九九视频直播综合网| 99精品久久久久| 亚洲黄色在线| 国产成人精品久久二区二区| 中国黄色一级视频| 国产一区二区精品久久99| 91免费版黄色| 欧美亚洲精品在线观看| 久久中文娱乐网| 日韩欧美亚洲区| 日本www在线观看视频| 亚洲伦理在线精品| 欧美精品久久久久久久久久久| 国产白丝在线观看| 色婷婷精品大在线视频| 国产免费中文字幕| 电影一区二区在线观看| 亚洲精品日韩欧美| 免费国产羞羞网站美图| 国产精品vip| 国产va免费精品高清在线| 一区二区日韩视频| 成人亚洲精品久久久久软件| 欧美极品色图| av毛片在线看| 亚洲国产精品视频| 色综合色综合色综合色综合| 日本一区二区三区电影免费观看| 亚洲精品视频在线播放| 久久爱一区二区| 国产伦理一区| 成人在线播放av| 台湾av在线二三区观看| 亚洲你懂的在线视频| 欧美成人精品欧美一级乱| 亚洲综合视频| 国产视频精品久久久| 麻豆一区在线观看| 久久精品女人| 国产亚洲一区二区三区在线播放 | 国产精品99久久久久久久 | 91麻豆国产福利精品| 亚洲一区二区不卡视频| а√在线中文网新版地址在线| 91激情五月电影| 男人添女人荫蒂国产| 久久一区二区三区电影| 51精品在线观看| 一级日韩一级欧美| 国产亚洲精品aa午夜观看| 久久这里只有精品23| 国产美女精品视频免费播放软件 | 国产高清一区在线观看| 五月天欧美精品| 久久久久亚洲av片无码v| 日韩在线观看一区| 国产精品入口日韩视频大尺度| 免费观看的毛片| 亚洲免费色视频| 亚洲欧美国产日韩综合| 欧美午夜寂寞| 久久久综合免费视频| japanese国产| 亚洲免费在线电影| 想看黄色一级片| 久久亚洲成人| 国产精品一区二区久久久| 国产在线视频福利| 色综合久久久网| 一本色道综合久久欧美日韩精品 | 日本韩国欧美在线观看| 18国产精品| 欧美丰满少妇xxxxx| 精品人妻aV中文字幕乱码色欲| 一区在线观看视频| 九色porny自拍| 日韩精品首页| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 久久精品丝袜高跟鞋| 欧美人与性动交α欧美精品图片| 日韩午夜激情电影| 欧美日韩中文字幕在线观看 | 少妇性l交大片7724com| 欧美高清一区| 痴汉一区二区三区| 超级碰碰不卡在线视频| 亚洲国产精品嫩草影院久久| 在线看成人av| 久久免费看少妇高潮| 中文字幕在线导航| 日韩大片在线| 91pron在线| 欧美xxxxhdvideosex| 精品国产三级a在线观看| 日韩欧美国产亚洲| 久久久精品黄色| 三级在线免费看| 亚洲精品国产成人影院| 草莓视频一区| а√在线天堂官网| 国产亚洲视频中文字幕视频| 中文字幕人妻一区二区在线视频| 日韩一区在线看| 不许穿内裤随时挨c调教h苏绵| 亚洲美女黄网| 日韩美女一区| 久久av网站| 91av视频导航| eeuss影院www在线观看| 日韩欧美三级在线| 欧美男人亚洲天堂| 最好看的中文字幕久久| 欧美性生交xxxxx| 久久婷婷亚洲| 黄色网zhan| 五月国产精品| 亚洲自拍偷拍视频| 巨茎人妖videos另类| 日韩在线视频观看| 国精产品乱码一区一区三区四区| 色网综合在线观看| 久一视频在线观看| 国产亚洲欧美中文| 国产精品99久久久精品无码| 首页国产欧美日韩丝袜| 黄色特一级视频| 国产精品欧美三级在线观看| 国产精品夜间视频香蕉| 超碰中文在线| 久久精品国产亚洲精品2020| 无码精品人妻一区二区| 在线国产电影不卡| 久久免费少妇高潮99精品| 中文字幕电影一区| 无码人妻精品一区二区三区99不卡| 久久精品成人| 免费特级黄色片| 久久福利影院| 欧美日韩精品免费看| 日本一区精品视频| 国产欧美一区二区| 欧美成人ⅴideosxxxxx| 欧美精品福利在线| 91看片在线观看| 亚洲精品色婷婷福利天堂| 亚洲美女综合网| 欧美一区二区播放| 精人妻无码一区二区三区| 亚洲aⅴ怡春院| 亚洲不卡在线播放| 国产精品乱人伦中文| 三级男人添奶爽爽爽视频| 粉嫩av亚洲一区二区图片| 一二三av在线| 狠狠色狠狠色合久久伊人| 亚洲色图38p| 免费日韩av片| 免费观看美女裸体网站| 国内精品久久久久久久影视麻豆 | 国产精品一区二区免费福利视频 | 999av小视频在线| 色综合天天狠天天透天天伊人| 日本高清中文字幕在线| 精品性高朝久久久久久久| 亚洲 欧美 激情 另类| 精品精品国产高清一毛片一天堂| 性色av一区二区三区四区| 一本到不卡精品视频在线观看| 日本黄色片视频| 精品欧美aⅴ在线网站| 五月天综合在线| 亚洲v中文字幕| 在线观看免费国产视频| 一区二区三区不卡视频| 久久网免费视频| 五月天亚洲婷婷| 国产精品视频123| 色综合久久88色综合天天6| 久久久久久久久久久影院| 欧美性色xo影院| 久久久久久麻豆| 亚欧美一区二区三区| 国产呦萝稀缺另类资源| 日本成人在线免费观看| 成人精品在线视频观看| 日韩在线免费观看av| 国产精品白丝在线| 久久亚洲成人av| 一本久久a久久精品亚洲| 国产一区二区女内射| 亚洲激情国产精品| jzzjzzjzz亚洲成熟少妇| 久久夜色精品国产| 中文字幕在线免费观看视频| 91久久精品国产| 日韩高清一级| 中文字幕一区二区三区最新| 99av国产精品欲麻豆| 午夜免费福利在线| 福利一区福利二区| 99国产精品免费| 亚洲成人av电影| 亚洲无码精品在线观看| 亚洲国内精品在线| 超碰在线网址| 国产精品福利网站| 老司机在线精品视频| 中文字幕欧美日韩一区二区三区 | 欧美成人免费小视频| 三上悠亚一区二区| 国产伦理一区二区三区| 视频在线不卡免费观看| 青青草原成人网| 国产成a人亚洲精品| 女人黄色一级片| 欧美性猛交xxxx久久久| 午夜精品久久久久久久99热黄桃 | 国产精品一区在线| 亚洲精品91在线| 性做久久久久久| 99久久精品国产一区二区成人| 亚洲欧美一区二区激情| 欧美日韩经典丝袜| 91最新在线免费观看| 欧美精品乱码| 国产综合av在线| 成人在线视频首页| 亚洲色婷婷一区二区三区| 欧美亚一区二区| 美女欧美视频在线观看免费 | 免费视频爱爱太爽了| 精品一区二区免费视频| 三年中国中文观看免费播放| 欧美性精品220| 亚洲 欧美 激情 另类| 久久久久久久久久久国产| 日韩在线观看中文字幕| 香蕉精品视频在线| 免费成人美女在线观看.| 中文字幕免费视频| 色哟哟精品一区| 免费在线高清av| 欧美一区二区三区免费视| 久久这里只有精品一区二区| www.日本少妇| 成人国产精品免费网站| 国产网站在线看| 亚洲国产精品999| 擼擼色在线看观看免费| 国产综合欧美在线看| 最新亚洲一区| 制服丝袜第一页在线观看| 午夜国产精品影院在线观看| 农村少妇久久久久久久| 久久久久久久久电影| 国产精品网址| 国产美女网站在线观看| 久久亚洲欧美国产精品乐播| 久久久久在线视频| 一区二区三区美女xx视频| 欧美在线一级| 特级西西人体www高清大胆| 国产精品一二三| 日韩欧美激情视频| 亚洲欧美中文日韩v在线观看| 二吊插入一穴一区二区| 亚洲成人午夜在线| 国产一区二区三区在线观看免费| 久久久久久久久久网站| 精品欧美一区二区久久| 在线观看欧美日韩电影| 三区精品视频| 韩日精品视频一区| 久久久久亚洲av无码专区 | av在线三区| 91久久久久久久久久久| 狠狠入ady亚洲精品经典电影| 国产麻豆天美果冻无码视频| 欧美中文字幕不卡| 成人在线app| 国产在线欧美日韩| 日韩黄色免费网站| 欧洲第一无人区观看| 日韩精品极品视频| 激情久久99| 日韩五码在线观看| 国产精品日产欧美久久久久| 精品黑人一区二区三区国语馆| 91av在线免费观看视频| 日韩免费一区| 国产精品成人99一区无码| 色88888久久久久久影院按摩| 黄色免费在线观看网站| 精品国产乱码久久久久久88av| 日本伊人精品一区二区三区观看方式 | 中文字幕理论片| 欧美极品少妇xxxxx| 精品国产乱码久久久| 老司机av网站| 91国偷自产一区二区开放时间| 日韩伦理电影网站| 欧美尤物一区| 大尺度一区二区| 一级做a爱片性色毛片| 97国产精品视频| 91av精品| 精品人妻一区二区三区蜜桃视频| 欧美成人女星排行榜| 国产激情欧美| 99色精品视频| 亚洲综合免费观看高清完整版在线|