Yomiage
メニュー

#rust実践講座

20 件の記事

すべての記事
並び替えを変更 更新日時 / 降順
aiの歴史ai倫理ai法務g検定haskelljavajava実践講座pythonpython実践講座rustrust実践講座シフト演算ド・モルガンの法則プログラミングベン図人工知能代数公式過去問解説命題命題論理型と設計基数基数変換基本情報技術者基礎文法基礎理論学習ガイド学習ロードマップ実践技術応用情報技術者情報処理技術者試験数値表現数学数理統計機械学習浮動小数点深層学習真理値表社会実装算術演算総合演習補数試験対策誤差論理演算集合離散数学
投稿者: しゅりりん

Rust実践講座 00:全20回の目次と学び方

Rustを初めて触る段階から、小さなアプリを設計・テスト・保存・配布できる段階へ進む全20回の講座です。各回には目的、実行例、結果の読み方、練習と解答、公式資料があります。 この講座の前提 Rust 2024 Editionに対応するRust 1.85以降のstableとCargoを使います。通常の例はsrc/main.rsへ保存します。依存が必要な回はCa

2 0 0 0
投稿者: しゅりりん

Rust実践講座 20:卒業課題・借用と失敗を説明して改修する

この回では、既存のCLIへ新しい要求を実装し、型、所有権、テストの選択を説明します。前提は第19回までです。 卒業課題 タスク管理CLIへ検索と並び替えを追加してください。検索は題名の部分一致とし、大文字・小文字を区別する仕様から始めます。未完了だけを表示でき、表示順をID順または題名順で選べるようにします。存在するタスクの所有権を不要に奪わず、表示用の選択

1 0 0 0
投稿者: しゅりりん

Rust実践講座 19:総合演習・回帰テストとリリースビルド

到達点は、保存を含む振る舞いを繰り返し検証し、実行物を渡せることです。前提は第17・18回です。 実際の保存境界を通す 次をsrc/main.rsの末尾へ追加します。既存のmainを置き換えず、テスト用モジュールを足してください。 コードブロック。 cargo testで二つのテストが成功します。tempdirでテストごとに別の領域を作り、終了時に片付けます

1 0 0 0
投稿者: しゅりりん

Rust実践講座 18:総合演習・保存とCLIを完成させる

第17回のプロジェクトのCargo.tomlを次にします。tempfileは一時ファイルを安全に作り、保存先へ置き換えるために使います。 コードブロック。 src/main.rsを次にします。src/task.rsは前回のものを使います。 コードブロック。 cargo run -- tasks.json add "Rustを復習"、cargo run --

1 0 0 0
投稿者: しゅりりん

Rust実践講座 17:総合演習・タスクの不変条件を型へ集める

ここから保存できるタスク管理CLIを作ります。前提は第01〜16回です。Java・Python編と同じadd、list、doneを、RustのResultと所有権で実装します。 契約を先に決める IDは正のu64、題名は前後の空白を除いた1〜200 Unicodeスカラー値、完了状態はboolです。改行とタブは認めません。未完了を完了にし、すでに完了でも成功

1 0 0 0
投稿者: しゅりりん

Rust実践講座 16:async・awaitと通信の期限

到達点は、非同期処理を動かす仕組みと、待ちを制限する場所を理解することです。前提は第07・15回です。 Futureだけでは進まない async関数はFutureを作り、実行を進めるにはポーリングするランタイムが必要です。awaitは待ちが必要なときに他の仕事へ進む機会を与えます。ここではTokioを使い、ローカルのTCP通信を一往復させます。 新しいプロジ

1 0 0 0
投稿者: しゅりりん

Rust実践講座 15:スレッド・チャネル・共有状態

到達点は、データを渡す方法と共有する方法を選び、完了を待つことです。前提は第14回です。 共有しないことで単純にする 別スレッドへ仕事を渡し、結果だけをチャネルで戻すと、共有状態への同時更新を減らせます。moveクロージャは必要な所有物をスレッドへ渡すためによく使います。 コードブロック。 src/main.rsで120と1が表示されます。結果が届く順番は保

0 0 0 0
投稿者: しゅりりん

Rust実践講座 14:Box・Rc・RefCell・Arcの役割

到達点は、共有や内部変更が必要な理由を説明して型を選ぶことです。前提は第05・09回です。 所有権の道具を目的で選ぶ Boxはヒープ上の値を単独所有する道具、Rcは単一スレッドで参照カウントにより共有所有する道具です。RefCellは借用規則の一部を実行時に確認し、共有参照の内側から変更する「内部可変性」を提供します。 コードブロック。 src/main.r

0 0 0 0
投稿者: しゅりりん

Rust実践講座 13:ファイル・Serde・JSONの検証

到達点は、外部データを型へ変換した後も、値の妥当性を調べることです。前提は第07・11回です。 文法、型、業務ルールの三段階 JSONの文法が正しくても、必要な項目があるとは限りません。型が合っていても、学習時間が一日を超えるなど業務上の不正があり得ます。Serdeはシリアライズとデシリアライズを支援しますが、アプリ独自のルールまですべて自動で知っているわけ

0 0 0 0
投稿者: しゅりりん

Rust実践講座 12:単体テスト・統合テスト・診断

到達点は、型チェックでは分からない業務ルールをテストすることです。前提は第07・11回です。 コンパイル成功は仕様の正しさではない Rustは多くのメモリ上の誤りをコンパイル時に防ぎますが、送料無料の境界を5001円にしても型としては正しいままです。具体的な入力と期待結果をテストへ記録します。 cargo new test-practice --lib --

0 0 0 0
投稿者: しゅりりん

Rust実践講座 11:モジュール・クレート・依存管理

到達点は、公開するAPIと内部実装を分けることです。前提は第09回です。 ファイルと名前空間を対応させる クレートはコンパイルの単位で、ライブラリにも実行プログラムにもなります。パッケージはCargo.tomlで管理され、複数のクレートを含む場合があります。モジュールはクレート内の名前空間と公開範囲を整理します。 cargo new module-pract

0 0 0 0
投稿者: しゅりりん

Rust実践講座 10:クロージャとイテレータで変換する

到達点は、借用と所有権の違いを保ちながら、抽出と集計を書くことです。前提は第08・09回です。 取り出し方で所有関係が変わる Vecに対するiterは共有参照、itermutは可変参照、intoiterはVecを消費して所有する要素を取り出す使い方ができます。同じ「繰り返し」に見えても、元のデータを後で使えるかが違います。 コードブロック。 src/main

0 0 0 0
投稿者: しゅりりん

Rust実践講座 09:トレイト・ジェネリクス・動的ディスパッチ

到達点は、実装に依存せず操作の約束を表すことです。前提は第06・07回です。 操作の共通部分を名前にする トレイトは、型が提供する操作などの約束です。ジェネリクスにトレイト境界を付けると、どの型でもよいのではなく、必要な操作を持つ型だけを受け入れます。 コードブロック。 src/main.rsで学習の表示が二回、復習3件が一回出ます。ジェネリックなshowは

1 0 0 0
投稿者: しゅりりん

Rust実践講座 08:Vec・HashMap・StringとUTF-8

到達点は、可変長データと文字列を、所有権を意識して扱うことです。前提は第05〜07回です。 要素を増やすと場所が変わることがある Vecは連続領域に要素を持つ可変長配列です。pushで容量を超えると再確保が起きる場合があります。要素への参照を使っている最中にVecを変更できないケースがあるのは、参照先の移動を防ぐためです。 コードブロック。 src/main

1 0 0 0
投稿者: しゅりりん

Rust実践講座 07:Option・Result・疑問符で失敗を伝える

到達点は、不在、回復可能な失敗、プログラムの前提違反を区別することです。前提は第06回です。 失敗も戻り値の型へ含める OptionはSomeかNone、ResultはOkかErrです。検索で見つからないのは通常の不在、数値の読み取り失敗は理由のある失敗として表せます。unwrapは不在や失敗をpanicに変えるため、利用者の入力へ安易に使いません。 コード

1 0 0 0
投稿者: しゅりりん

Rust実践講座 06:struct・enum・matchで状態を表す

到達点は、不可能な状態を作りにくい型を設計することです。前提は第05回です。 データの組と選択肢 structは複数の項目をまとめ、enumは複数の状態のいずれかを表します。失敗したかどうかのboolと、成功データと、エラーメッセージを独立に持つと、意味のない組合せが生まれます。状態ごとに必要なデータを持たせると整理できます。 コードブロック。 src/ma

0 0 0 0
投稿者: しゅりりん

Rust実践講座 05:借用・スライス・ライフタイム

到達点は、所有せずに読む、独占して変更する、参照の有効期間を区別することです。前提は第04回です。 借りることで移動を避ける &T は共有参照、&mut T は可変参照です。通常の借用規則では、同じ対象に同時に使う複数の共有参照、または一つの可変参照を持ちます。共有参照と可変参照を衝突させないことで、読み取り中の予期しない変更を防ぎます。 コードブロック。

0 0 0 0
投稿者: しゅりりん

Rust実践講座 04:所有権・Move・Copy・Clone

到達点は、値を渡した後に使えるかを予測することです。前提は第03回です。 誰が資源を片付けるか Stringは文字列データを所有します。所有する値を別の変数へ移すと、元の変数からは使えなくなる場合があります。これをMoveと呼びます。同じ資源を二度解放したり、解放後に参照したりしないよう、コンパイラが利用関係を確認します。 コードブロック。 src/main

0 0 0 0
投稿者: しゅりりん

Rust実践講座 03:関数・制御フロー・パターン

到達点は、入力と戻り値の型を明示し、境界を含む処理を組み立てることです。前提は第02回です。 関数の入口と出口を決める fnの引数には型を書き、戻り値は矢印の後に書きます。関数の末尾の式が戻り値になります。早く処理を終えたい場所ではreturnも使えます。 コードブロック。 src/main.rsで実行すると送料は500、500、0、合計1000、最後は30

0 0 0 0
投稿者: しゅりりん

Rust実践講座 02:型・mut・式・数値の境界

到達点は、変更できる値を明示し、数値の失敗を予測することです。前提は第01回です。 変更は明示する letの束縛は既定では再代入できません。更新したければmutを付けます。同じ名前をletで宣言し直すシャドーイングは、再代入とは別で、型を変えることもできます。どちらも使えますが、読み手が値の流れを追えるように選びます。 コードブロック。 src/main.r

0 0 0 0