← 解説「全部つなぐ — main.rs、ローカルサーバー、途中の木を覗くオプション」に戻る
サンプルコードで身につける: 全部つなぐ — main.rs、ローカルサーバー、途中の木を覗くオプション
解説で学んだ概念を、3つの具体例で確認します。素朴な例から実務寄りの例へと進みます。
1Page::load の 5 段を順に見る
HTML → → → script → → の順番を、各段を数行の仮実装にした で追います。段ごとの出力をフィールド( / / console / layout_root / display_list)に残すので、script が DOM の count を 0 から 3 に変えた後にレイアウトが走ることが見えます。実行すると 5 行の出力が出て、表示リストの Text の色が CSSOM の navy と red になっています。本物の各段は HtmlParser / CssParser / JsRuntime / layout_document / です。
Rust
2main.rs のオプション: フラグと位置引数の振り分け
引数を -- で始まるフラグとそれ以外に分け、 ならローカルファイル、無ければ として扱う decide です。表示オプション( --layout --display-list --headers)はフラグから --file を除いたもので、読み込み元が無ければ終了コード 2 と使い方を返します。実行すると 4 通りの引数の判定結果が出て、フラグの順番は問わないこと、--layout だけでは使い方エラーになることが分かります。
Rust
3python3 -m http.server で自分のページを配って読む
sample/ ディレクトリで Python の簡易サーバーを立て、 に http://localhost:8000/index.html を取りに行かせる手順です。--headers を付けると受け取ったレスポンスの とも出ます。下の出力は実際に動かしたもので、サーバーを止めてから同じコマンドを打つと「接続に失敗 ... refused」になります。
GET http://localhost:8000/index.html (host=localhost port=8000 path=/index.html)HTTP/1.0 200 OKServer: SimpleHTTP/0.6 Python/3.14.6Date: Tue, 13 Oct 2026 14:09:27 GMTContent-type: text/htmlContent-Length: 879Last-Modified: Tue, 13 Oct 2026 13:45:31 GMT[console] count is 3┌────────────────────────────────────────────────────────────────────────────────┐│Hello, tinybrowser ││ ││This page is rendered by a browser written in Rust. It has a_link and a very lon││g sentence that should wrap around when it reaches the right edge of the viewpor││t. ││Clicks: 3░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░│└────────────────────────────────────────────────────────────────────────────────┘
# 1) 配るディレクトリで簡易サーバーを立てる(別の端末で動かしたままにする)
$ cd tinybrowser/sample
$ python3 -m http.server 8000
Serving HTTP on :: port 8000 (http://[::]:8000/) ...
# --bind 127.0.0.1 を付けると、localhost が ::1(IPv6)に解決されて接続できないことがある。
# 既定の "::" なら IPv4 / IPv6 のどちらでも受ける
# 2) もう 1 つの端末で、URL を渡して読む(--file のときと違い URL → HTTP → HTML の段も通る)
$ cd tinybrowser
$ cargo run -- http://localhost:8000/index.html --headers
# 3) 自分のページを試すなら sample/ に HTML を置いて URL のパスを替える。
# サーバーを止めてから同じコマンドを打つと「接続に失敗 ... Connection refused」になる