KOKI

rust

rustのクロージャを理解する

クロージャをひとことで 周りの環境の変数をキャプチャ出来る関数 周り環境の変数とは? 周りの環境の変数と書きましたが、その場所から普通にアクセスできる変数のことです。以下の例のように同じスコープ内にある変数bをクロージャを使ってキャプチャで...
rust

rustのユニットについて理解する

ユニットをひとことで 「特に何もない」を表現する記号 ユニットを返す関数 ユニットを返す関数を書いてみます。 fn hello() -> () { println!("hello"); } fn main() { hello(); } $ ...
rust

トレイトオブジェクトについて理解する

トレイトオブジェクトをひとことで あるトレイトを実装した型のインスタンスを指すもの トレイトオブジェクトを図示してみる 例えば、「Drinkable(飲める)」という特性を持った(トレイトを実装した)インスタンスを考えてみます。これを図示し...
rust

rustのBoxについて理解する

Boxをひとことで 値をヒープ領域に置く Boxの仕組み Boxの仕組みを理解するために、以下のようなコードを書いてみます。 fn main() { let a = Box::new(10); let b = 10; println!("{...
rust

rustを使ってAtCoder茶色になりました!

この記事について AtCoderでは色が変わると記事を書くことが許されるということで、いわゆる色変記事を書きます!「rustを使って」と書いていますが、実際にrustを使ったのは直近6回です。6回も使っていれば「rustを使って」と書いても...
rust

【rust】スマートポインタってなに?

スマートポインタを一言で 値へのアドレスとメタデータを持ち、その値の所有権を持つもの。 スマートポインタの代表例 Vec<T> String スマートポインタとして見るVec<T> Vec<T>は代表的なスマートポインタです。以下のようなポ...
rust

トレイトについて理解する

この記事で書くこと トレイトとは 引数としてトレイトを使う 戻り値としてトレイトを使う トレイト(trait)とは traitは特性という意味の英語です。 rustにおいては、トレイトとは「メソッドを集めたもの」です。このトレイトを構造体に...
rust

rustで使える(?)crate一覧【2023年版】

言語アップデートについて atcoderで、言語アップデートが行われる予定のようです。 現在はまだ準備段階のようです。 上記リンク先のスプレッドシートには以下の記載があります。 1.1 今後の進め方(2023/01/31) "ある時点でシー...
rust

rustのライフタイムについて理解する

この記事について この記事ではrustのライフタイムについて、学んだことをまとめています。 ライフタイムを理解するには、「参照」と「ジェネリクス」について理解している必要があります。「参照」については別に記事を書いていますので、こちらをご参...
rust

rustでプロジェクトを管理する方法【パッケージ、クレート、モジュール】

この記事で書くこと rustのプロジェクトを管理する際に使われる概念について、学んだ内容をまとめました。以下のことがわかるように書きます。 パッケージとは何か クレートとは何か モジュールとは何か パッケージ、クレート、モジュールを使ったプ...