2017年10月追記

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

はじめに

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

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

ffiな機構の存在を知る

    The Rust Foreign Function Interface Guide

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

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版を目標に勉強進めよう。

関連記事

    • RustでFaceTime HDカメラやWebカメラを使う

 

    • libtrusterdをRustで動かした

 

    • Rustでコマンドラインアプリでキーが押されたかの判定しつつ、別の処理も進めるには

 

    • RustでWebカメラの映像をコマンドプロンプトに出すコマンドを作った

 

    • RustでGoのライブラリを使うときのCargoのbuild.rsの書き方

 

    2018年版、Rustで多次元配列を使うには
广告
将在 10 秒后关闭
bannerAds