Struct rutie::Enumerator [−][src]
Enumerator
Implementations
impl Enumerator
[src]
pub fn next(&mut self) -> Result<AnyObject, AnyException>
[src]
Advances the iterator and returns the next value.
Returns Err
when iteration is finished.
Examples
use rutie::{Array, Fixnum, Object, VM, VerifiedObject, Enumerator}; let mut iter = Array::new().push(Fixnum::new(2)).push(Fixnum::new(1)).to_enum(); // A call to next() returns the next value... assert_eq!(Ok(Fixnum::new(2).to_any_object()), iter.next()); assert_eq!(Ok(Fixnum::new(1).to_any_object()), iter.next()); // ... and then Err once it's over. assert!(iter.next().is_err(), "not error!"); // More calls will always return Err. assert!(iter.next().is_err(), "not error!"); assert!(iter.next().is_err(), "not error!");
pub fn next_values(&mut self) -> Result<Array, AnyException>
[src]
Advances the iterator and returns the next values.
Returns Err
when iteration is finished.
Examples
use rutie::{Array, Fixnum, Object, VM, VerifiedObject, Enumerator}; let mut array = Array::with_capacity(2); array.push(Fixnum::new(1)); array.push(Fixnum::new(2)); let mut iter = array.to_enum(); // A call to next_values() returns the next values... let mut result1 = Array::with_capacity(1); result1.push(Fixnum::new(1)); assert_eq!(Ok(result1), iter.next_values()); let mut result2 = Array::with_capacity(1); result2.push(Fixnum::new(2)); assert_eq!(Ok(result2), iter.next_values()); // ... and then Err once it's over. assert!(iter.next_values().is_err(), "not error!"); // More calls will always retirn Err. assert!(iter.next_values().is_err(), "not error!"); assert!(iter.next_values().is_err(), "not error!");
pub fn peek(&self) -> Result<AnyObject, AnyException>
[src]
Peeks into the iterator and returns the next value.
Returns Err
when iteration is finished.
Examples
use rutie::{Array, Fixnum, Object, VM, VerifiedObject, Enumerator}; let mut iter = Array::new().push(Fixnum::new(2)).push(Fixnum::new(1)).to_enum(); // A call to peek() returns the next value without progressing the iteration assert_eq!(Ok(Fixnum::new(2).to_any_object()), iter.peek()); assert_eq!(Ok(Fixnum::new(2).to_any_object()), iter.peek());
pub fn peek_values(&self) -> Result<Array, AnyException>
[src]
Peeks into the iterator and returns the next values.
Returns Err
when iteration is finished.
Examples
use rutie::{Array, Fixnum, Object, VM, VerifiedObject, Enumerator}; let mut array = Array::with_capacity(2); array.push(Fixnum::new(1)); array.push(Fixnum::new(2)); let mut iter = array.to_enum(); // A call to peek_values() returns the next values without progressing the iteration let mut result1 = Array::with_capacity(1); result1.push(Fixnum::new(1)); assert_eq!(Ok(result1.dup()), iter.peek_values()); assert_eq!(Ok(result1), iter.peek_values());
pub fn rewind(&mut self) -> &mut Self
[src]
Rewind the iteration back to the beginning.
Returns Err
when iteration is finished.
Examples
use rutie::{Array, Fixnum, Object, VM, VerifiedObject, Enumerator}; let mut iter = Array::new().push(Fixnum::new(2)).push(Fixnum::new(1)).to_enum(); // A call to next() returns the next value... assert_eq!(Ok(Fixnum::new(2).to_any_object()), iter.next()); assert_eq!(Ok(Fixnum::new(1).to_any_object()), iter.next()); assert!(iter.next().is_err(), "not error!"); iter.rewind(); // A call to next() returns the next value... assert_eq!(Ok(Fixnum::new(2).to_any_object()), iter.next()); assert_eq!(Ok(Fixnum::new(1).to_any_object()), iter.next()); assert!(iter.next().is_err(), "not error!");
pub fn feed(&mut self, object: AnyObject) -> Result<(), AnyException>
[src]
Feed a return value back in to internal yield inside enumerator.
Examples
use rutie::{Array, Fixnum, Object, VM, VerifiedObject, Enumerator, Class}; let mut e_iter = VM::eval("[1,2,3].map").unwrap(). try_convert_to::<Enumerator>().unwrap(); assert_eq!(Ok(Fixnum::new(1).to_any_object()), e_iter.next()); e_iter.feed(Fixnum::new(999).to_any_object()); assert_eq!(Ok(Fixnum::new(2).to_any_object()), e_iter.next()); e_iter.feed(Fixnum::new(888).to_any_object()); assert_eq!(Ok(Fixnum::new(3).to_any_object()), e_iter.next()); e_iter.feed(Fixnum::new(777).to_any_object()); match e_iter.next() { Ok(_) => unreachable!(), Err(e) => { let mut expected = Array::with_capacity(3); expected.push(Fixnum::new(999).to_any_object()); expected.push(Fixnum::new(888).to_any_object()); expected.push(Fixnum::new(777).to_any_object()); assert!(Class::from_existing("StopIteration").case_equals(&e)); assert_eq!(expected.to_any_object(), unsafe { e.send("result", &[]) }); }, }
Ruby:
e = [1,2,3].map
p e.next #=> 1
e.feed 999
p e.next #=> 2
e.feed 888
p e.next #=> 3
e.feed 777
begin
e.next
rescue StopIteration
p $!.result #=> [999, 888, 777]
end
Trait Implementations
impl Debug for Enumerator
[src]
impl From<Value> for Enumerator
[src]
impl Into<AnyObject> for Enumerator
[src]
impl Into<Value> for Enumerator
[src]
impl Object for Enumerator
[src]
fn value(&self) -> Value
[src]
fn class(&self) -> Class
[src]
fn singleton_class(&self) -> Class
[src]
fn get_data<'a, T>(&'a self, wrapper: &'a dyn DataTypeWrapper<T>) -> &T
[src]
fn get_data_mut<'a, T>(
&'a mut self,
wrapper: &'a dyn DataTypeWrapper<T>
) -> &mut T
[src]
&'a mut self,
wrapper: &'a dyn DataTypeWrapper<T>
) -> &mut T
fn define<F: Fn(&mut Self)>(&mut self, f: F) -> &Self
[src]
fn define_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
[src]
&mut self,
name: &str,
callback: Callback<I, O>
)
fn define_private_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
[src]
&mut self,
name: &str,
callback: Callback<I, O>
)
fn define_singleton_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
[src]
&mut self,
name: &str,
callback: Callback<I, O>
)
fn def<I: Object, O: Object>(&mut self, name: &str, callback: Callback<I, O>)
[src]
fn def_private<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
[src]
&mut self,
name: &str,
callback: Callback<I, O>
)
fn def_self<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
[src]
&mut self,
name: &str,
callback: Callback<I, O>
)
unsafe fn send(&self, method: &str, arguments: &[AnyObject]) -> AnyObject
[src]
fn equals<T: Object>(&self, other: &T) -> bool
[src]
fn case_equals<T: Object>(&self, other: &T) -> bool
[src]
fn is_eql<T: Object>(&self, other: &T) -> bool
[src]
fn is_equal<T: Object>(&self, other: &T) -> bool
[src]
fn respond_to(&self, method: &str) -> bool
[src]
fn protect_send(
&self,
method: &str,
arguments: &[AnyObject]
) -> Result<AnyObject, AnyException>
[src]
&self,
method: &str,
arguments: &[AnyObject]
) -> Result<AnyObject, AnyException>
fn protect_public_send(
&self,
method: &str,
arguments: &[AnyObject]
) -> Result<AnyObject, AnyException>
[src]
&self,
method: &str,
arguments: &[AnyObject]
) -> Result<AnyObject, AnyException>
fn is_nil(&self) -> bool
[src]
fn to_any_object(&self) -> AnyObject
[src]
fn instance_variable_get(&self, variable: &str) -> AnyObject
[src]
fn instance_variable_set<T: Object>(
&mut self,
variable: &str,
value: T
) -> AnyObject
[src]
&mut self,
variable: &str,
value: T
) -> AnyObject
fn is_frozen(&self) -> bool
[src]
fn freeze(&mut self) -> Self
[src]
unsafe fn to<T: Object>(&self) -> T
[src]
fn try_convert_to<T: VerifiedObject>(&self) -> Result<T, AnyException>
[src]
fn ty(&self) -> ValueType
[src]
impl PartialEq<Enumerator> for Enumerator
[src]
impl VerifiedObject for Enumerator
[src]
fn is_correct_type<T: Object>(object: &T) -> bool
[src]
fn error_message() -> &'static str
[src]
Auto Trait Implementations
impl RefUnwindSafe for Enumerator
[src]
impl Send for Enumerator
[src]
impl Sync for Enumerator
[src]
impl Unpin for Enumerator
[src]
impl UnwindSafe for Enumerator
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,