歩いたら休め

If the implementation is easy to explain, it may be a good idea.

【Rust】Rustで数値計算プロジェクトを試す その1

これから伸びていって「今はPython(numpy)でやっているような数値計算もRustで、高速に抽象的に書けるようになるんじゃないかな」と思っています。

github.com

今まで何度かトライしたものの、「お前まだチュートリアルやってるのかよ」ってプログラミング友達に馬鹿にされる毎日でした。ひとまず使い方として想定する「数値計算プログラム」をRustで書いてみて、モチベーション保ちつつ実装していく作戦です。

Haskellと同様にtraitで数学の抽象的な概念を扱えるらしいし、C++の代替言語を目指しているだけあってGC等のプログラマーがコントロールできない遅い処理が排除されています(その分lifetimeの管理が難しいのですが…)。

今日はひとまず、「配列を破壊的変更してprintする」ことをしました。初歩的ですが、ひとまず第一歩です。

$ rustup --version
rustup 1.16.0 (beab5ac2b 2018-12-06)

コードはこんな感じ。

fn main() {
    let mut v: Vec<i32> = vec![1, 2, 3];

    println!("v = {:?}", v);

    update_vector(&mut v);
    // debug print
    println!("v = {:?}", v);
}

fn update_vector(v: &mut Vec<i32>) {
    v.push(1);
    v[0] = 4;
    println!("v = {:?}", v);
}