Install

$ curl -sSf https://static.rust-lang.org/rustup.sh | sh

確認

$ rustc --version
rustc 1.9.0 (e4e8b6668 2016-05-18)

$ cargo --version
cargo 0.10.0-nightly (10ddd7d 2016-04-08)

Editorの機能を使うためにソースコードもダウンロードします。

https://www.rust-lang.org/downloads.html
ここからsourceをクリックしてダウンロードします。
ダウンロードしたら解凍した後に適当な場所へ移動します。

$ mkdir -p /usr/local/src
$ mv ~/Downloads/rustc-1.9 /usr/local/src

Editor

個人的な好みでVisual Studio Code(以下VSC)を使います。
Golang,PythonもVSCで書いてますが拡張が使いやすいのでオススメです。
他のEditor使いたい場合は調べてください・・・!

ext installで拡張Rusty Codeのinstall

racerのinstall

$ cargo install racer
(3~5分かかります...)

RUST_SRC_PATHに先ほどダウンロードしたソースコードのPATHを指定します。

export RUST_SRC_PATH=/usr/local/src/rustc-1.9/src

動作確認します。

$ racer complete std::io::B
MATCH BufReader,48,11,/usr/local/src/rustc-1.9.0/src/libstd/io/buffered.rs,Struct,pub struct BufReader<R>
MATCH BufWriter,300,11,/usr/local/src/rustc-1.9.0/src/libstd/io/buffered.rs,Struct,pub struct BufWriter<W: Write>
MATCH BufRead,1200,10,/usr/local/src/rustc-1.9.0/src/libstd/io/mod.rs,Trait,pub trait BufRead: Read
MATCH Bytes,1528,11,/usr/local/src/rustc-1.9.0/src/libstd/io/mod.rs,Struct,pub struct Bytes<R>

rustfmtのinstall

$ cargo install rustfmt
(3~5分かかります...)

動作確認用にコード用意します。

$ cd /path/to/develop/rust
$ cargo new hello_world --bin
$ cd hello_world;code ./
(codeでVSC開く設定をしていない場合は普通に開いてください)

hello_world/srcに以下のコードが生成されているはずです。

fn main() {
    println!("Hello, World!");
}

動作確認します。

$ cargo fmt
(何も出力されなければOK)

editorを開いたまま⌘ + ,で`setting.jsonを編集します。

{
  //-------- Rust configuration
  "rust.racerPath": "$HOME/.cargo/bin/racer",
  "rust.rustLangSrcPath": "/usr/local/src/rustc-1.9.0/src",
  "rust.rustfmtPath": "$HOME/.cargo/bin/rustfmt",
  "rust.cargoPath": "/usr/local/bin/cargo",
  "rust.cargoHomePath": null, // Path to Cargo home directory, mostly needed for racer. Needed only if using custom rust installation.
  "rust.formatOnSave": false, // Turn on/off autoformatting file on save (EXPERIMENTAL)
  "rust.checkOnSave": false, // Turn on/off `cargo check` project on save (EXPERIMENTAL)
  "rust.checkWith": "build" // Specifies the linter to use. (EXPERIMENTAL)
}

ここまでで標準crateのautocompleteが聞くようになると思います。
コードに依存しているcrateもuser hogehoge::HOGEまで書けばautocomplete聞いているように感じます。

他のcrateを使用する場合

cargoというpackage managerを使用していきます。
cargo newをした場合、Cargo.tomlが生成されるのでこれを編集します。

[package]
name = "hello_world"
version = "0.1.0"
authors = [""]

// 追加
[dependencies]
time = "0.1.35"
regex = "0.1.71"

cargo buildして依存しているcrateをダウンロードします。
割と時間かかるのがネックですねー・・・

パッケージを使用して先ほどのコードを修正します。

extern crate regex;
extern crate time;

use regex::Regex;

fn main() {
    let re = Regex::new(r"^\d{4}-\d{2}-\d{2}$").unwrap();
    println!("Did you date match? {}", re.is_match("2016-05-28"));
    let now = time::now();
    println!("It is {} now.", now.rfc3339());
}

実行してみます。

$ cargo run
   Compiling hello_world v0.1.0
     Running `target/debug/hello_world`
Did you date match? true
It is 2016-05-28T22:45:16+09:00 now.

良さそうです。

まとめ

昔よりドキュメントなども整備されているので、始め時かなと思いました。

广告
将在 10 秒后关闭
bannerAds