kdnakt blog

hello there.

Rust dojo第37回を開催した

第37回です。前回はこちら。

kdnakt.hatenablog.com

 

 

[第37回の様子]

2022/04/27に第37回を開催した。

 

内容としてはRust By Example 日本語版の「14. ジェネリクス」、「14.1. 関数」、「14.2. メソッド」に取り組んだ。

 

参加者は確か6人くらい。安定していて良い。

 

[学んだこと]

// ジェネリック関数の例
// 直前でTという1文字の具象型が定義されていても<T>によってジェネリクスとなる
fn foo<T>(arg: T) { ... }
#[derive(Debug)]
struct SingleGen<T>(T);

fn main() {
    // 明示的な型指定
    let _char: SingleGen = SingleGen('a');
    println!("{:?}", _char);
    
    // 暗黙の型指定
    let _i32  = SingleGen(6);
    println!("{:?}", _i32);
}
struct SGen<T>(T);

fn generic<T>(_s: SGen<T>) {}

fn main() {
    generic::<char>(SGen('a'));
}
struct GenericVal<T>(T); 

// f32型の場合のメソッドを定義 impl GenericVal<f32> {}
  • ジェネリクスのままメソッドを実装する場合はimpl <T>〜のように書く
struct GenVal<T> {
    gen_val: T,
}

impl<T> GenVal<T> {
    fn value(&self) -> &T {
        &self.gen_val
    }
}

fn main() {
    let y = GenVal { gen_val: 3i32 };

    println!("{}", y.value());
}

 

[まとめ]

モブプログラミングスタイルでRust dojoを開催した。

ジェネリクス便利そうだけど、ターボフィッシュ構文に慣れない感じがする...。

 

今週のプルリクエストはこちら。

github.com