<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>楽しく学ぶ Rust</title><link>https://yuma.cloud/rust-training/</link><description>Recent content on 楽しく学ぶ Rust</description><generator>Hugo</generator><language>ja</language><atom:link href="https://yuma.cloud/rust-training/index.xml" rel="self" type="application/rss+xml"/><item><title>01. はじめの一歩</title><link>https://yuma.cloud/rust-training/docs/01-getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/01-getting-started/</guid><description>&lt;h1 id="01-はじめの一歩-cargo-と-hello-world"&gt;01. はじめの一歩: cargo と Hello, world!&lt;a class="anchor" href="#01-%e3%81%af%e3%81%98%e3%82%81%e3%81%ae%e4%b8%80%e6%ad%a9-cargo-%e3%81%a8-hello-world" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Rust をインストールして &lt;code&gt;Hello, world!&lt;/code&gt; を動かす&lt;/li&gt;&#10;&lt;li&gt;Rust のビルドツール &lt;strong&gt;Cargo&lt;/strong&gt; の基本コマンドを覚える&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;&lt;strong&gt;Cargo は Rust の「なんでも係」&lt;/strong&gt;。プロジェクト作成・ビルド・実行・テスト・ライブラリ管理を全部ひとりでこなします。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>02. 数当てゲームで全体像</title><link>https://yuma.cloud/rust-training/docs/02-guessing-game/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/02-guessing-game/</guid><description>&lt;h1 id="02-数当てゲームで全体像"&gt;02. 数当てゲームで全体像&lt;a class="anchor" href="#02-%e6%95%b0%e5%bd%93%e3%81%a6%e3%82%b2%e3%83%bc%e3%83%a0%e3%81%a7%e5%85%a8%e4%bd%93%e5%83%8f" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;小さなゲームを作りながら、Rust の主要な要素を &lt;strong&gt;ざっと&lt;/strong&gt; 眺める&lt;/li&gt;&#10;&lt;li&gt;細かい理解は後の章に任せて「こんな感じか」を掴む&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;映画の予告編のような章です。変数・外部クレート・&lt;code&gt;match&lt;/code&gt;・エラー処理・ループが一度に登場します。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>03. 変数・型・関数・制御フロー</title><link>https://yuma.cloud/rust-training/docs/03-basics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/03-basics/</guid><description>&lt;h1 id="03-変数型関数制御フロー"&gt;03. 変数・型・関数・制御フロー&lt;a class="anchor" href="#03-%e5%a4%89%e6%95%b0%e5%9e%8b%e9%96%a2%e6%95%b0%e5%88%b6%e5%be%a1%e3%83%95%e3%83%ad%e3%83%bc" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;不変・可変の変数とシャドーイングを使い分ける&lt;/li&gt;&#10;&lt;li&gt;基本的なデータ型を知る&lt;/li&gt;&#10;&lt;li&gt;「&lt;strong&gt;式&lt;/strong&gt;」と「&lt;strong&gt;文&lt;/strong&gt;」の違いを理解する&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;Rust は「書き換えるつもりなら宣言しておいてね」という言語。そして &lt;strong&gt;ほとんど全部が式（値を返す）&lt;/strong&gt; です。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>04. 所有権</title><link>https://yuma.cloud/rust-training/docs/04-ownership/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/04-ownership/</guid><description>&lt;h1 id="04-所有権-rust-最大の特徴"&gt;04. 所有権: Rust 最大の特徴&lt;a class="anchor" href="#04-%e6%89%80%e6%9c%89%e6%a8%a9-rust-%e6%9c%80%e5%a4%a7%e3%81%ae%e7%89%b9%e5%be%b4" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;所有権の 3 ルールを言えるようになる&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;ムーブ&lt;/strong&gt;・&lt;strong&gt;クローン&lt;/strong&gt;・&lt;strong&gt;コピー&lt;/strong&gt; の違いを理解する&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;値は &lt;strong&gt;一冊の本&lt;/strong&gt;、変数は &lt;strong&gt;持ち主&lt;/strong&gt;。本を誰かに渡したら、自分の手元にはもうありません。持ち主が部屋（スコープ）を出るとき、本は片付けられます。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>05. 参照・借用・スライス</title><link>https://yuma.cloud/rust-training/docs/05-borrowing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/05-borrowing/</guid><description>&lt;h1 id="05-参照借用スライス"&gt;05. 参照・借用・スライス&lt;a class="anchor" href="#05-%e5%8f%82%e7%85%a7%e5%80%9f%e7%94%a8%e3%82%b9%e3%83%a9%e3%82%a4%e3%82%b9" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;所有権を渡さずに値を &lt;strong&gt;借りる&lt;/strong&gt; 方法（参照）を学ぶ&lt;/li&gt;&#10;&lt;li&gt;借用の 2 大ルールを覚える&lt;/li&gt;&#10;&lt;li&gt;スライスで「一部分」を参照する&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;参照は &lt;strong&gt;本の貸し出し&lt;/strong&gt;。読むだけなら何人に貸してもいいけど、書き込みたい人がいるときはその人 1 人だけに貸します。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>06. 構造体とメソッド</title><link>https://yuma.cloud/rust-training/docs/06-structs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/06-structs/</guid><description>&lt;h1 id="06-構造体とメソッド"&gt;06. 構造体とメソッド&lt;a class="anchor" href="#06-%e6%a7%8b%e9%80%a0%e4%bd%93%e3%81%a8%e3%83%a1%e3%82%bd%e3%83%83%e3%83%89" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;構造体（struct）でデータをまとめる&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;impl&lt;/code&gt; でメソッドと関連関数を定義する&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;#[derive(Debug)]&lt;/code&gt; でデバッグ表示する&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;構造体は &lt;strong&gt;名前付きの入れ物&lt;/strong&gt;。&lt;code&gt;impl&lt;/code&gt; でその入れ物に &lt;strong&gt;できること（メソッド）&lt;/strong&gt; を生やします。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>07. enum とパターンマッチ</title><link>https://yuma.cloud/rust-training/docs/07-enums-match/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/07-enums-match/</guid><description>&lt;h1 id="07-enum-とパターンマッチ"&gt;07. enum とパターンマッチ&lt;a class="anchor" href="#07-enum-%e3%81%a8%e3%83%91%e3%82%bf%e3%83%bc%e3%83%b3%e3%83%9e%e3%83%83%e3%83%81" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;データを持てる enum を定義する&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Option&amp;lt;T&amp;gt;&lt;/code&gt; で「値がないかも」を安全に扱う&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;match&lt;/code&gt; / &lt;code&gt;if let&lt;/code&gt; / &lt;code&gt;let else&lt;/code&gt; でパターンマッチする&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;enum は &lt;strong&gt;「このどれか」を表す型&lt;/strong&gt;。&lt;code&gt;match&lt;/code&gt; は &lt;strong&gt;漏れなく場合分けする仕分け機&lt;/strong&gt;。組み合わせると「考え忘れ」がコンパイルエラーになります。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>08. パッケージ・クレート・モジュール</title><link>https://yuma.cloud/rust-training/docs/08-modules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/08-modules/</guid><description>&lt;h1 id="08-パッケージクレートモジュール"&gt;08. パッケージ・クレート・モジュール&lt;a class="anchor" href="#08-%e3%83%91%e3%83%83%e3%82%b1%e3%83%bc%e3%82%b8%e3%82%af%e3%83%ac%e3%83%bc%e3%83%88%e3%83%a2%e3%82%b8%e3%83%a5%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;パッケージ・クレート・モジュールの関係を掴む&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;pub&lt;/code&gt; と &lt;code&gt;use&lt;/code&gt; で公開範囲とパスを管理する&lt;/li&gt;&#10;&lt;li&gt;モジュールを複数ファイルに分ける&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;&lt;strong&gt;パッケージ = 段ボール箱&lt;/strong&gt;、&lt;strong&gt;クレート = 箱の中の製品&lt;/strong&gt;、&lt;strong&gt;モジュール = 製品の中の部屋&lt;/strong&gt;。部屋のドアはデフォルトで閉まっていて、&lt;code&gt;pub&lt;/code&gt; で開けます。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>09. よく使うコレクション</title><link>https://yuma.cloud/rust-training/docs/09-collections/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/09-collections/</guid><description>&lt;h1 id="09-よく使うコレクション"&gt;09. よく使うコレクション&lt;a class="anchor" href="#09-%e3%82%88%e3%81%8f%e4%bd%bf%e3%81%86%e3%82%b3%e3%83%ac%e3%82%af%e3%82%b7%e3%83%a7%e3%83%b3" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;Vec&amp;lt;T&amp;gt;&lt;/code&gt;・&lt;code&gt;String&lt;/code&gt;・&lt;code&gt;HashMap&amp;lt;K, V&amp;gt;&lt;/code&gt; を使いこなす&lt;/li&gt;&#10;&lt;li&gt;文字列が UTF-8 であることの意味を知る&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;&lt;code&gt;Vec&lt;/code&gt; は &lt;strong&gt;伸び縮みする配列&lt;/strong&gt;、&lt;code&gt;String&lt;/code&gt; は &lt;strong&gt;伸び縮みする UTF-8 文字列&lt;/strong&gt;、&lt;code&gt;HashMap&lt;/code&gt; は &lt;strong&gt;キーで引ける辞書&lt;/strong&gt;。3 つともヒープにデータを置く所有型です。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>10. エラー処理</title><link>https://yuma.cloud/rust-training/docs/10-error-handling/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/10-error-handling/</guid><description>&lt;h1 id="10-エラー処理-panic-と-result"&gt;10. エラー処理: panic! と Result&lt;a class="anchor" href="#10-%e3%82%a8%e3%83%a9%e3%83%bc%e5%87%a6%e7%90%86-panic-%e3%81%a8-result" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;回復不能なエラー（&lt;code&gt;panic!&lt;/code&gt;）と回復可能なエラー（&lt;code&gt;Result&lt;/code&gt;）を使い分ける&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;?&lt;/code&gt; 演算子でエラーをスッキリ伝播させる&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;Rust に例外はありません。失敗するかもしれない関数は &lt;strong&gt;戻り値の型で「失敗するかも」と宣言&lt;/strong&gt; します。無視するとコンパイラに注意されます。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>11. ジェネリクスとトレイト</title><link>https://yuma.cloud/rust-training/docs/11-generics-traits/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/11-generics-traits/</guid><description>&lt;h1 id="11-ジェネリクスとトレイト"&gt;11. ジェネリクスとトレイト&lt;a class="anchor" href="#11-%e3%82%b8%e3%82%a7%e3%83%8d%e3%83%aa%e3%82%af%e3%82%b9%e3%81%a8%e3%83%88%e3%83%ac%e3%82%a4%e3%83%88" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;ジェネリクスで型に依存しないコードを書く&lt;/li&gt;&#10;&lt;li&gt;トレイトで「共通の振る舞い」を定義・実装する&lt;/li&gt;&#10;&lt;li&gt;トレイト境界で型に条件を付ける&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;ジェネリクスは &lt;strong&gt;型の穴埋め問題&lt;/strong&gt;、トレイトは &lt;strong&gt;資格試験&lt;/strong&gt;。「この関数は『比較できる』資格を持つ型ならなんでも受け付けます」と書けます。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>12. ライフタイム</title><link>https://yuma.cloud/rust-training/docs/12-lifetimes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/12-lifetimes/</guid><description>&lt;h1 id="12-ライフタイム"&gt;12. ライフタイム&lt;a class="anchor" href="#12-%e3%83%a9%e3%82%a4%e3%83%95%e3%82%bf%e3%82%a4%e3%83%a0" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;ライフタイムが &lt;strong&gt;何を防いでいるのか&lt;/strong&gt; を理解する&lt;/li&gt;&#10;&lt;li&gt;関数・構造体にライフタイム注釈を付けられるようになる&lt;/li&gt;&#10;&lt;li&gt;省略規則を知り、書かなくていい場面を見分ける&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;ライフタイムは &lt;strong&gt;参照の賞味期限ラベル&lt;/strong&gt;。「この戻り値は、引数たちの賞味期限のうち短い方まで有効です」とコンパイラに伝えます。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>13. テストを書く</title><link>https://yuma.cloud/rust-training/docs/13-testing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/13-testing/</guid><description>&lt;h1 id="13-テストを書く"&gt;13. テストを書く&lt;a class="anchor" href="#13-%e3%83%86%e3%82%b9%e3%83%88%e3%82%92%e6%9b%b8%e3%81%8f" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;#[test]&lt;/code&gt; と &lt;code&gt;assert!&lt;/code&gt; 系マクロでユニットテストを書く&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;cargo test&lt;/code&gt; の便利なオプションを知る&lt;/li&gt;&#10;&lt;li&gt;ユニットテストと結合テストの違いを理解する&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;Rust ではテストは &lt;strong&gt;言語とツールに標準装備&lt;/strong&gt;。追加ライブラリなしで、コードのすぐ隣にテストを書けます。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>14. クロージャとイテレータ</title><link>https://yuma.cloud/rust-training/docs/14-closures-iterators/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/14-closures-iterators/</guid><description>&lt;h1 id="14-クロージャとイテレータ"&gt;14. クロージャとイテレータ&lt;a class="anchor" href="#14-%e3%82%af%e3%83%ad%e3%83%bc%e3%82%b8%e3%83%a3%e3%81%a8%e3%82%a4%e3%83%86%e3%83%ac%e3%83%bc%e3%82%bf" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;クロージャ（無名関数）を書き、環境の捕捉を理解する&lt;/li&gt;&#10;&lt;li&gt;イテレータのアダプタをつなげてデータを処理する&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;クロージャは &lt;strong&gt;周りの変数を持ち歩ける小さな関数&lt;/strong&gt;。イテレータは &lt;strong&gt;データのベルトコンベア&lt;/strong&gt; で、&lt;code&gt;filter&lt;/code&gt; や &lt;code&gt;map&lt;/code&gt; という加工機を並べて最後に &lt;code&gt;collect&lt;/code&gt; で箱詰めします。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>15. スマートポインタ</title><link>https://yuma.cloud/rust-training/docs/15-smart-pointers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/15-smart-pointers/</guid><description>&lt;h1 id="15-スマートポインタ"&gt;15. スマートポインタ&lt;a class="anchor" href="#15-%e3%82%b9%e3%83%9e%e3%83%bc%e3%83%88%e3%83%9d%e3%82%a4%e3%83%b3%e3%82%bf" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;Box&amp;lt;T&amp;gt;&lt;/code&gt; でヒープに値を置く&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Rc&amp;lt;T&amp;gt;&lt;/code&gt; で 1 つの値を複数で所有する&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;RefCell&amp;lt;T&amp;gt;&lt;/code&gt; で「内部可変性」を使う&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;スマートポインタは &lt;strong&gt;おまけ機能付きのポインタ&lt;/strong&gt;。&lt;code&gt;Box&lt;/code&gt; は「ヒープに置く」、&lt;code&gt;Rc&lt;/code&gt; は「みんなで持つ（参照カウント）」、&lt;code&gt;RefCell&lt;/code&gt; は「借用チェックを実行時に回す」機能付きです。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>16. 恐れるな！並行性</title><link>https://yuma.cloud/rust-training/docs/16-concurrency/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/16-concurrency/</guid><description>&lt;h1 id="16-恐れるな並行性"&gt;16. 恐れるな！並行性&lt;a class="anchor" href="#16-%e6%81%90%e3%82%8c%e3%82%8b%e3%81%aa%e4%b8%a6%e8%a1%8c%e6%80%a7" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;スレッドを起動して &lt;code&gt;move&lt;/code&gt; クロージャでデータを渡す&lt;/li&gt;&#10;&lt;li&gt;チャネルでメッセージをやりとりする&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Arc&amp;lt;Mutex&amp;lt;T&amp;gt;&amp;gt;&lt;/code&gt; で状態を共有する&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;並行プログラミングのバグ（データ競合）は、普通は実行してみないと見つかりません。Rust では所有権のおかげで、コンパイラが事前に止めてくれます。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>17. async/await 入門</title><link>https://yuma.cloud/rust-training/docs/17-async/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/17-async/</guid><description>&lt;h1 id="17-asyncawait-入門"&gt;17. async/await 入門&lt;a class="anchor" href="#17-asyncawait-%e5%85%a5%e9%96%80" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;async&lt;/code&gt; / &lt;code&gt;await&lt;/code&gt; と &lt;code&gt;Future&lt;/code&gt; の関係を理解する&lt;/li&gt;&#10;&lt;li&gt;ランタイム（tokio）を使って非同期コードを動かす&lt;/li&gt;&#10;&lt;li&gt;スレッドとの使い分けを知る&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;async は &lt;strong&gt;ラーメン屋の呼び出しベル&lt;/strong&gt;。注文（リクエスト）したら席で待ち続けるのではなく、ベルが鳴るまで他のことをしていられます。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>18. 発展トピック</title><link>https://yuma.cloud/rust-training/docs/18-advanced/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://yuma.cloud/rust-training/docs/18-advanced/</guid><description>&lt;h1 id="18-発展トピック"&gt;18. 発展トピック&lt;a class="anchor" href="#18-%e7%99%ba%e5%b1%95%e3%83%88%e3%83%94%e3%83%83%e3%82%af" aria-label="Link"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;h2 id="-この章のゴール"&gt;🎯 この章のゴール&lt;a class="anchor" href="#-%e3%81%93%e3%81%ae%e7%ab%a0%e3%81%ae%e3%82%b4%e3%83%bc%e3%83%ab" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;トレイトオブジェクトで動的ディスパッチを使う&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;unsafe&lt;/code&gt;・マクロ・高度な型の存在を知る&lt;/li&gt;&#10;&lt;li&gt;次に何を学ぶかの地図を手に入れる&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="-ひとことで言うと"&gt;💡 ひとことで言うと&lt;a class="anchor" href="#-%e3%81%b2%e3%81%a8%e3%81%93%e3%81%a8%e3%81%a7%e8%a8%80%e3%81%86%e3%81%a8" aria-label="Link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class=''&gt;&#10;&lt;p&gt;ここまでで Rust の土台は完成です 🎉 この章は「こんな道具もあるよ」という &lt;strong&gt;道具箱のカタログ&lt;/strong&gt;。必要になったときに思い出せれば十分です。&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item></channel></rss>