JavaScript で Rust-like なイテレータ操作を実現するライブラリ
console.assert([1, 2, 3, 4, 5].iter().skip(2).eq([3, 4, 5].iter()), true)- グローバル空間に
Optionクラスが追加定義されますOption.some(x)とOption.none()ファクトリでオプショナル値が表現できます
- グローバル空間に
Orderingクラスが追加定義されますnew Ordering(x)またはOrdering.less,Ordering.equal,Ordering.greaterでインスタンスを生成できますNumber.prototype.toOrdering()で数値からOrderingに変換できます
- さらに次のオブジェクトのプロトタイプが上書きされます
| clone | cmp | eq | iter | toString | |
|---|---|---|---|---|---|
| Boolean | ✅ | ✅ | ✅ | ||
| Number | ✅ | ✅ | ✅ | ||
| BigInt | ✅ | ✅ | ✅ | ||
| String | ✅ | ✅ | ✅ | ✅ | |
| Symbol | ✅ | ✅ | ✅ | ✅ | |
| Array | ✅ | ✅ | ✅ | ✅ | ✅ |
| Set | ✅ | ✅ | ✅ | ✅ | |
| Map | ✅ | ✅ | ✅ | ✅ |
- 以下のメソッドは実装していません
- arrayChunks(): 未実装です
- byRef(): 未実装です
- collectInto(): 未実装です
- copied(): 未実装です。cloned()を使用してください
- inspect(): 未実装です
- intersperceWith(): 未実装です
- mapWindows(): 未実装です。map()を使用してください
- nextChunk(): 未実装です
- partialCmp(): 未実装です。cmp()を使用してください
- partitionInPlace(): 未実装です。partition()を使用してください
- peekable(): 未実装です
- scan(): 未実装です
- sizeHint(): 未実装です
- tryCollect(): 未実装です
- tryFind(): 未実装です
- tryReduce(): 未実装です
- 以下のメソッドは、String, Arrayのイテレータ(DoubleEndedIterator)でのみ使用可能です
- advanceBackBy()
- nextBack()
- nthBack()
- rev()
- rfind()
- rfold()
- rposition()
- 以下のメソッドは、JavaScriptで配列要素と出力の型を特定できないため、空のイテレータに対しては失敗します
- product():
*演算子による集約を行います - sum():
+演算子による集約を行います
- product():
- 以下のメソッドは、プライベート実装に限定されます
- tryFold()
- tryForEach()
- unzip(): 配列をタプルに見立てた分割代入に制限があります