Rust in Action Notes 第 8 章 ネットワーク

  1. P253の図は、ネットワークの各層で使用されるプロトコルを示していますここに画像の説明を挿入
  2. Box<dyn std::error::Error>ポインタが標準エラー ライブラリを実装する型を指していることを示し、dynこれが Rust におけるポリモーフィズムの実装であるトレイト オブジェクト (trait オブジェクト) であることを示します。
  3. 特性オブジェクトとテンプレート オブジェクト (ジェネリック) は両方とも Rust がポリモーフィズムを実装する方法です. テンプレートは静的ディスパッチに属し, より多くのディスク領域 (ディスク領域) を必要としますが, 高速です (楽しい時間はより速くなります); 特性オブジェクト (特性オブジェクト) は動的ディスパッチ (動的ディスパッチ) に属し, 実行時に必要な領域は少なくなりますが, 実行時のオーバーヘッドが少し発生します (間接ポインタのアドレス指定オーバーヘッド)。
  4. Rust には 3 つの形式の特性オブジェクトがあります,&dyn Trait, &mut dyn Trait, Box<dyn Trait>主な違いはBox<dyn Trait>、それらが所有されている特性オブジェクトであり、他の 2 つは借用されることです. 古いバージョンでは、特性オブジェクトもありますが、現在は非&Trait, Box<Trait>推奨になっています. 関数の戻り値でカプセル化エラーが発生する理由は、Box<dyn Trait>ボックスのサイズが既知であり、スタックに格納できるためです。
  5. セクション 8.3 以降、ほとんどの機能オブジェクトは単純な RPG ゲームを通じて導入されます。
  6. セクション 8.4 では、標準ライブラリを使用してstd::net::TcpStreamTCP 接続を作成し、trust_dns ライブラリを使用してドメイン名を解決する方法について説明します。通常は、ローカル アドレスを にバインドします0.0.0.0:0。これは、OS がランダムなポートを選択してこのマシン上に接続を作成することを意味します。
  7. Vec<T>を使用する場合Vec::with_capacity(512)vec![0;512]Vec<T> を作成する場合の違いは、前者の長さは 0 で容量が 512 であるのに対し、後者の長さと容量は両方とも 512 であることです。
  8. Result<T,E> を返す関数の末尾にある疑問符は?糖衣構文であり、try!マクロの略称として、戻り結果が Ok (T) の場合は T を返し、Err (err) を返す場合は早期に戻り、try! / ?err を呼び出し元の関数の戻り値の Error 型に変換しようとします。
  9. 新しい型の実装の場合、std::error::Error実装部分は空白のままにすることができます。その中にはエラーの型を関数 (関数) にマップするstd::error::Errorデフォルトの実装があり、実装された列挙型エラーの型は関数と見なすことができるためです。map_err(f)std::error::Error
  10. これを使用したくない場合はmap_err()、独自の Error タイプにこれを実装して、std::convert::From過度に冗長なコードを減らすことができます。複数の Error タイプの戻り値を処理する別の方法は、 または を使用することですが、unwrap()ライブラリexpect()を使用するユーザーが予期しないクラッシュに遭遇する可能性があるため、この方法はライブラリ作成者には推奨されません。
  11. MAC アドレスは 6 バイトで構成されており、ユニバーサル管理アドレスとローカル管理アドレスに分かれており、MAC アドレスの最初の 3 バイトがグローバル アドレスで組織番号を示し、ローカル アドレスの 6 バイトがデバイス番号を示します。
  12. MAC アドレスには、ユニキャストとマルチキャストの 2 つのモードがあります。違いは、ユニキャストではターゲット MAC アドレスのみがデータ フレームの受信を許可することです。設定方法は、MAC アドレスの最初のバイトの最下位ビットを設定することです。ブロードキャスト モードを示すには、1 に設定します。次の図は、2 つのモードの違いを明確に示しています。図8.4
  13. セクション 8.9 では、Linux 環境で実行する必要がある仮想ネットワーク デバイスを作成するための ip tuntap ツールの使用法を紹介しており、詳細については 282 ページを参照し、セクション 8.10 では、コマンド ライン パラメータ処理、MAC アドレス生成、DNS 分析、TCP プリミティブによる HTTP リクエストの開始など、比較的低レベルのネットワーク処理ツールを実装しています。

おすすめ

転載: blog.csdn.net/Mint2yx4/article/details/131421974