精品欧美一区二区三区在线观看 _久久久久国色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毛片| 国产精品黄色| 中文字幕国产精品| 成人在线观看一区二区| 丁香六月综合| 亚洲欧美经典视频| 欧美日韩天天操| 超碰在线观看99| 久热精品在线| 欧美成人一区二区三区电影| 中文字幕一二三区| 国产综合色区在线观看| 亚洲一区二区三区在线播放| 亚洲 日韩 国产第一区| 日批免费在线观看| 国产一区二区三区免费看| 日本一本a高清免费不卡| 欧美成人三级视频| 日韩欧美午夜| 亚洲人a成www在线影院| 久久久国产精品久久久| 国内欧美日韩| 色狠狠av一区二区三区| 成人区一区二区| 日本不卡三区| 久久精品网站免费观看| 国产精品伊人日日| 亚洲乱码精品久久久久..| 美女视频网站久久| 日韩免费在线播放| 中文字幕激情小说| 亚洲成人资源| 久久久久久久91| 国产一二三四区| 日韩一区二区在线| 在线观看精品国产视频| 最新中文字幕视频| 亚洲精品aaaaa| 精品小视频在线| 国产精品伦子伦| 91综合精品国产丝袜长腿久久| 欧美乱妇20p| 一本岛在线视频| 99re66热这里只有精品4| 欧美日韩一区二区在线| 成 年 人 黄 色 大 片大 全| 污片视频在线免费观看| 一区二区三区小说| 欧美a级黄色大片| sm国产在线调教视频| 亚洲欧美视频在线观看| 97精品国产97久久久久久粉红| 欧美成年黄网站色视频| 国产精品麻豆久久久| 中文字幕精品一区日韩| 欧美日韩视频在线播放| 亚洲视频精选在线| 国产又粗又长又爽视频| 怡红院在线播放| 亚洲电影在线播放| 国产女大学生av| 欧美黑人巨大xxxxx| 91福利精品视频| 羞羞的视频在线| 亚洲日日夜夜| 日韩精品中文字幕一区二区三区 | 精品视频一区二区三区| 91麻豆精品国产91久久久久| 色综合久久久无码中文字幕波多| 成人av综合网| 亚洲美女又黄又爽在线观看| 69精品无码成人久久久久久| 天天射综合网视频| 九九精品在线视频| 日韩三级小视频| 久久先锋资源| 国产专区欧美专区| 韩国av免费在线观看| 久久久久高清精品| 一本一道久久a久久综合精品| 国产黄色在线网站| 精品国产户外野外| 在线看的黄色网址| av日韩精品| 亚洲午夜精品久久久久久久久久久久| 波多野结衣家庭教师在线观看 | 久久在线视频在线| 国产精品1234区| 丝袜亚洲另类欧美| 亚洲精品日韩激情在线电影| 天天干天天干天天干| 国产日韩欧美一区二区三区乱码| 精品一区二区成人免费视频| 成年人黄色大片在线| 欧美亚洲综合另类| 久久性爱视频网站| 日本不卡二三区| 国模视频一区二区| 中文字幕乱码中文字幕| 成人免费视频国产在线观看| 亚洲欧洲日韩精品| 白浆在线视频| 欧美一区二区三区在线观看视频| 日韩人妻无码一区二区三区| 欧美a级片网站| 国产精品jizz在线观看麻豆| 亚洲男人第一天堂| 一区在线播放视频| 北条麻妃在线视频| 高潮久久久久久久久久久久久久 | 免费看的黄色录像| 亚洲国内欧美| 91入口在线观看| 91在线免费看| 欧美日韩国产综合新一区| 中文字幕12页| 日韩欧美一区二区三区在线视频 | 久久人人爽人人爽人人片亚洲 | 91精品国产高清一区二区三区| 中文字幕一区二区三区人妻不卡| 一区二区三区四区电影| 国产精品xxx视频| 天堂在线一二区| 亚洲国产中文字幕| 日本成人在线免费| 亚洲天堂免费| 91夜夜未满十八勿入爽爽影院| 国产专区在线| 色就色 综合激情| 亚洲av综合一区二区| 亚洲精品激情| 国产精品免费在线播放| 欧美1234区| 欧美不卡一二三| 日韩女优一区二区| 国内外成人在线视频| 亚洲精品国产精品国自产观看| 欧美日韩123区| 亚洲欧美国产va在线影院| 激情综合网五月婷婷| 成人动漫一区二区| 日韩成人三级视频| 成人影院中文字幕| 欧美激情视频在线| 人妻91麻豆一区二区三区| 一区二区久久久| 无码人妻精品一区二区三| 合欧美一区二区三区| 国产精品推荐精品| 91九色国产在线播放| 亚洲福利视频在线| 日韩精品在线观看免费| 久久久噜噜噜久噜久久综合| 国产麻花豆剧传媒精品mv在线| 妖精一区二区三区精品视频 | aaa在线视频| 久久青草欧美一区二区三区| 能在线观看的av网站| 精品久久视频| 91精品久久久久久久久青青| 国产乱色在线观看| 精品欧美黑人一区二区三区| 国产成人精品亚洲男人的天堂| jlzzjlzz国产精品久久| 成人观看免费完整观看| 欧美一级精品| 亚洲一区亚洲二区亚洲三区| 国产精品一区二区日韩| 亚洲欧美一区二区三区四区| 亚洲av无码乱码国产精品fc2| 中文字幕在线观看一区| 精品人妻人人做人人爽夜夜爽| 亚洲精品一二| 色婷婷精品国产一区二区三区| 精品视频在线播放一区二区三区 | 国产精品视频一二三区| 网站在线你懂的| 国产情侣久久| 一个色的综合| 成人在线超碰| 国产精品一区二区三区免费视频 | 99久久99久久精品国产片果冰| 亚洲一区二区三区在线视频| free性m.freesex欧美| 在线播放国产精品| 午夜免费福利视频| 在线观看国产精品网站| 日本a级片视频| 久久一二三国产| 99中文字幕在线| 一本色道久久综合亚洲精品高清 | 青青草国产成人av片免费| 奇米777四色影视在线看| 要久久电视剧全集免费| 亚洲最大的成人网| 激情都市亚洲| 欧美日韩国产成人| 超碰国产在线观看| 亚洲国产高清自拍| 国产精品老熟女视频一区二区| 狠狠爱在线视频一区| 国产精品99久久久久久成人| 26uuu国产在线精品一区二区| 性久久久久久久久久久久久久| 亚洲女同同性videoxma| 久久久99精品视频| 日韩在线观看| 欧美日韩精品一区| silk一区二区三区精品视频| 国产日韩一区在线| 伊伊综合在线| 国模精品视频一区二区| av超碰免费在线| 日韩中文有码在线视频| 人成在线免费视频| 亚洲成人亚洲激情| 精品人妻伦一二三区久久| 欧美精品在线视频| 亚洲精品一区二三区| 黄网站色欧美视频| 国产精品白浆一区二小说| 自拍视频在线观看一区二区| 国产又黄又粗的视频| 久久精品一区二区三区不卡牛牛| 色哟哟无码精品一区二区三区| 极品销魂美女一区二区三区| 亚洲少妇第一页| 久久久精品五月天| 99色精品视频| 国产一区成人| 久久久久久久久久久视频| 亚洲黄色影片| 僵尸世界大战2 在线播放| 欧美日韩第一区| 国产情侣第一页| 欧美三级乱码| 少妇大叫太大太粗太爽了a片小说| 亚洲精品久久| 日本三日本三级少妇三级66| 亚洲精品网址| 懂色av一区二区三区四区五区| 成人在线免费观看网站| 日本午夜精品一区二区三区| 亚洲宅男一区| 色姑娘综合av| 欧美视频免费| 正在播放亚洲| 综合天堂av久久久久久久| 国产日韩欧美大片| 欧美三级特黄| 免费无遮挡无码永久视频| 亚洲在线成人| 久久久久久三级| 久久99精品一区二区三区| 99久久99精品| 国产91精品露脸国语对白| 亚洲欧美日韩色| 91论坛在线播放| 夫妇交换中文字幕| 亚洲视频一二三| 五月天婷婷丁香| 日韩欧美中文字幕在线播放| 天堂网一区二区| 91精品福利在线一区二区三区| 亚洲AV无码精品自拍| 日韩高清av在线| 春暖花开成人亚洲区| 久久这里只有精品99| 激情影院在线| 97香蕉超级碰碰久久免费的优势| 日韩av中字| 亚洲sss综合天堂久久| 女一区二区三区| 婷婷五月色综合| 欧美精品91| 亚洲午夜无码av毛片久久| 久久丁香综合五月国产三级网站| 中文字幕avav| www久久精品| tube国产麻豆| 欧美性xxxx| 国产色视频在线| 日韩国产一区三区| 好了av在线| 国产成人精品久久二区二区91| 日本精品视频| 日韩高清av| 伊人久久婷婷| 中文字幕 欧美日韩| 91伊人久久大香线蕉| 日日碰狠狠添天天爽| 五月天一区二区三区| 中文字幕乱码一区二区| 亚洲国产精品va在线看黑人| a√资源在线| 国产91av在线| 中文无码日韩欧| 图片区小说区区亚洲五月| 亚洲国产一区二区三区a毛片| 色91精品久久久久久久久| 91免费观看视频在线| 免费看一级一片| 精品视频一区二区三区免费| 污视频网站免费观看| 久久天天躁狠狠躁夜夜躁2014| 日韩大尺度黄色| 国内一区二区三区在线视频| 91精品一区国产高清在线gif| 欧美私人情侣网站| 成人午夜精品一区二区三区| 97精品在线播放| 91国偷自产一区二区开放时间 | 一区二区中文字幕在线| 国产成人无码一区二区在线播放| 欧美va亚洲va在线观看蝴蝶网| 日本在线天堂| 国产精品高精视频免费| 香蕉视频一区二区三区| 欧美视频在线观看视频| 国产高清精品网站| 亚洲波多野结衣| 欧美午夜精品久久久久久孕妇| 色视频在线观看免费| 国内外成人免费激情在线视频网站| 麻豆一二三区精品蜜桃| 在线不卡日本| 久色婷婷小香蕉久久| 天堂在线中文视频| 欧美亚洲图片小说| 北岛玲一区二区三区| 国产精品91视频| 久操精品在线| 久草综合在线观看| 精品人妻人人做人人爽夜夜爽| 亚洲人成在线播放网站岛国| 96亚洲精品久久久蜜桃| 精品国产一区二区三区四区在线观看 | 91成人在线观看喷潮| 久久久久久青草| 国产精品福利观看| 波多野结衣在线观看一区二区| 9久久婷婷国产综合精品性色| 欧美国产激情二区三区 | 交100部在线观看| 国内一区在线| 欧美中文日韩| 亚洲精品国产91| 欧美日韩精品欧美日韩精品一综合| 成年人视频在线免费观看| 国产精品久久久久久久久久| 93在线视频精品免费观看| 亚洲第一天堂久久| 亚洲综合在线视频| 日本黄色一区二区三区| 97成人超碰免| 久久99国内| 69久久久久久| 亚洲欧美二区三区| 欧美 日韩 国产 精品| 91国语精品自产拍在线观看性色| 亚洲免费专区| 小泽玛利亚视频在线观看| 亚洲欧美日韩系列| 狠狠躁夜夜躁av无码中文幕| 欧美性视频精品| 日韩精品四区| 成人一区二区三区仙踪林| 欧美日韩亚洲一区二| av资源网在线观看| 亚洲自拍欧美另类| 在线亚洲自拍| 99在线视频免费| 日韩欧美一级精品久久| 一区二区三区短视频| 中文网丁香综合网| 99re在线视频这里只有精品| 国产乡下妇女三片| 欧美日韩国产成人| 精品国产视频| 精品伦一区二区三区| 色悠悠亚洲一区二区| a毛片在线播放| 欧美精品亚洲精品| 国产剧情一区二区| 青青青国产在线| 欧美成人亚洲成人| 激情五月综合网| 韩国三级hd中文字幕有哪些| 欧美午夜片欧美片在线观看| 岛国成人毛片| 色阁综合av| 99久久99久久久精品齐齐| 91精品国产色综合久久不8| 欧美一级淫片videoshd| 午夜天堂精品久久久久|