見出し画像

🦀RUST playgroundと、コードに慣れる ガーベージコレクションのかわりにオーナーシップとな 正直まだスコープとの区別がつかない

独自の圧があるな
マスコットはカニ🦀
  1. はじめに
    1.1. インストール
    1.2. Hello, World!
    1.3. ハロー、カーゴ

  2. 推理ゲームのプログラミング

  3. プログラミングの共通概念
    3.1. 変数とミュータビリティ
    3.2. データ型
    3.3. 関数
    3.4. コメント
    3.5. 制御フロー

  4. オーナーシップの理解
    4.1. オーナーシップとは
    4.2. 参考文献と借用
    4.3. スライスタイプ

  5. 構造体の使用による関連データの構造化
    5.1. 構造体の定義とインスタンス化
    5.2. 構造体を用いたプログラム例
    5.3. メソッド構文

  6. 列挙型とパターンマッチング
    6.1. 列挙型の定義
    6.2. matchコントロールフローコンストラクト
    6.3. if letによる簡潔な制御フロー

  7. パッケージ、クレート、モジュールによる成長するプロジェクトの管理
    7.1. パッケージとクレート
    7.2. スコープとプライバシーを制御するためのモジュールの定義
    7.3. モジュールツリーでアイテムを参照するためのパス
    7.4. use キーワードによるパスのスコープへの取り込み
    7.5. モジュールを異なるファイルに分割する

  8. コモンコレクション
    8.1. ベクトルによる値のリストの保存
    8.2. 文字列によるUTF-8エンコードテキストの格納
    8.3. ハッシュマップによるキーと関連する値の保存

  9. エラー処理
    9.1. panic!による回復不能なエラー
    9.2. 回復可能なエラー(Result付き
    9.3. パニックを起こすか起こさないか

  10. 一般的な型,特性,寿命
    10.1. 一般的なデータ型
    10.2. 特性 共有動作の定義
    10.3. 寿命のある参照の検証

  11. 自動テストの書き方
    11.1. テストの書き方
    11.2. テストの実行方法の制御
    11.3. テストの組織化

  12. I/Oプロジェクト。コマンドラインプログラムの作成
    12.1. コマンドライン引数の受け取り
    12.2. ファイルの読み込み
    12.3. モジュール性とエラー処理を向上させるリファクタリング
    12.4. テスト駆動開発によるライブラリの機能開発
    12.5. 環境変数の取り扱い
    12.6. エラーメッセージを標準出力ではなく標準エラーに書き出す

  13. 関数型言語の機能。イテレータとクロージャ
    13.1. クロージャ。環境を捕捉する匿名関数
    13.2. イテレータによる連続したアイテムの処理
    13.3. I/Oプロジェクトの改善
    13.4. パフォーマンスを比較する。ループとイテレータの比較

  14. CargoとCrates.ioの詳細について
    14.1. リリースプロファイルでビルドをカスタマイズする
    14.2. Crates.ioにクレート(Crate)を公開する
    14.3. カーゴのワークスペース
    14.4. カーゴインストールによるCrates.ioからのバイナリのインストール
    14.5. カスタムコマンドによるCargoの拡張

  15. スマートポインタ
    15.1. Box<T> を使ってヒープ上のデータを指し示す
    15.2. Deref 特性でスマートポインタを通常の参照と同様に扱う
    15.3. Drop 特性によるクリーンアップのためのコード実行
    15.4. Rc<T>, 参照カウント付きスマートポインタ
    15.5. RefCell<T>とInterior Mutabilityパターン
    15.6. 参照サイクルはメモリを漏らすことがある

  16. 大胆不敵な並行処理
    16.1. スレッドを使ったコードの同時実行
    16.2. スレッド間のデータ転送にメッセージパッシングを使う
    16.3. 共有状態での並行処理
    16.4. Sync と Send トライットによる拡張可能な並行処理

  17. Rustのオブジェクト指向プログラミング機能
    17.1. オブジェクト指向言語の特徴
    17.2. 異なる型の値を許容する特徴的なオブジェクトの使用
    17.3. オブジェクト指向のデザインパターンの実装

  18. パターンとマッチング
    18.1. パターンが使用できるすべての場所
    18.2. 反証可能性。パターンがマッチングに失敗する可能性
    18.3. パターンの構文

  19. 高度な機能
    19.1. 安全でない錆
    19.2. 高度なトライット
    19.3. 高度な型
    19.4. 高度な関数とクロージャ
    19.5. マクロ

  20. 最終プロジェクト マルチスレッドWebサーバーの構築
    20.1. シングルスレッド Web サーバーの構築
    20.2. シングルスレッドサーバーをマルチスレッドサーバーに変更する
    20.3. グレースフルシャットダウンとクリーンアップ

  21. 付録
    21.1. A - キーワード
    21.2. B - 演算子および記号
    21.3. C - 派生可能な特性
    21.4. D - 便利な開発ツール
    21.5. E - エディション
    21.6. F - 翻訳本
    21.7. G - Rustができるまでと "夜のRust"

オーナーシップは、Rustの最もユニークな機能であり、他の言語にも深く関わってきます。この機能により、Rustはガベージコレクタを使わずにメモリ安全性を保証できるため、オーナーシップの仕組みを理解することは重要です。この章では、オーナーシップと、関連する機能であるボローイング、スライス、そしてRustがメモリ上にデータを配置する方法について説明します。

https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html

オーナーシップとは、ラストプログラムがどのようにメモリを管理するかを規定する一連の規則のことです。

オーナーシップは、多くのプログラマーにとって新しい概念なので、慣れるまで少し時間がかかる。しかし、Rustとオーナーシップのルールに慣れれば慣れるほど、安全で効率的なコードを開発することが容易になります。がんばってください

はいがんばります

Rustのdrop関数は、RAIIパターンを使ったことがある人なら馴染み深いものでしょう。

Rust オーナーシップの意味

ダブルフリーエラー

解放二度付禁止らしい。ためしにみてみましょ

これは普通に動きますが
これはエラーになります。解放時に問題がおこるもんで
Cloneするなら動きます
https://amzn.to/3BUcPFi

リーナスだっはっは顔


お願い致します