practice2 > iterator > fib.rs

fib.rs

この文章はAIで生成しています。誤りが含まれることがあります。

このRustプログラムは、フィボナッチ数列を生成するイテレータを実装し、その中から特定の位置の数値を取得するプログラムです。プログラムは、フィボナッチ数列を生成するための構造体 Fib を定義し、そのイテレータとして実装しています。Fib 構造体は、フィボナッチ数列の2つの前の数値 a とその次の数値 b を保持しています。Fib 構造体は Iterator トレイトを実装しており、next メソッドを実装することで、フィボナッチ数列の次の数値を生成します。fib_iter 関数は、Fib 構造体のインスタンスを生成し、フィボナッチ数列を生成するイテレータを返します。main 関数では、fib_iter 関数を呼び出し、50番目のフィボナッチ数を取得し、出力します。

このプログラムは、Rustの構造体とイテレータの機能を活用して、効率的にフィボナッチ数列を生成し、特定の位置の数値を取得しています。Rustの構造体は、データを保持し、関連する操作を実装するための方法を提供します。イテレータは、シーケンスの要素を順番に処理するための方法を提供します。このプログラムは、Rustの構造体とイテレータの機能を活用して、効率的にフィボナッチ数列を生成し、特定の位置の数値を取得しています。

struct Fib {
    a: u128,
    b: u128,
}

impl Iterator for Fib {
    type Item = u128;

    fn next(&mut self) -> Option<Self::Item> {
        let v = self.a;
        let next = self.a + self.b;
        self.a = self.b;
        self.b = next;
        Some(v)
    }
}

fn fib_iter() -> Fib {
    Fib { a: 0, b: 1 }
}

fn main() {
    let x = fib_iter().nth(50).unwrap();
    println!("{}", x);
}