Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

属性

属性は、何らかのモジュール、クレート、またはアイテムに適用されるメタデータです。このメタデータは、次の用途に使用できます。

属性は #[outer_attribute] または #![inner_attribute] のような形式で、 両者の違いは適用される場所です。

  • #[outer_attribute] は、その直後に続くアイテムに適用されます。 アイテムの例としては、関数、モジュール宣言、定数、構造体、enum などがあります。 次の例では、属性 #[derive(Debug)] が構造体 Rectangle に適用されています。

    #![allow(unused)]
    fn main() {
    #[derive(Debug)]
    struct Rectangle {
        width: u32,
        height: u32,
    }
    }
  • #![inner_attribute] は、それを囲むアイテム(通常はモジュールまたはクレート)に適用されます。 言い換えると、この属性は、それが配置されたスコープ全体に適用されるものとして解釈されます。 次の例では、#![allow(unused_variables)] が(main.rs に配置されている場合) クレート全体に適用されています。

    #![allow(unused_variables)]
    
    fn main() {
        let x = 3; // これは通常、未使用の変数に関する警告を出します。
    }

属性は、異なる構文で引数を取ることができます。

  • #[attribute = "value"]
  • #[attribute(key = "value")]
  • #[attribute(value)]

属性は複数の値を持つことができ、複数行に分けることもできます。

#[attribute(value, value2)]


#[attribute(value, value2, value3,
            value4, value5)]