pub enum Yield<I> {
Iter(I),
Enumerator(Enumerator),
}
Expand description
Helper type for functions that either yield a single value to a block or return an Enumerator.
I
must implement Iterator<Item = T>
, where T
implements Into<Value>
.
Examples
use magnus::{block::{block_given, Yield}, Value};
fn count_to_3(rb_self: Value) -> Yield<impl Iterator<Item = u8>> {
if block_given() {
Yield::Iter((1..=3).into_iter())
} else {
Yield::Enumerator(rb_self.enumeratorize("count_to_3", ()))
}
}
Could be called from Ruby like:
a = []
count_to_3 {|i| a << i} #=> nil
a #=> [1,2,3]
enumerator = count_to_3
enumerator.next #=> 1
enumerator.next #=> 2
Variants
Iter(I)
Yields I::Item
to given block.
Enumerator(Enumerator)
Returns Enumerator
from the method.
Auto Trait Implementations
impl<I> RefUnwindSafe for Yield<I> where
I: RefUnwindSafe,
impl<I> Send for Yield<I> where
I: Send,
impl<I> Sync for Yield<I> where
I: Sync,
impl<I> Unpin for Yield<I> where
I: Unpin,
impl<I> UnwindSafe for Yield<I> where
I: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more