Rust のポインタ

rust が提供するポインタは、以下の3つがあるらしい。

  • reference
  • Box
  • Rc/Arc

また、基本的なルールとして、リーダブル(immutable)なポインタは同時に複数作れて、ライタブル(mutable)なポインタは一度に一つしか作れない。 これをownershipとかいうらしい。 複数の人がかけたら、値が不定になるからそれを防ぐためのようだ。

3つのポインタはC++な人には、以下の対応付けで考えればわかりやすい。

rust c++
reference reference
Box std::unique_ptr
Rc/Arc std::shared_ptr

Rc と Arc の違いは、thread と組み合わせられるかどうか。 atomically reference counted の略らしい。 C++ の shared_ptr は thread 対応なのでカウンタのロックが必要でパフォーマンスが云々みたいな話があるが、 rust は用途別に用意したようだ。

rust 始めます

新年になったし、そろそろ1.0が近いらしいので、Rust 始めます。

まずは環境設定から。 手元の環境は、arch linuxなのでpacmanでさくっと入る。

$ sudo pacman -S rust

エディタはemacsなのでpackage.elでこれまたさくっと入る。

  • rust-mode
  • flycheck
  • quickrun

あとはguideでもやろうかと。

※追記 guide で cargo が必要になったので、追加インストール。 pacaur を使っているが、yaourt なり makepkg なりお好みで。

$ pacaur -S cargo-nightly-bin