Rust by example has moved! Its new home is at https://doc.rust-lang.org/stable/rust-by-example. This website is sponsored by JOJOChips.com.
$ # 本体インストール $ cargo install racer $ # racerのためにRustのソースコードを追加 $ rustup component add rust-src $ # パスの確認 $ echo ~/.multirust/toolchains/*/lib/rustlib/src/rust/src /Users/owner/.multirust/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src $ # パスを追加 $ echo "export RUST_SRC_PATH='$(echo ~/.multirust/toolchains/*/lib/rustlib/src/rust/src)'" >> ~/.profile $ # インストールチェック $ bash -l $ racer co
はじめに 使い方を学ぶのに、プロジェクトトップページの説明 と "Introduction to nom: a parsing framework written in Rust" という英語記事が参考になりました。 ここでは上記英語記事に倣って Hello, world! から始めつつ、簡単な計算機の例を解説します。 執筆時点では Rust は 1.13 で、nom は 1.2.4 です。 nom では楽に記述できるようにするためにマクロが多用されており、ソースコードを読むことでマクロの勉強になります。Rust のマクロの記述方法については「Rustのマクロを覚える」という記事を書きましたので参考にしてください。 特徴 lex & yacc (flex & bison) などと違い、書式ファイルを別に用意することなく、Rust のソースコードの中にルールを記述してパーサ関数を生成します。
はじめに Rust のドキュメントを読んだり実際に動かしたりして理解したことをまとめていたら1、マクロの説明だけでもかなり長くなりそうなので、1つの記事にしてみました。 マクロには以下のデメリットがあるため、一般的にはあまり利用しない方がいいと言われます。 コードが理解しづらい 良いマクロを書くのは難しい コンパイルエラーは展開後のコードで起こるので、原因が分かり難い C/C++ のマクロはコンパイラとは別に用意されたプリプロセッサにより、構文を解釈しない単純な文字列置換が行われます。そのため注意して利用しないと意図しない動作を起こすことがあります2。一方、Rust のマクロはそのような問題が起こらない仕組みになっています。 なお「“本物のマクロ”でCのコード行数を半分に!」という記事によれば、「Programming Clojure」(Stuart Halloway著)に以下の警告が書い
追記: 2018-12-07 Rust2018 の初期リリースである 1.31.0 から1 rustup 経由での Clippy のインストールが可能になっています2。nightly チャンネルに切り替えたり clippy 自体をソースからインストールする必要はもはやありません。次のように rustup 経由で clippy をインストールするようにしてください。 その他にも本記事で記載されている情報は古くなってしまっている部分が多いので、必ず公式リポジトリのREADMEなどを参照するようにしてください。 https://github.com/rust-lang/rust-clippy (追記おわり) rust-clippy の存在自体は以前から知っていたのですが、なんとなく食わず嫌いのまま放置してしまっていたので、作業記録を兼ねこの機会に紹介しようと思います。 参考: https://g
cargo-edit について cargo-edit の README.md をベースに簡単に日本語でまとめています。 ※ 執筆時点の cargo-edit のバージョンは cargo-edit-0.1.3 です。 cargo は Rust の強力なツールの一つで、パッケージの取得、ビルドといった機能を持っています。 パッケージの追加や削除といった作業は Cargo.toml を編集して行えます。 管理するパッケージが増えるにつれ、依存解決やバージョンの変更などを行いたくなる場合、ファイルの編集というインターフェースはエディタで開くという手間もあり面倒に感じることが多くなるでしょう。 cargo-edit はそれを解決してくれるツールで、パッケージの追加・削除・確認を行うことができます。 cargo-edit: https://github.com/killercup/cargo-edit
概要 最近Rustの話をよく聞くようになったので、どんなものか触ってみた。 Rust勉強してみたー前半戦の続き。 初心者にとって、前半戦は天国で後半戦は地獄。 はじめに Rustバージョン Rustのバージョンは変わらずrustc 1.10.0 (cfcb716cf 2016-07-03)です。 開発環境 勉強の流れで必要になった+便利な機能にあやかりたくなったので、cargoを導入しました。 といっても、公式インストーラでRust入れた場合は勝手に入っているとのことで、 確認してみたら確かに入っていました。 バージョンはcargo 0.11.0-nightly (259324c 2016-05-20)です。 それとcargo-editも導入してみました。上級者っぽく見えるかなって思って。 この記事を参考にしました。 参考サイト 以下の通り。その他、前記事コメント欄で教えていただいたサイト
概要 最近Rustの話をよく聞くようになったので、どんなものか触ってみた。前半戦。後半戦も後日書きます。 バージョンは1.10.0でCargoは使っていない。頑張ってコマンドプロンプトでrustcしてた。IDEはよ。 勉強に使ったサイトは以下。あとは適当にググりながらやった。 プログラミング言語Rust Rust Documentation(英語。つらい。) よくよく見直したら、以下の解説に類似した書き方をしている所が多かったので、参考にした所として追加しておきます。 Rustのポインタ(所有権・参照)・可変性についての簡単なまとめ 前半戦はプログラミング言語Rustの4.1~4.15と3.1をやりました。 軽く構文を知ってから実際に簡単なゲームを作った、という流れ。 注意:実装しているときに引っかかったことだけ書くので、言語の強みとか記述方法とかは上記サイトを見てください。 後半戦はこち
Reader Note: This article aims to provide some technical insight into the paradigm shifts I’ve been exposed to while researching and learning about the Rust programming language when it comes to concurrency. After spending 3.5 years well-vested in the Go programming language, this is my attempt to share these insights and I encourage you; the reader, to also explore these new insights that Rust pr
宣伝 つい先日(2016/07/07)、Rust 1.10がリリースされました。 panic!の挙動をunwindからabortにできるコンパイルオプションが加わったり、他言語から呼び出せるdylibを作成できるようになったりしているようです。 Rustの文献 現時点でRustを勉強しようとするなら、やはり一番の情報源は公式ドキュメントです。というか他に使えそうな情報源がないです。オライリー(英語)のRust本が出るのも今年の12月のようです。 公式ドキュメントについては日本語訳なさっている方がいらっしゃり、頭が上がりません。 電子書籍版 ところで、英語版のドキュメントには電子書籍版があり、スマホなりタブレットなり電子書籍端末なりにぶちこんで気軽に見る事ができるようになっています。 当然の事ながら、日本語訳版には電子書籍版はありません。 ところでこの電子書籍版、なんとGithubでソースと
#2 に続いて Rust のドキュメントをぼちぼち読んでます。 このブログ記事はメモと感想程度のものですので、詳細は各見出しの下のリンク先を見てください。 今回は構造体とか列挙型とかメソッドとかトレイトとかそこら辺のオブジェクト指向っぽい部分 (の途中まで) を読みました。 パターンマッチとか文字列とかも出てきました。 構造体 (Structs) Structs // こういう感じで定義して、 struct Point { x: i32, y: i32, } // こういう感じでインスタンスを生成。 let origin = Point { x: 0, y: 0 }; // `..` に続けて別のインスタンスを指定すると、残りのフィールドにそのインスタンスの値を渡せるぽい。 let x1 = Point { x: 1, .. origin }; Tuple に名前を付けたような Tuple
Lately I’m writing lots of Rust, and I’m particularly interested in systems programming on unix. I’ve been using and contributing to a library called nix1, whose mission is to provide ‘Rust friendly bindings to *nix APIs’. In this blog post, I hope to convince you that you might want to reach for Rust and nix the next time you need to do some unix systems programming, especially if you aren’t flue
「Rust 入門してる #1」 に続き、ぼちぼちと Rust を学んでます。 今日は所有権システムと可変性についてのメモです。 4 月 14 日に Rust 1.8 がリリースされたので、バージョン 1.8 のドキュメントを読んでます。 *1 所有権システムについては下記の 3 ページを読みました。 Ownership References and Borrowing Lifetimes 可変性については次のページ。 Mutability 基本的にはそんなに難しいことは書かれてないですが、後で説明される内容が出てきたり説明があまりうまくなかったりで理解が難しい感じがしますね。 まあざっくりと理解して読み進めていけば良さそうです。 所有権システム (Ownership system) Rust の最も独特で感動的な機能であり、Rust 開発者はこれに精通すべきとのこと。 メモリ安全がこの機能
最近 Rust を学び始めました。 まだちまちま構文を追っているところですが、ドキュメントがしっかりしていて学びやすい印象です。 (手元では、現在の最新の安定板である Rust 1.7 を使っています。) The Rust Programming Language Web 上で実行できる環境も提供されています。 Rust Playground 進捗 (4.1 節から 4.6 節まで) とりあえず変数結合 (variable bindings) から初めて、関数やプリミティブ型、コメント、if やループといった制御構文あたりをざっと見てみました。 Variable Bindings Functions Primitive Types Comments if Loops まだここら辺はそんなに特徴的な部分はないですね。 char 型の保持する値が Unicode スカラ値である、とか、例外によ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く