鍍金池/ 教程/ Java/ 屬性
哲學(xué)家就餐問題
鏈接進(jìn)階
名詞中英文對(duì)照
測(cè)試
引用和借用
泛型
方法語(yǔ)法
函數(shù)
不安全代碼
并發(fā)
裝箱語(yǔ)法和模式
注釋
棧和堆
運(yùn)算符與重載
語(yǔ)法索引
文檔
固有功能
所有權(quán)
循環(huán)
通用函數(shù)調(diào)用語(yǔ)法
不定長(zhǎng)類型
<code>const</code> 和 <code>static</code>
迭代器
其他語(yǔ)言中的 Rust
枚舉
詞匯表
If語(yǔ)句
猜猜看
錯(cuò)誤處理
生命周期
編譯器插件
發(fā)布途徑
閉包
trait 對(duì)象
不使用標(biāo)準(zhǔn)庫(kù)
關(guān)聯(lián)常量
外部函數(shù)接口(FFI)
類型轉(zhuǎn)換
原生類型
匹配
參考文獻(xiàn)
Rust 編程語(yǔ)言
內(nèi)聯(lián)匯編
條件編譯
選擇你的保證
學(xué)習(xí) Rust
`type`別名
自定義內(nèi)存分配器
屬性
if let
高效 Rust
可變性
語(yǔ)法和語(yǔ)義
模式
基準(zhǔn)測(cè)試
結(jié)構(gòu)體
變量綁定
語(yǔ)言項(xiàng)
切片模式
<code>Deref</code> 強(qiáng)制多態(tài)
關(guān)聯(lián)類型
裸指針
<code>Borrow</code> 和 <code>AsRef</code>
準(zhǔn)備
Rust 開發(fā)版
字符串

屬性

attributes.md
commit 024aa9a345e92aa1926517c4d9b16bd83e74c10d

在Rust中聲明可以用“屬性”標(biāo)注,它們看起來(lái)像:

#[test]
# fn foo() {}

或像這樣:

# mod foo {
#![test]
# }

這兩者的區(qū)別是!,它改變了屬性作用的對(duì)象:

#[foo]
struct Foo;

mod bar {
    #![bar]
}

#[foo]作用于下一個(gè)項(xiàng),在這就是struct聲明。#![bar]作用于包含它的項(xiàng),在這是mod聲明。否則,它們是一樣的。它們都以某種方式改變它們附加到的項(xiàng)的意義。

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

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

它被標(biāo)記為#[test]。這意味著它是特殊的:當(dāng)你運(yùn)行[測(cè)試](Testing 測(cè)試.md),這個(gè)函數(shù)將會(huì)執(zhí)行。當(dāng)你正常編譯時(shí),它甚至不會(huì)被包含進(jìn)來(lái)。這個(gè)函數(shù)現(xiàn)在是一個(gè)測(cè)試函數(shù)。

屬性也可以有附加數(shù)據(jù):

#[inline(always)]
fn super_fast_fn() {
# }

或者甚至是鍵值:

#[cfg(target_os = "macos")]
mod macos_only {
# }

Rust屬性被用在一系列不同的地方。在參考手冊(cè)中有一個(gè)屬性的全表。目前,你不能創(chuàng)建你自己的屬性,Rust編譯器定義了它們。

上一篇:詞匯表下一篇:匹配