なかだです。

拡張ライブラリから、引数を常に配列で受ける形式のブロックを渡す
方法がないようです。rb_iterate()では一引数の場合は配列になりま
せんし、rb_proc_new()はYIELD_FUNC_AVALUEをセットしていますが、
それを渡す手段がありません。

(1) avalue版のrb_iterate() (rb_iterate_values()?)
(2) Procを受け取るrb_iterate() (rb_proc_iterate()?)

あたりが必要ではないかと思います。

もう一つ、breakで値を返せるようになっていますが、やはりCレベル
ではrb_iter_break()しかありません。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦