//! Generators //! //! HINT: Look at the `generator_grade.rs` file to see how the generator is used. /// Yielded value. It can be either a value or a stop signal. enum Yielded { Value(T), Stop, } /// Generator /// - kk /// - You can call `next()` method to get the next value. /// - The generator should stop when it yields `Yielded::Stop`. /// /// Reference: /// - [Python generator](https://python-reference.readthedocs.io/en/latest/docs/generator/) #[allow(missing_debug_implementations)] pub struct Generator { state: S, f: fn(&mut S) -> Yielded, } impl Iterator for Generator { type Item = T; fn next(&mut self) -> Option { todo!() } } /// Returns a generator that yields fibonacci numbers. /// /// HINT: Consult pub fn fib_generator(first: usize, second: usize) -> Generator { todo!() } /// Returns a generator that yields collatz numbers. /// /// HINT: Consult pub fn collatz_conjecture(start: usize) -> Generator { todo!() }