Struct rutie::Enumerator
source · pub struct Enumerator { /* private fields */ }
Expand description
Enumerator
Implementations
sourceimpl Enumerator
impl Enumerator
sourcepub fn next(&mut self) -> Result<AnyObject, AnyException>
pub fn next(&mut self) -> Result<AnyObject, AnyException>
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 retirn Err.
assert!(iter.next().is_err(), "not error!");
assert!(iter.next().is_err(), "not error!");
sourcepub fn next_values(&mut self) -> Result<Array, AnyException>
pub fn next_values(&mut self) -> Result<Array, AnyException>
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!");
sourcepub fn peek(&self) -> Result<AnyObject, AnyException>
pub fn peek(&self) -> Result<AnyObject, AnyException>
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());
sourcepub fn peek_values(&self) -> Result<Array, AnyException>
pub fn peek_values(&self) -> Result<Array, AnyException>
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());
sourcepub fn rewind(&mut self) -> &mut Self
pub fn rewind(&mut self) -> &mut Self
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!");
sourcepub fn feed(&mut self, object: AnyObject) -> Result<(), AnyException>
pub fn feed(&mut self, object: AnyObject) -> Result<(), AnyException>
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(), e.send("result", None));
},
}
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
sourceimpl Debug for Enumerator
impl Debug for Enumerator
sourceimpl From<Value> for Enumerator
impl From<Value> for Enumerator
sourceimpl Into<AnyObject> for Enumerator
impl Into<AnyObject> for Enumerator
sourceimpl Into<Value> for Enumerator
impl Into<Value> for Enumerator
sourceimpl Object for Enumerator
impl Object for Enumerator
sourcefn singleton_class(&self) -> Class
fn singleton_class(&self) -> Class
Returns a singleton class of current object. Read more
sourcefn get_data<'a, T>(&'a self, wrapper: &'a dyn DataTypeWrapper<T>) -> &'_ T
fn get_data<'a, T>(&'a self, wrapper: &'a dyn DataTypeWrapper<T>) -> &'_ T
Gets an immutable reference to the Rust structure which is wrapped into a Ruby object. Read more
sourcefn get_data_mut<'a, T>(
&'a mut self,
wrapper: &'a dyn DataTypeWrapper<T>
) -> &'_ mut T
fn get_data_mut<'a, T>(
&'a mut self,
wrapper: &'a dyn DataTypeWrapper<T>
) -> &'_ mut T
Gets a mutable reference to the Rust structure which is wrapped into a Ruby object.
sourcefn define_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
fn define_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
Defines an instance method for the given class or object. Read more
sourcefn define_private_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
fn define_private_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
Defines a private instance method for the given class or object. Read more
sourcefn define_singleton_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
fn define_singleton_method<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
Defines a class method for given class or singleton method for object. Read more
sourcefn def<I: Object, O: Object>(&mut self, name: &str, callback: Callback<I, O>)
fn def<I: Object, O: Object>(&mut self, name: &str, callback: Callback<I, O>)
An alias for
define_method
(similar to Ruby syntax def some_method
).sourcefn def_private<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
fn def_private<I: Object, O: Object>(
&mut self,
name: &str,
callback: Callback<I, O>
)
An alias for
define_private_method
(similar to Ruby syntax private def some_method
).sourcefn def_self<I: Object, O: Object>(&mut self, name: &str, callback: Callback<I, O>)
fn def_self<I: Object, O: Object>(&mut self, name: &str, callback: Callback<I, O>)
An alias for
define_singleton_method
(similar to Ruby def self.some_method
).sourcefn send(&self, method: &str, arguments: Option<&[AnyObject]>) -> AnyObject
fn send(&self, method: &str, arguments: Option<&[AnyObject]>) -> AnyObject
Calls a given method on an object similarly to Ruby
Object#send
method Read moresourcefn respond_to(&self, method: &str) -> bool
fn respond_to(&self, method: &str) -> bool
Checks whether the object responds to given method Read more
sourcefn protect_send(
&self,
method: &str,
arguments: Option<&[AnyObject]>
) -> Result<AnyObject, AnyException>
fn protect_send(
&self,
method: &str,
arguments: Option<&[AnyObject]>
) -> Result<AnyObject, AnyException>
protect_send
returns Result<AnyObject, AnyObject> Read moresourcefn protect_public_send(
&self,
method: &str,
arguments: Option<&[AnyObject]>
) -> Result<AnyObject, AnyException>
fn protect_public_send(
&self,
method: &str,
arguments: Option<&[AnyObject]>
) -> Result<AnyObject, AnyException>
protect_public_send
returns Result<AnyObject, AnyObject> Read moresourcefn to_any_object(&self) -> AnyObject
fn to_any_object(&self) -> AnyObject
Converts struct to
AnyObject
Read moresourcefn instance_variable_get(&self, variable: &str) -> AnyObject
fn instance_variable_get(&self, variable: &str) -> AnyObject
Gets an instance variable of object Read more
sourcefn instance_variable_set<T: Object>(
&mut self,
variable: &str,
value: T
) -> AnyObject
fn instance_variable_set<T: Object>(
&mut self,
variable: &str,
value: T
) -> AnyObject
Sets an instance variable for object Read more
sourceunsafe fn to<T: Object>(&self) -> T
unsafe fn to<T: Object>(&self) -> T
Unsafely casts current object to the specified Ruby type Read more
sourcefn try_convert_to<T: VerifiedObject>(&self) -> Result<T, AnyException>
fn try_convert_to<T: VerifiedObject>(&self) -> Result<T, AnyException>
Safely casts current object to the specified Ruby type Read more
sourceimpl PartialEq<Enumerator> for Enumerator
impl PartialEq<Enumerator> for Enumerator
sourceimpl VerifiedObject for Enumerator
impl VerifiedObject for Enumerator
fn is_correct_type<T: Object>(object: &T) -> bool
fn error_message() -> &'static str
Auto Trait Implementations
impl RefUnwindSafe for Enumerator
impl Send for Enumerator
impl Sync for Enumerator
impl Unpin for Enumerator
impl UnwindSafe for Enumerator
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
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