iter.enumerate is more friendly
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 26 Nov 2021 04:08:11 +0000 (22:08 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Fri, 26 Nov 2021 04:08:11 +0000 (22:08 -0600)
core/container/iter.onyx

index c035c8d113f67b55d13726993322c9b1e09060ab..4a52400f0b5d5dfa280afb262049c7217b769882 100644 (file)
@@ -249,7 +249,14 @@ const :: (value: $T) -> Iterator(T) {
     value: T;
 }
 
-enumerate :: (it: Iterator($T), start_index: i32 = 0) -> Iterator(Enumeration_Value(T)) {
+enumerate :: #match {}
+#match enumerate macro (it: $T, start_index: i32 = 0) -> #auto where Iterable(T) {
+    as_iterator :: as_iterator
+    enumerate :: enumerate
+    return enumerate(as_iterator(it), start_index);
+}
+
+#match enumerate (it: Iterator($T), start_index: i32 = 0) -> Iterator(Enumeration_Value(T)) {
     Enumeration_Context :: struct (T: type_expr) {
         iterator:      Iterator(T);
         current_index: i32;