feat: 实现 Iterator.concat 按序拼接迭代器

This commit is contained in:
2026-10-16 11:53:13 +00:00
parent cd3c972e3b
commit 9af3041ff5
6 changed files with 629 additions and 27 deletions
@@ -7,7 +7,8 @@ use crate::bindings::{
configure_native_constructor, BindEnv,
};
/// 绑定 `Iterator` 全局构造器(`prototype` = %IteratorPrototype%、`from`/`zip` 方法)。
/// 绑定 `Iterator` 全局构造器(`prototype` = %IteratorPrototype%、`from`/`zip`/
/// `concat` 方法)。
///
/// 迭代器原型方法(%IteratorPrototype% 的 `@@iterator` 与各集合原型 `next`)由
/// `rebind_dirty_builtins` 的 object 分支统一安装,本入口不重复绑定,避免
@@ -30,6 +31,7 @@ pub fn bind_iterator(env: BindEnv<'_>, global: &mut JsObject) {
&[
("from", oxide_builtins::iterator::iterator_from::<crate::vm::Vm> as *const (), 1),
("zip", oxide_builtins::iterator::iterator_zip::<crate::vm::Vm> as *const (), 1),
("concat", oxide_builtins::iterator::iterator_concat::<crate::vm::Vm> as *const (), 0),
],
);
+1
View File
@@ -966,6 +966,7 @@ fn bind_iterator_global(env: BindEnv<'_>, global: &mut JsObject) {
&[
("from", oxide_builtins::iterator::iterator_from::<crate::vm::Vm> as *const (), 1),
("zip", oxide_builtins::iterator::iterator_zip::<crate::vm::Vm> as *const (), 1),
("concat", oxide_builtins::iterator::iterator_concat::<crate::vm::Vm> as *const (), 0),
],
);
let iterator_ptr = Box::into_raw(iterator);