屬性

2018-08-12 22:04 更新

屬性

在 Rust 語(yǔ)言中,聲明可以用 ‘a(chǎn)ttributes’ 來(lái)注釋。它們看起來(lái)像下面這樣:

#[test]

或者是像這樣:

#![test]

兩者的區(qū)別是!,!改變了屬性所能夠適用的事物:

#[foo]
struct Foo;

mod bar {
#![bar]
}

#(foo) 屬性應(yīng)用到下一個(gè)項(xiàng)目,而這個(gè)項(xiàng)目就是結(jié)構(gòu)體聲明。 #![bar] 屬性適用于包含它的項(xiàng)目,這種屬性是一個(gè) mod 聲明。否則,它們是相同的。這樣都在某種程度上改變項(xiàng)了目的意義。

例如,考慮這樣一個(gè)函數(shù):

#[test]
fn check() {
assert_eq!(2, 1 + 1);
}

這是用 #[test] 來(lái)標(biāo)志的。這意味著它是特殊的:當(dāng)您運(yùn)行測(cè)試時(shí),該函數(shù)將執(zhí)行。當(dāng)你和往常一樣編譯時(shí), #[test] 甚至不會(huì)被包括在編譯的范圍之內(nèi)。這個(gè)函數(shù)是現(xiàn)在一個(gè)測(cè)試函數(shù)。

屬性也可能含有額外的數(shù)據(jù):

#[inline(always)]
fn super_fast_fn() {
或者甚至是關(guān)鍵字和值:
#[cfg(target_os = "macos")]
mod macos_only {

Rust 屬性被用于許多不同的事情。這有一個(gè)屬性的完整引用列表。目前,不允許用戶創(chuàng)建自己的屬性,只能由 Rust 編譯器來(lái)定義它們。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)