1. ホーム
  2. loops

[解決済み] Rustで範囲指定はどうやるの?

2022-03-03 14:38:10

質問

ドキュメントには方法が書かれておらず、チュートリアルではforループが完全に無視されています。

どのように解決するのですか?

1.0時点では。 について ループは Iterator 特性 .

本書では、このテクニックを 第3.5章 第13.2章 .

もしあなたが、どのように については ループの動作については モジュール std::iter .

fn main() {
    let strs = ["red", "green", "blue"];

    for sptr in strs.iter() {
        println!("{}", sptr);
    }
}

( 遊び場 )

単に数値の範囲を反復処理したいだけなら、C言語の に対して ループで、数値範囲を作成することができます。 a..b の構文があります。

for i in 0..3 {
    println!("{}", i);
}

配列のインデックスと要素の両方が必要な場合、慣用的な方法として、配列のインデックスを取得するために Iterator::enumerate というメソッドがあります。

fn main() {
    let strs = ["red", "green", "blue"];

    for (i, s) in strs.iter().enumerate() {
        println!("String #{} is {}", i, s);
    }
}

注意事項

  • ループ項目は、イテレート要素への参照を借用したものである。 この場合 strs は、タイプ &'static str - は、静的文字列へのポインタを借用しています。 つまり sptr は、型 &&'static str というように参照解除します。 *sptr . 私が好む別の形式は、次のとおりです。

      for &s in strs.iter() {
          println!("{}", s);
      }