Rust by Example

13.2 メソッド

関数と同様、implでメソッドを実装する際にもジェネリック型特有の記法が必要です。

struct S; // 具象型`S`
struct GenericVal<T>(T,); // ジェネリック型`GenericVal`

// 型パラメータを指定したうえで、GenericValにメソッドを実装
impl GenericVal<f32> {} // `f32`の場合のメソッド
impl GenericVal<S> {} // 上で定義した`S`への実装

// ジェネリック型のまま扱うには`<T>`が先に来る必要がある。
impl <T> GenericVal<T> {}
struct Val (f64,); struct GenVal<T>(T,); // Valに対してimpl impl Val { fn value(&self) -> &f64 { &self.0 } } // ジェネリック型`T`の場合のメソッドをGenValに対して実装 impl <T> GenVal<T> { fn value(&self) -> &T { &self.0 } } fn main() { let x = Val(3.0); let y = GenVal(3i32); println!("{}, {}", x.value(), y.value()); }

See also:

参照を返す関数, impl, struct