static VALUE lazy_drop_size(VALUE generator, VALUE args, VALUE lazy) { long len = NUM2LONG(RARRAY_PTR(rb_ivar_get(lazy, id_arguments))[0]); VALUE receiver = lazy_size(lazy); if (NIL_P(receiver)) return receiver; if (FIXNUM_P(receiver)) { len = FIX2LONG(receiver) - len; return LONG2FIX(len < 0 ? 0 : len); } return rb_funcall(receiver, '-', 1, LONG2NUM(len)); }
static VALUE lazy_receiver_size(VALUE generator, VALUE args, VALUE lazy) { return lazy_size(lazy); }