summaryrefslogtreecommitdiff
path: root/enum.c
diff options
context:
space:
mode:
Diffstat (limited to 'enum.c')
-rw-r--r--enum.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/enum.c b/enum.c
index 419a2b98e4..919c53b482 100644
--- a/enum.c
+++ b/enum.c
@@ -1187,6 +1187,27 @@ enum_zip(int argc, VALUE *argv, VALUE obj)
return result;
}
+static VALUE
+in_i(VALUE i, VALUE *memo)
+{
+ if (rb_equal(i, memo[0])) {
+ memo[1] = Qtrue;
+ rb_iter_break();
+ }
+ return Qnil;
+}
+
+VALUE
+rb_enum_in(VALUE elem, VALUE obj)
+{
+ VALUE memo[2];
+
+ memo[0] = elem;
+ memo[1] = Qfalse;
+ rb_block_call(obj, id_each, 0, 0, in_i, (VALUE)&memo);
+ return memo[1];
+}
+
/*
* The <code>Enumerable</code> mixin provides collection classes with
* several traversal and searching methods, and with the ability to