タプル構造体
フィールド名が重要でない場合は、タプル構造体を使用できます。
struct Point(i32, i32);
fn main() {
let p = Point(17, 23);
println!("({}, {})", p.0, p.1);
}
これは多くの場合、単一フィールド ラッパー(ニュータイプと呼ばれます)に使用されます。
struct PoundsOfForce(f64);
struct Newtons(f64);
fn compute_thruster_force() -> PoundsOfForce {
todo!("Ask a rocket scientist at NASA")
}
fn set_thruster_force(force: Newtons) {
// ...
}
fn main() {
let force = compute_thruster_force();
set_thruster_force(force);
}
This slide should take about 10 minutes.
- ニュータイプは、プリミティブ型の値に関する追加情報をエンコードする優れた方法です。次に例を示します。
- 数値はいくつかの単位で測定されます(上記の例では
Newtons)。 - この値は作成時に検証に合格したため、
PhoneNumber(String)またはOddNumber(u32)を使用するたびに再検証する必要はありません。
- 数値はいくつかの単位で測定されます(上記の例では
- ニュータイプの 1 つのフィールドにアクセスして、
Newtons型にf64の値を追加する方法を示します。- Rust では通常、不明瞭なこと(自動ラップ解除や、整数としてのブール値の使用など)は好まれません。
- 演算子のオーバーロードについては、3 日目(ジェネリクス)で説明します。
- この例は、マーズ クライメイト オービターの失敗を参考にしています。