Rust by Example

5.3 エイリアス

type文を使用することで既存の型に新しい名前(alias)を付けることができます。その場合、名前はCamelCaseでなくてはなりません。さもなくばコンパイラがエラーを出します。唯一の例外はusizef32のようなプリミティブ型です。

// `NanoSecond` を `u64`の別名として使用する。 type NanoSecond = u64; type Inch = u64; // 警告を抑えるアトリビュートを使用。 #[allow(non_camel_case_types)] type u64_t = u64; // TODO ^ アトリビュートを使用しない場合、どうなるか見てみましょう。 // こちらも警告を抑えるアトリビュート #[allow(trivial_numeric_casts)] fn main() { // `NanoSecond` = `Inch` = `u64_t` = `u64`. let nanoseconds: NanoSecond = 5 as u64_t; let inches: Inch = 2 as u64_t; // 型のエイリアスは、元の型をより型安全にしてくれる **わけではない** ことに注意しましょう。 // なぜならば、エイリアスは新たな型を定義している **わけではない** からです。 println!("{} nanoseconds + {} inches = {} unit?", nanoseconds, inches, nanoseconds + inches); }

このようにエイリアスを付ける一番の理由はタイプ量を減らすことです。例えばIoResult<T>型はResult<T, IoError>の別名です。

See also:

アトリビュート