Rust

Vecの実装 in Rust - Drain

前回 に引き続き、 The Rustnomicon の Implementing Vec をやってみる。 コード全体は GitHub上のリポジトリ にある。 rustcのバージョンは以下のとおり。 $ rustc --version rustc 1.25.0-nightly (27a046e93 2018-02-18) Drain

Vecの実装 in Rust - RawVec

前回 に引き続き、 The Rustnomicon の Implementing Vec をやってみる。 コード全体は GitHub上のリポジトリ にある。 rustcのバージョンは以下のとおり。 $ rustc --version rustc 1.25.0-nightly (27a046e93 2018-02-18) RawVec

Vecの実装 in Rust - IntoIter

前回 に引き続き、 The Rustnomicon の Implementing Vec をやってみる。 コード全体は GitHub上のリポジトリ にある。 rustcのバージョンは以下のとおり。 $ rustc --version rustc 1.25.0-nightly (27a046e93 2018-02-18) IntoIter

Vecの実装 in Rust - Insert & Remove

前回 に引き続き、 The Rustnomicon の Implementing Vec をやってみる。 コード全体は GitHub上のリポジトリ にある。 rustcのバージョンは以下のとおり。 $ rustc --version rustc 1.25.0-nightly (27a046e93 2018-02-18) Insert

Vecの実装 in Rust - Deref

前回 に引き続き、 The Rustnomicon の Implementing Vec をやってみる。 コード全体は GitHub上のリポジトリ にある。 rustcのバージョンは以下のとおり。 $ rustc --version rustc 1.25.0-nightly (27a046e93 2018-02-18) Deref

Vecの実装 in Rust - メモリ解放

前回 に引き続き、 The Rustnomicon の Implementing Vec をやってみる。 コード全体は GitHub上のリポジトリ にある。 rustcのバージョンは以下のとおり。 $ rustc --version rustc 1.25.0-nightly (27a046e93 2018-02-18) Deallocating

Vecの実装 in Rust - Push & Pop

前回 に引き続き、 The Rustnomicon の Implementing Vec をやってみる。 コード全体は GitHub上のリポジトリ にある。 rustcのバージョンは以下のとおり。 $ rustc --version rustc 1.25.0-nightly (27a046e93 2018-02-18) Push

Vecの実装 in Rust - メモリ確保

前回 に引き続き、 The Rustnomicon の Implementing Vec をやってみる。 コード全体は GitHub上のリポジトリ にある。 rustcのバージョンは以下のとおり。 $ rustc --version rustc 1.25.0-nightly (27a046e93 2018-02-18) Allocating

シェルの実装 in Rust

概要 Rustで簡単なシェルを書きました。 コードは github にあります。 インタラクティブでのみ動作し、リダイレクトとパイプが使えます。 ビルトインコマン

Learning Rust - Lifetime

Syntax and Semantics Lifetimes ずっと後回しにしてきましたが、今回はlifetimeを扱います。 Rustのlifetimeは、リソースの寿命に名前をつけて明確にし、

Learning Rust - Associated Types

Syntax and Semantics Associated Types いきなりですが、抽象的なグラフに関するtraitを作りたいとします。 例えば以下のように書きますよね。 Nがnode, Eがedgeです

Learning Rust - Misc.

Syntax and Semantics Rustのsyntaxとsemanticsについて、いくつか細かい事項をまとめて紹介します。 const and static Const変数とstatic変数は、

Learning Rust - Closures

Syntax and Semantics Closures Rustにも言語レベルでclosureの機能があります。 今回はそのclosureを学びます。 Syntax まず、closureの基本的なsynt

Learning Rust - Trait Objects

Syntax and Semantics Trait objects 関数に多相性をもたせるときは、実際にその関数はなんの型について実行されているのか判定され、 適切なバージョンの関数が呼ばれなければい

Learning Rust - If let

Syntax and Semantics if let if letは、ある種のパターンマッチのwrapperです。 Overheadをなくす効果もあるそうです。 match option { Some(x) => { foo(x) }, None => {}, } のよう

Learning Rust - Traits

Syntax and Semantics Traits Traitは、Haskellでいう型クラスであり、 C++でいうコンセプト(C++14時点では提案のみっぽいですが)です。 ジェネリクス

Learning Rust - Generics

Syntax and Semantics 今回はRustのジェネリクスのはなしです。 ジェネリクスがでてくると、佳境に入った気がしますね。 私はC++でテンプレートに慣れているので

Learning Rust - Method Syntax

Syntax and Semantics Method syntax Rustでのメソッドのsyntaxについて学びます。 まず、Rustにはclassはありません。 が、オブジェクト指向プログラミングは

Learning Rust - Structs and Enums

Syntax and Semantics 今回は、型を組み合わせて新しい型を作る方法を扱います。 Structs まずはstructです。 次のコードを見ればだいたいわかりますね。 struct Point { x: i32, y: i32,

Learning Rust - Ownership

Syntax and Semantics 今回扱うのは、Rustのリソース管理システムであるownershipの概念です。 このシステムによる解析はすべてコンパイル時におこなわれ

Learning Rust - Guessing Game

公式ドキュメント にしたがってRustを学んでいこうと思います。 Learn Rust Rustのoverview的なチュートリアルです。 Guessing Game Dining Philosophers Rust Inside Other Language という3