FABRKNT
Reth 入門 — Rust Ethereum の世界へ
Rust環境を整える
レッスン 10 / 11·QUIZ15 分25 XP
コース
Reth 入門 — Rust Ethereum の世界へ
レッスンの役割
QUIZ
順序
10 / 11

クイズ — 小さな宿題:0xチェック

問い

最初の Rust プログラムを書く。文字列として与えられた Ethereum アドレスが 0x で始まっているかを判定。&str.starts_with + .len() + if/else + && の組み合わせ。

原理(最小モデル)

  • 関数シグネチャ. fn is_valid_address(addr: &str) -> bool&str で借用受け取り、bool で結果返却。
  • addr.starts_with("0x"). &str の標準メソッド、has_prefix は存在しない、contains は部分一致で先頭判定にならない。
  • 長さチェック. addr.len() == 42、Ethereum アドレス = 40 hex 桁 + 0x プレフィックスで合計 42 文字。
  • 慣用句. addr.starts_with("0x") && addr.len() == 42 && addr[2..].chars().all(|c| c.is_ascii_hexdigit()) で 3 条件 AND。
  • Alloy なら. addr.parse::<Address>() で全部 Alloy に任せる、本番コードはこれ。
  • Rust Playground. https://play.rust-lang.org/ で Alloy なしでも Rust 試せる、URL シェアでスニペット共有。

具体例 + ステップで組み立てる

小さな宿題:0xチェック

最初の課題はとてもシンプルである。

文字列として与えられたEthereumアドレスが、0x から始まっているかをチェックして、正しい/不正のメッセージを表示する。発展:長さも 42 文字かを確認する。

必要な要素

これが「Rust EVMスタック流」で最初のRustプログラムになる。Rustプログラム全般で使う3つの基本要素:

  1. 変数letlet mut(前回扱いました)
  2. メソッド — Rust の文字列には組み込みメソッドがあり、先頭一致をチェックするものもある。stdドキュメントで確認する: &str ドキュメント
  3. 条件分岐if / else

Ethereum アドレスの 長さ も把握しておく必要がある。分からなければ調べてみてください(ヒント:40 hex 文字 + 0x プレフィックス)。

自分で書いてみる

Rust Playground を開き、次のシグネチャで関数を書いてください:

fn is_valid_address(addr: &str) -> bool {
    // ここを書く
}

下記でテスト:

fn main() {
    println!("{}", is_valid_address("0x1234567890abcdef1234567890abcdef12345678")); // true
    println!("{}", is_valid_address("1234567890abcdef1234567890abcdef12345678"));   // false
}

詰まったときの軽いヒント:

  • addr.〜 — &str のメソッドの中に、名前のとおりに動くものがあります
  • addr.len() で文字列のバイト長が取れる
  • 2つの条件は && でつなぐ

自分で書いてみる前に答えを見ないでください。Rust の真価は「コンパイラが教えてくれる」こと。コンパイラに教わってください。

クイズ

自分なりのコードを書いて動かしたら、下のクイズへ進む。各問は具体的なRust慣用表現を問うため、自分で書いた経験があれば解けるはずである。

まとめ(3行)

  • 関数 is_valid_address(addr: &str) -> bool = starts_with("0x") && len == 42 && all hex digits、3 条件 AND。
  • Alloy 本番は addr.parse::<Address>() で全部任せる、Rust Playground で Alloy なし試行可能。
  • 5 問でこの宿題と Rust 基本文法を確認、次は初級まとめクイズ。