13
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

Rustを始めてみた

2017年10月追記

以下の記事は2014年のものです。
いまは、Rust公式ページにもあるようにrustupを入れれば、
nightlyも安定板も切り替えて使えますし、Cargoもとくに
自分で入れなくても勝手に入ります。

はじめに

最近node-ffiやって、libuvに割りと近づいてきたので、libuvつながりのrustを始めてみた。

いきなりGUIを使いたいんだけど

ffiな機構の存在を知る

画像が出せるようなライブラリを探す

node-webcl(node-webglもあるけどw)で知った。glfwというGLUTに取って代わるかもしれないOpenGLのフレームワーク?があり、rustでもこれを使ったものがあり、今回は、これのexampleを動かすところまで辿りつけた。

実践編

Rust本体はNightlyをtarballで入れた

pkg形式はイマイチよくわかっていないので、何が入っているか
分かった気になるtarballを入れようとは決めていたが、
公式でインストルボタンをクリックするとNightlyを進めてきたので、
0.11ではなく、Nightlyを入れた

tarを展開するだけだとエラー

dylibイマイチわからないです。tarを展開して~/local配下に置いて、

rustc --version

としたら、

dyld: Library not loaded: x86_64-apple-darwin/stage1/lib/rustlib/x86_64-apple-darwin/lib/libnative-4e7c5e5c.dylib
  Referenced from: /Users/kjunichi/local/rust-nightly-x86_64-apple-darwin/bin/rustc
  Reason: image not found
Trace/BPT trap: 5

Nightlyだから、今回ハズレだったのかぁと、並列作業してた、FirefoxのNightlyビルドの残念動作をみながら思ったが、続けた。

付属のinstall.shを斜め読みして、挫折して、鵜呑みに実行。

./install.sh

動いた

rustc --version
rustc 0.12.0-pre-nightly (09abbbdaf 2014-09-11 00:05:41 +0000)

CargoというnpmのRust版を知る

git clone https://github.com/bjz/glfw-rs.git
glfw-rs/

Makefileが無い。Cargo.tomlなるファイルが怪しい。

CargoがRustでのメジャーなパッケージ管理システムらしい。

Cargoを入れる

Nightly向けのバイナリまで配っているようなので、行けるかなと思い、githubあらcloneしてCargoを入れてみたら出来た。

git clone https://github.com/rust-lang/cargo
./configure 
make
make install

今度こそglfw-rsを動かす

よくよくglfw-rsのREADME.mdみるとcargoコマンドでの作業が書いてあったw

cargo build
cargo test
./target/title

動いた

rustGlfwTitle.png

まとめ

rustではHello Worldより先にウィンドウを表示出来た。

これで準備ができたので、次は「プログラムでシダを描画する」のRust版を目標に勉強進めよう。

関連記事

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
13
Help us understand the problem. What are the problem?