From 49ce9022130e702887881112612e3da0edd187ff Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 15:42:03 -0800 Subject: [PATCH 01/23] chore(quest): claim quest/m3/ts-iter-back-folds.md Quest-Claim: ae91324bf08d3da0 From 539823c6ed031fa068c84db75b0cf15965f97a90 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 17:00:11 -0800 Subject: [PATCH 02/23] feat(ts): translate rfold and try_rfold, and a crate's own folds, nth, count, and last Co-Authored-By: Claude Opus 5.5 --- quest/m3/README.md | 2 +- quest/m3/ts-closure-calls.md | 5 +- quest/m3/ts-iter-back-folds.md | 30 - quest/m3/ts-iter-own-calls.md | 32 + ts/README.md | 10 +- ts/fixtures/crates/expected/harness.ts | 2 +- ts/fixtures/lang/caller.ts | 8 +- ts/fixtures/lang/expected/clones.ts | 7 +- ts/fixtures/lang/expected/cycles.ts | 2 +- ts/fixtures/lang/expected/ends.Counted.ts | 2 +- ts/fixtures/lang/expected/ends.Overrides.ts | 117 +++ ts/fixtures/lang/expected/ends.ts | 739 ++++++++++++-- ts/fixtures/lang/expected/hints.ts | 25 +- ts/fixtures/lang/expected/iters.ts | 12 +- ts/fixtures/lang/expected/strs.ts | 8 +- ts/fixtures/lang/src/ends.rs | 176 +++- ts/fixtures/reject/census.md | 28 +- ts/fixtures/reject/expected.txt | 4 +- ts/fixtures/reject/src/lib.rs | 12 +- .../expected/hashlink/linked_hash_map.Keys.ts | 2 +- .../hashlink/linked_hash_map.Values.ts | 2 +- .../hashlink/linked_hash_map.ValuesMut.ts | 2 +- ts/fixtures/stock/expected/maps.ts | 50 +- ts/fixtures/task/expected/core/result.ts | 7 + ts/fixtures/task/expected/drops.ts | 4 +- ts/fixtures/task/expected/drops/folds.Pile.ts | 121 +++ ts/fixtures/task/expected/drops/folds.ts | 903 +++++++++++++----- ts/fixtures/task/src/drops.rs | 4 +- ts/fixtures/task/src/drops/folds.rs | 197 +++- ts/runtime/rt/iter.ts | 125 ++- ts/src/lower/iter.rs | 205 +++- ts/src/lower/library.rs | 5 +- ts/tests/task.ts | 2 +- 33 files changed, 2343 insertions(+), 507 deletions(-) delete mode 100644 quest/m3/ts-iter-back-folds.md create mode 100644 quest/m3/ts-iter-own-calls.md create mode 100644 ts/fixtures/lang/expected/ends.Overrides.ts create mode 100644 ts/fixtures/task/expected/drops/folds.Pile.ts diff --git a/quest/m3/README.md b/quest/m3/README.md index 43276607c..b9b72bcd5 100644 --- a/quest/m3/README.md +++ b/quest/m3/README.md @@ -33,7 +33,7 @@ generic std gap is planned here even when moq never calls it. - [A closure that drops given to a string's edit or search](/quest/m3/ts-string-closures.md) - `String::retain` and `str`'s searches by a closure that owns a value that drops translate - [Waiting: a slice object for a mutable part of other values](/quest/m3/ts-slice-object.md) - waits on a moq profile showing the `Proxy` view's traps matter, then decides on an `rt.ByteSlice`-like form - [Port the workflow guard to kixelated/quest](/quest/m3/quest-workflow-guard.md) - quest's environment guard parses YAML as this repository's does -- [Folds from the back, and a crate's own folds](/quest/m3/ts-iter-back-folds.md) - `rfold` and `try_rfold` translate, and so does a crate's iterator that overrides `fold` or `nth_back` +- [A crate's own find and for_each](/quest/m3/ts-iter-own-calls.md) - a crate's iterator that overrides `find`, `rfind`, `find_map`, or `for_each` translates, each called where std's adaptors and consumers call it - [A comparison of two constants](/quest/m3/ts-constant-compares.md) - `size_of::() == 1` in a generic function translates to TypeScript `tsc` accepts - [A vector's exact capacity as it shrinks](/quest/m3/ts-vec-exact-capacity.md) - a deque made from a `Vec` splits its slices where std's does - [A B-tree's searches call Ord as std's do](/quest/m3/ts-btree-search-order.md) - a B-tree's lookups and inserts call a key's own `Ord` in std's order and number diff --git a/quest/m3/ts-closure-calls.md b/quest/m3/ts-closure-calls.md index 79b61e832..80d5ebd2d 100644 --- a/quest/m3/ts-closure-calls.md +++ b/quest/m3/ts-closure-calls.md @@ -12,9 +12,8 @@ Found probing std's consumers for [drop order](/quest/m3/ts-drop-order.md) in [#438](https://github.com/moq-dev/rust2/pull/438). Of a closure that owns nothing, each of these is refused today: -- `Iterator::try_fold`, `try_for_each`, and `partition`. Folds from the back, `rfold` and - `try_rfold`, are [#436](https://github.com/moq-dev/rust2/pull/436)'s - [`ts-iter-back-folds`](https://github.com/moq-dev/rust2/blob/quest/m2/ts-model/iter-traits/quest/m3/ts-iter-back-folds.md). +- `Iterator::try_fold`, `try_for_each`, and `partition`. `rt.iterTryRfold` already folds + from the back as `try_rfold` does, breaking by an `Option`, `Result`, or `ControlFlow`. - `iter::repeat_with`, and `Iterator::scan` of a state JS copies, which is refused as a `&mut` its mapping would copy. - `slice::sort_by_cached_key`. diff --git a/quest/m3/ts-iter-back-folds.md b/quest/m3/ts-iter-back-folds.md deleted file mode 100644 index f30c37d16..000000000 --- a/quest/m3/ts-iter-back-folds.md +++ /dev/null @@ -1,30 +0,0 @@ -# [M] Folds from the back, and a crate's own folds - -## Goal - -[rust2-ts](/ts/README.md) translates `DoubleEndedIterator::rfold` and `try_rfold` of any -iterator, and a crate's own iterator that overrides a provided method std's adaptors call -in place of `next` or `next_back`, such as `fold` or `nth_back`. Each runs where native's -does, as many times and in the same order, proven by differential tests against native -Rust. - -## Plan - -Found by [#436](https://github.com/moq-dev/rust2/pull/436), which translates a crate's own -`next_back`, `len`, and `size_hint`: - -- `rfold` and `try_rfold` are an "unsupported call" for every iterator, std's included. - The runtime already folds from the back inside its adaptors (`Iter.rfold`, `folded`), - so the gap may be mostly the mapping. -- A crate's own `Iterator::fold` or `DoubleEndedIterator::nth_back` is refused as - "overriding `_`, which std's adaptors call in place of `next` or beside it". Each override - is a method std's adaptors and consumers call in place of the default: `fold` from - `for_each`, `count`, `last`, and `Map::fold`, `nth_back` from `Rev::nth`. `rt.iterFrom` - would call it there, as it now calls `next_back`. -- Open: whether overrides of the other provided methods (`nth`, `try_fold`, `rfold`, - `advance_by`, `count`, `last`, and more) land here too. Each is the same problem, and - the runtime's callers of each decide how far it reaches. -- `lang`'s `ends` fixture logs each method a crate's iterator is called through, and can - extend to these. - -Public API: the translator's output. diff --git a/quest/m3/ts-iter-own-calls.md b/quest/m3/ts-iter-own-calls.md new file mode 100644 index 000000000..ba9ae957e --- /dev/null +++ b/quest/m3/ts-iter-own-calls.md @@ -0,0 +1,32 @@ +# [M] A crate's own find and for_each + +## Goal + +[rust2-ts](/ts/README.md) translates a crate's own iterator that overrides a provided +method std's adaptors and consumers call on it other than those `rt.iterFrom` already +calls (`size_hint`, `next_back`, `len`, `nth`, `nth_back`, `fold`, `rfold`, `count`, and +`last`), such as `find`, `rfind`, `find_map`, or `for_each`. Each runs where native's does, +as many times and in the same order, proven by differential tests against native Rust. + +## Plan + +Left by the PR that finished folds from the back. Each is refused today as "overriding +`_`, which std's adaptors call in place of `next` or beside it": + +- `Filter::next` and `SkipWhile::next` call their iterator's `find`, `FilterMap::next` its + `find_map`, and `Fuse`, `Chain`, and `Rev` forward `find` and `rfind`. The runtime's + adaptors read their iterator by `next` there, which is the same for std's own iterators + but skips a crate's override. +- `for_each` is what std's `Extend` impls for hash maps, `String`, and others call of the + iterator they are given. +- Each takes a closure, as `fold` does: the crate's `fold` translates for one + `Box` accumulator-agnostic instance, which these could share. +- Overrides std never calls in place of another, such as `max` or `position`, only matter + where the crate calls them directly. Check which std calls each before lifting its + refusal. +- `try_fold`, `try_rfold`, `advance_by`, and `advance_back_by` can be overridden only on + nightly, through unstable traits and features. +- `lang`'s `ends` fixture's `Overrides` iterator logs each method it is called through, and + can extend to these. + +Public API: the translator's output. diff --git a/ts/README.md b/ts/README.md index e07b3f402..a057d4255 100644 --- a/ts/README.md +++ b/ts/README.md @@ -279,7 +279,8 @@ compare the best and then the next, and a B-tree's iterators read their ends. `e An iterator over a slice, array, or `Vec`, or a small range, that only its `next` and moves read steps in place, as two variables: the array and an index into it, or the range's bounds, with no `rt.Iter` made. The crate's own `impl Iterator` returns `rt.DONE` from its `next` too, and joins -std's adaptors through `rt.iterFrom`, which calls its own `size_hint`, `next_back`, and `len` where std's adaptors +std's adaptors through `rt.iterFrom`, which calls its own `size_hint`, `next_back`, `len`, `nth`, and `nth_back`, +and of one it owns its own `fold`, `rfold`, `count`, and `last`, where std's adaptors call them, and `fuse` reads on past the end of one that is a `FusedIterator`, as std's does. A caller calls `next()` for one item, or iterates an `rt.Iter` with `for ... of`. Each `rt.Iter`'s `sizeHint` is std's `size_hint`, its upper bound `undefined` for `None`, and a `collect` or `extend` into a `Vec`, `VecDeque`, @@ -447,7 +448,9 @@ drop it where std's do. So do iterators: one that owns its items, as a `Vec`'s ` map's `drain` does, drops those it still holds by `[Symbol.dispose]`, an adaptor drops what it skips or rejects, and a consumer that takes an iterator by value drops it: through each `rt.Iter`'s own `fold` where std's folds, which drops each adaptor's closure -as its fold ends, before what it wraps, as std's does. A `Vec`'s `drain` leaves the vector +as its fold ends, before what it wraps, as std's does. The crate's own `fold` is given that +closure as a `Box`, which drops it where its body does. A `try_rfold` drops its +closure as it returns, leaving what the iterator holds to drop with it. A `Vec`'s `drain` leaves the vector what precedes its range until it drops, then drops what it still holds and moves the tail back, so one never dropped, as `mem::forget` leaves it, leaks the rest, as std's does. @@ -880,7 +883,8 @@ copies that std makes, other than a map's, or hands a closure, as `iter_mut` and `and_modify` do, one into a `Result`'s payload passed on or kept, the adaptors without a mapping in `src/lower/iter.rs` (such as `partition`), an own `impl Iterator` or `DoubleEndedIterator` that overrides a provided method other than -`size_hint` and `len`, such as `fold` or `nth_back`, +those, such as `find` or `for_each`, or whose own `fold` or `rfold` holds its accumulator in an +`Option` or a `Poll`, a pointer's address (`{:p}`), `write!` with a placeholder into the crate's own `fmt::Write`, a `str` pattern other than a `char`, a `&str`, a predicate, or chars, a mutable `str` slice, a copy of a closure that changes diff --git a/ts/fixtures/crates/expected/harness.ts b/ts/fixtures/crates/expected/harness.ts index 3b8620691..eb92b0e42 100644 --- a/ts/fixtures/crates/expected/harness.ts +++ b/ts/fixtures/crates/expected/harness.ts @@ -73,7 +73,7 @@ export function run(input: rt.ByteSlice): rt.ByteVec { } rt.byteVecPush(out, _143); } - const _151: rt.Iter = rt.iterRev(rt.iterFrom(Countdown.new(rt.min(input.length, 5) & 0xff), (it: Countdown.Countdown) => Countdown.next$iter_Iterator(it), undefined, undefined, (it: Countdown.Countdown) => rt.iterFromOption(Countdown.nextBack$iter_DoubleEndedIterator(it)))); + const _151: rt.Iter = rt.iterRev(rt.iterFrom(Countdown.new(rt.min(input.length, 5) & 0xff), Countdown.next$iter_Iterator, undefined, { back: (it: Countdown.Countdown) => rt.iterFromOption(Countdown.nextBack$iter_DoubleEndedIterator(it)) })); rt.iterExtendBytes(out, _151, "next"); const both: Countdown.Countdown = Countdown.new(rt.min(input.length, 6) & 0xff); while (true) { diff --git a/ts/fixtures/lang/caller.ts b/ts/fixtures/lang/caller.ts index 102771c8d..7e44f07e3 100644 --- a/ts/fixtures/lang/caller.ts +++ b/ts/fixtures/lang/caller.ts @@ -907,13 +907,13 @@ const capacityCases = [ ]; /** - * `ends::ends`: each kind of iterator through every consumer and either end's bits, of - * runs empty, short, and long, whose hints are exact, loose, and lying, after none and a - * few steps through each of its methods. + * `ends::ends`: each kind of iterator through every consumer and fold and either end's + * bits, of runs empty, short, and long, whose hints are exact, loose, and lying, after none + * and a few steps through each of its methods. */ const endsCases = [0x00, 0x03, 0x0f, 0x15, 0x27, 0x36, 0x2f].flatMap((shape) => [[], [0x01, 0x00], [0x0a, 0x0d, 0x03], [0x05, 0x06, 0x04, 0x0f]].flatMap((steps) => - Array.from({ length: 4 * 256 }, (_, i) => Uint8Array.of(...op("ends::ends"), i % 4, shape, i >> 2, ...steps)), + Array.from({ length: 10 * 256 }, (_, i) => Uint8Array.of(...op("ends::ends"), i % 10, shape, Math.floor(i / 10), ...steps)), ), ); diff --git a/ts/fixtures/lang/expected/clones.ts b/ts/fixtures/lang/expected/clones.ts index a8dd1c354..f86dce7ac 100644 --- a/ts/fixtures/lang/expected/clones.ts +++ b/ts/fixtures/lang/expected/clones.ts @@ -6602,7 +6602,6 @@ export function turns$vec_IntoIter_u8_clones_iters_closure18_clones_iters_closur export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { let _263!: [rt.ByteSlice, rt.ByteSlice]; let _269!: rt.usize; - let it!: rt.Peekable; const plan: Plan.Plan = { dataData: data.data, dataStart: data.start, dataLen: data.length, at: kind as rt.usize }; const n: rt.usize = option_mapOr$1surhce(rt.byteSliceFirst(data), 1, (_2: rt.u8): rt.u8 => { return rt.u8Add(rt.u8Rem(_2, 4), 1); @@ -6893,7 +6892,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { }, plan, (x35: rt.u8): rt.u8 => { return x35; }, out); - turns$iter_Map_clones_Countdown_clones_iters_closure100_clones_iters_closure101_clones_iters_closure102(rt.iterMap(rt.iterFrom({ _0: rt.u8Mul(n & 0xff, 3) }, (it: clones_Countdown.Countdown) => clones_Countdown.next$iter_Iterator(it)), (x36: rt.u8): rt.u8 => { + turns$iter_Map_clones_Countdown_clones_iters_closure100_clones_iters_closure101_clones_iters_closure102(rt.iterMap(rt.iterFrom({ _0: rt.u8Mul(n & 0xff, 3) }, clones_Countdown.next$iter_Iterator), (x36: rt.u8): rt.u8 => { return x36 ^ 7; }), (it33: rt.Iter): rt.u8 | undefined => { return rt.iterToOption(it33.next()); @@ -6902,7 +6901,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { }, out); const _236: clones_Countdown.Countdown = { _0: rt.u8Mul(n & 0xff, 3) }; const _240: rt.Iter = rt.iterSlice(rt.byteSliceView(data)); - turns$iter_Zip_clones_Countdown_slice_Iter_u8_clones_iters_closure103_clones_iters_closure104(rt.iterZip(rt.iterFrom(_236, (it: clones_Countdown.Countdown) => clones_Countdown.next$iter_Iterator(it)), _240), (it34: rt.Iter<[rt.u8, rt.u8]>): [rt.u8, rt.u8] | undefined => { + turns$iter_Zip_clones_Countdown_slice_Iter_u8_clones_iters_closure103_clones_iters_closure104(rt.iterZip(rt.iterFrom(_236, clones_Countdown.next$iter_Iterator), _240), (it34: rt.Iter<[rt.u8, rt.u8]>): [rt.u8, rt.u8] | undefined => { return rt.iterToOption(it34.next()); }, plan, (_261: [rt.u8, rt.u8]): rt.u8 => { return _261[0] ^ _261[1]; @@ -7007,7 +7006,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { }), undefined, true); rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.refCellReplace(log, new rt.ByteVec())), undefined, true); } else if (_9 === 8) { - it = rt.iterPeekable(rt.iterSlice(rt.byteSliceView(data))); + const it: rt.Peekable = rt.iterPeekable(rt.iterSlice(rt.byteSliceView(data))); let iterStart5: rt.usize = 0; const iterEnd5: rt.usize = n; while (iterStart5++ < iterEnd5) { diff --git a/ts/fixtures/lang/expected/cycles.ts b/ts/fixtures/lang/expected/cycles.ts index b87c7ad48..5a040baaa 100644 --- a/ts/fixtures/lang/expected/cycles.ts +++ b/ts/fixtures/lang/expected/cycles.ts @@ -21,7 +21,7 @@ export function flush(log: rt.RefCell, out: rt.ByteVec): void { */ export function read$cycles_Countdown_cycles_cycles_closure4(it: cycles_Countdown.Countdown, steps: rt.ByteSlice, put: (a0: rt.u8) => rt.u8, out: rt.ByteVec): void { let item!: rt.u8 | undefined; - const it2: rt.Iter = rt.iterCycle(rt.iterFrom(it, (it: cycles_Countdown.Countdown) => cycles_Countdown.next$iter_Iterator(it)), { v: cycles_Countdown.clone$Clone }); + const it2: rt.Iter = rt.iterCycle(rt.iterFrom(it, cycles_Countdown.next$iter_Iterator), { v: cycles_Countdown.clone$Clone }); const _8: [rt.usize, rt.usize | undefined] = it2.sizeHint(); const lower: rt.usize = _8[0]; rt.iterExtendBytes(out, rt.iterSlice(Uint8Array.of(lower & 0xff, (lower >>> 24) & 0xff, option_mapOr$02k4ito(_8[1], 254, (n2: rt.usize): rt.u8 => { diff --git a/ts/fixtures/lang/expected/ends.Counted.ts b/ts/fixtures/lang/expected/ends.Counted.ts index fdfea08ce..74b071501 100644 --- a/ts/fixtures/lang/expected/ends.Counted.ts +++ b/ts/fixtures/lang/expected/ends.Counted.ts @@ -22,7 +22,7 @@ export function nextBack$iter_DoubleEndedIterator(self: Counted): rt.u8 | undefi export function len$iter_ExactSizeIterator(self: Counted): rt.usize { ends_Run.logged(self._0, 108); - return rt.iterFrom(self._0, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))).len(); + return rt.iterFrom(self._0, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }).len(); } //# sourceMappingURL=ends.Counted.ts.map diff --git a/ts/fixtures/lang/expected/ends.Overrides.ts b/ts/fixtures/lang/expected/ends.Overrides.ts new file mode 100644 index 000000000..7bea32441 --- /dev/null +++ b/ts/fixtures/lang/expected/ends.Overrides.ts @@ -0,0 +1,117 @@ +// Generated by rust2-ts. Do not edit. + +import * as rt from "./rt.ts"; +import * as ends_Run from "./ends.Run.ts"; + +/** + * A `Run` with its own `nth`, `nth_back`, `fold`, `rfold`, `count`, and `last`, each logged + * as `N`, `B`, `f`, `r`, `c`, and `L`, which std's adaptors and consumers call in place of + * `next` and `next_back`. Its `count` reads nothing, and its `last` reads from the back. + */ +export interface Overrides { + _0: ends_Run.Run; +} + +export function next$iter_Iterator(self: Overrides): rt.u8 | rt.Done { + return ends_Run.next$iter_Iterator(self._0); +} + +export function sizeHint$iter_Iterator(self: Overrides): [rt.usize, rt.usize | undefined] { + return ends_Run.sizeHint$iter_Iterator(self._0); +} + +export function nth$iter_Iterator(self: Overrides, n: rt.usize): rt.u8 | undefined { + ends_Run.logged(self._0, 78); + let iterStart: rt.usize = 0; + const iterEnd: rt.usize = n; + while (iterStart++ < iterEnd) { + if (ends_Run.next$iter_Iterator(self._0) === rt.DONE) { + return undefined; + } + } + return rt.iterToOption(ends_Run.next$iter_Iterator(self._0)); +} + +export function fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32(self: Overrides, init: rt.u32 | undefined, f: (a0: rt.u32 | undefined, a1: rt.u8) => rt.u32 | undefined): rt.u32 | undefined { + ends_Run.logged(self._0, 102); + let acc: rt.u32 | undefined = init; + while (true) { + const _7: rt.u8 | rt.Done = ends_Run.next$iter_Iterator(self._0); + if (_7 !== rt.DONE) { + acc = f(acc, _7); + } else { + break; + } + } + rt.drop(f); + return acc; +} + +export function fold$iter_Iterator_u8_ends_folded_closure0_ends_Overrides(self: Overrides, init: rt.u8, f: (a0: rt.u8, a1: rt.u8) => rt.u8): rt.u8 { + ends_Run.logged(self._0, 102); + let acc: rt.u8 = init; + while (true) { + const _7: rt.u8 | rt.Done = ends_Run.next$iter_Iterator(self._0); + if (_7 !== rt.DONE) { + acc = f(acc, _7); + } else { + return acc; + } + } +} + +export function count$iter_Iterator(self: Overrides): rt.usize { + ends_Run.logged(self._0, 99); + return ends_Run.left(self._0) as rt.usize; +} + +export function last$iter_Iterator(self: Overrides): rt.u8 | undefined { + ends_Run.logged(self._0, 76); + return ends_Run.nextBack$iter_DoubleEndedIterator(self._0); +} + +export function nextBack$iter_DoubleEndedIterator(self: Overrides): rt.u8 | undefined { + return ends_Run.nextBack$iter_DoubleEndedIterator(self._0); +} + +export function nthBack$iter_DoubleEndedIterator(self: Overrides, n: rt.usize): rt.u8 | undefined { + ends_Run.logged(self._0, 66); + let iterStart: rt.usize = 0; + const iterEnd: rt.usize = n; + while (iterStart++ < iterEnd) { + if (ends_Run.nextBack$iter_DoubleEndedIterator(self._0) === undefined) { + return undefined; + } + } + return ends_Run.nextBack$iter_DoubleEndedIterator(self._0); +} + +export function rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32(self: Overrides, init: rt.u32 | undefined, f: (a0: rt.u32 | undefined, a1: rt.u8) => rt.u32 | undefined): rt.u32 | undefined { + ends_Run.logged(self._0, 114); + let acc: rt.u32 | undefined = init; + while (true) { + const _7: rt.u8 | undefined = ends_Run.nextBack$iter_DoubleEndedIterator(self._0); + if (_7 !== undefined) { + acc = f(acc, _7); + } else { + break; + } + } + rt.drop(f); + return acc; +} + +export function rfold$iter_DoubleEndedIterator_u8_ends_folded_closure1_ends_Overrides(self: Overrides, init: rt.u8, f: (a0: rt.u8, a1: rt.u8) => rt.u8): rt.u8 { + ends_Run.logged(self._0, 114); + let acc: rt.u8 = init; + while (true) { + const _7: rt.u8 | undefined = ends_Run.nextBack$iter_DoubleEndedIterator(self._0); + if (_7 !== undefined) { + acc = f(acc, _7); + } else { + return acc; + } + } +} + +//# sourceMappingURL=ends.Overrides.ts.map diff --git a/ts/fixtures/lang/expected/ends.ts b/ts/fixtures/lang/expected/ends.ts index be8e28ffd..531dd54d8 100644 --- a/ts/fixtures/lang/expected/ends.ts +++ b/ts/fixtures/lang/expected/ends.ts @@ -1,10 +1,12 @@ // Generated by rust2-ts. Do not edit. import * as rt from "./rt.ts"; -import { unwrapOr$0r2bmpr as option_unwrapOr$0r2bmpr, map$05nbzug as option_map$05nbzug, map$1sj2ls1 as option_map$1sj2ls1, mapOr$02k4ito as option_mapOr$02k4ito } from "./core/option.ts"; +import { thenSome$0d5am30 } from "./core/bool.ts"; +import { unwrapOr$0r2bmpr as option_unwrapOr$0r2bmpr, map$05nbzug as option_map$05nbzug, map$1sj2ls1 as option_map$1sj2ls1, mapOr$02k4ito as option_mapOr$02k4ito, or$1loyskh as option_or$1loyskh } from "./core/option.ts"; import * as ends_Counted from "./ends.Counted.ts"; import * as Flicker from "./ends.Flicker.ts"; import * as Lapse from "./ends.Lapse.ts"; +import * as Overrides from "./ends.Overrides.ts"; import * as ends_Run from "./ends.Run.ts"; /** An item, or 0xff for `None`. */ @@ -34,7 +36,8 @@ export function putVec(out: rt.ByteVec, v: rt.ByteVec): void { /** * The run `data`'s first byte picks steps through with each of its other bytes, read * directly, through `&mut`, or by std's adaptors, and consumed by the third byte's pick, - * with what each read and each call of its methods logged. + * by `consumed`, or by `folded` past the fifth `kind`, with what each read and each call + * of its methods logged. */ export function ends(kind: rt.u8, dataData: Uint8Array, dataStart: number, dataLen: number, out: rt.ByteVec): void { let over!: rt.u8 | undefined; @@ -62,32 +65,49 @@ export function ends(kind: rt.u8, dataData: Uint8Array, dataStart: number, dataL put(out, ends_Run.nextBack$iter_DoubleEndedIterator(run)); } else if (_29 === 2) { const _37: rt.usize = rt.usizeRem(step >> 3 as rt.usize, 4); - put(out, rt.iterNthBack(rt.iterFrom(run, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), _37)); + put(out, rt.iterNthBack(rt.iterFrom(run, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _37)); } else if (_29 === 3) { - rt.byteVecPush(out, rt.iterFrom(run, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))).len() & 0xff); + rt.byteVecPush(out, rt.iterFrom(run, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } else if (_29 === 4) { putHint(out, ends_Run.sizeHint$iter_Iterator(run)); } else if (_29 === 5) { if (!((step & 8) === 0)) { put(out, ends_Run.nextBack$iter_DoubleEndedIterator(run)); } else { - put(out, rt.iterToOption(rt.iterRev(rt.iterFrom(run, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)))).next())); + put(out, rt.iterToOption(rt.iterRev(rt.iterFrom(run, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })).next())); } } else if (_29 === 6) { - rt.byteVecPush(out, rt.iterFrom(run, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))).len() & 0xff); + rt.byteVecPush(out, rt.iterFrom(run, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } else { const _62: rt.usize = rt.usizeRem(step >> 3 as rt.usize, 4); - put(out, rt.iterNth(rt.iterFrom(run, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), _62)); + put(out, rt.iterNth(rt.iterFrom(run, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _62)); } } const k: rt.usize = rt.u8Shr(dataData[dataStart + 1], 4) as rt.usize; + const _72: [rt.u8, boolean] = [rt.u8Rem(dataData[dataStart + 1], 16), rt.u8Rem(kind, 10) >= 5]; + const pick: rt.u8 = _72[0]; + const folds: boolean = _72[1]; b4: { - const _71: rt.u8 = rt.u8Rem(kind, 4); - if (_71 === 0) { - consumed$ends_Run(run, rt.u8Rem(dataData[dataStart + 1], 16), k, out); - } else if (_71 === 1) { - consumed$ends_Counted({ _0: run }, rt.u8Rem(dataData[dataStart + 1], 16), k, out); - } else if (_71 === 2) { + const _78: rt.u8 = rt.u8Rem(kind, 5); + if (_78 === 0) { + if (!folds) { + consumed$ends_Run(run, pick, k, out); + } else { + folded$ends_Run(run, pick, k, log, out); + } + } else if (_78 === 1) { + if (!folds) { + consumed$ends_Counted({ _0: run }, pick, k, out); + } else { + folded$ends_Counted({ _0: run }, pick, k, log, out); + } + } else if (_78 === 4) { + if (!folds) { + consumed$ends_Overrides({ _0: run }, pick, k, out); + } else { + folded$ends_Overrides({ _0: run }, pick, k, log, out); + } + } else if (_78 === 2) { fuses(dataData[dataStart + 1], out); } else { let bits: rt.u8 = dataData[dataStart + 1]; @@ -115,25 +135,25 @@ export function ends(kind: rt.u8, dataData: Uint8Array, dataStart: number, dataL export function consumed$ends_Counted(it: ends_Counted.Counted, pick: rt.u8, k: rt.usize, out: rt.ByteVec): void { let _32!: rt.u8 | undefined; if (pick === 0) { - putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it))), "next")); + putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), "next")); } else if (pick === 1) { - putVec(out, rt.iterToByteVec(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it)), "next")); + putVec(out, rt.iterToByteVec(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), "next")); } else if (pick === 2) { - rt.byteVecPush(out, rt.iterRev(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it))).len() & 0xff); + rt.byteVecPush(out, rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })).len() & 0xff); } else if (pick === 3) { - rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it)))), (_211: [rt.usize, rt.u8]): Uint8Array => { + rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }))), (_211: [rt.usize, rt.u8]): Uint8Array => { return Uint8Array.of(_211[0] & 0xff, _211[1]); }, (value: Uint8Array) => rt.iterSlice(value), false, 2), "next"); } else if (pick === 4) { - rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it)), k)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), k)), "next"); } else if (pick === 5) { - rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it)), k)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), k)), "next"); } else if (pick === 6) { const _27: ends_Counted.Counted = it; const _28: rt.usize = rt.max(k, 1); - rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterFrom(_27, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it)), _28)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterFrom(_27, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _28)), "next"); } else if (pick === 7) { - put(out, option_map$05nbzug(rt.iterRposition(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it)), (b8: rt.u8): boolean => { + put(out, option_map$05nbzug(rt.iterRposition(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), (b8: rt.u8): boolean => { return rt.u8Rem(b8, 3) === 0; }), (i3: rt.usize): rt.u8 => { return i3 & 0xff; @@ -143,17 +163,17 @@ export function consumed$ends_Counted(it: ends_Counted.Counted, pick: rt.u8, k: if (_33 === 0) { const _37: ends_Counted.Counted = it; const _38: rt.usize = rt.usizeDiv(k, 4); - _32 = rt.iterRfind(rt.iterSkip(rt.iterFrom(_37, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it)), _38), (b7: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterSkip(rt.iterFrom(_37, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _38), (b7: rt.u8): boolean => { return rt.u8Rem(b7, 3) === 0; }); } else if (_33 === 1) { const _42: ends_Counted.Counted = it; const _43: rt.usize = rt.usizeDiv(k, 4); - _32 = rt.iterRfind(rt.iterTake(rt.iterFrom(_42, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it)), _43), (b6: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterTake(rt.iterFrom(_42, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _43), (b6: rt.u8): boolean => { return rt.u8Rem(b6, 3) === 0; }); } else if (_33 === 2) { - _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it))), (_2: [rt.usize, rt.u8]): boolean => { + _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), (_2: [rt.usize, rt.u8]): boolean => { return rt.u8Rem(rt.u8Add(_2[0] & 0xff, _2[1]), 3) === 0; }), (_210: [rt.usize, rt.u8]): rt.u8 => { return (_210[0] & 0xff) ^ _210[1]; @@ -161,25 +181,25 @@ export function consumed$ends_Counted(it: ends_Counted.Counted, pick: rt.u8, k: } else { const _51: ends_Counted.Counted = it; const _52: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - _32 = rt.iterRfind(rt.iterStepBy(rt.iterFrom(_51, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it)), _52), (b3: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterStepBy(rt.iterFrom(_51, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _52), (b3: rt.u8): boolean => { return rt.u8Rem(b3, 3) === 0; }); } put(out, _32); } else if (pick === 9) { - put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it))))); + put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })))); } else if (pick === 10) { - rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it)), (b2: rt.u8): rt.u8 => { + rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), (b2: rt.u8): rt.u8 => { return b2 ^ 85; })), k), "next"); } else if (pick === 11) { const v: rt.ByteVec = rt.byteVecFrom(Uint8Array.of(170)); - const _67: rt.Iter = rt.iterTake(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it)), k); + const _67: rt.Iter = rt.iterTake(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), k); rt.iterExtendBytes(v, _67, "next"); putVec(out, v); rt.byteVecPush(out, ends_Counted.len$iter_ExactSizeIterator(it) & 0xff); } else if (pick === 12) { - const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it)), new rt.Range(0, 5)); + const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), new rt.Range(0, 5)); while (true) { const _79: [rt.u8, rt.u8] | undefined = rt.iterToOption(zip.nextBack()); if (_79 !== undefined) { @@ -189,14 +209,106 @@ export function consumed$ends_Counted(it: ends_Counted.Counted, pick: rt.u8, k: } } } else if (pick === 13) { - const fused: rt.Iter = rt.iterFuse(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it))); + const fused: rt.Iter = rt.iterFuse(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })); put(out, rt.iterToOption(fused.nextBack())); rt.byteVecPush(out, fused.len() & 0xff); rt.iterExtendBytes(out, fused, "next"); } else if (pick === 14) { - put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it)), rt.iterSlice(Uint8Array.of(7, 8)))), k)); + put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), rt.iterSlice(Uint8Array.of(7, 8)))), k)); } else { - const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, (it: ends_Counted.Counted) => ends_Counted.next$iter_Iterator(it), undefined, (it: ends_Counted.Counted) => ends_Counted.sizeHint$iter_Iterator(it), (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), (it: ends_Counted.Counted) => ends_Counted.len$iter_ExactSizeIterator(it))); + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, peek.len() & 0xff); + rt.iterExtendBytes(out, rt.iterRev(peek), "next"); + } +} + +/** `it`, consumed by std's adaptor or consumer `pick`, with `k` its count where it takes one. */ +export function consumed$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, out: rt.ByteVec): void { + let _32!: rt.u8 | undefined; + if (pick === 0) { + putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next")); + } else if (pick === 1) { + putVec(out, rt.iterToByteVec(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next")); + } else if (pick === 2) { + rt.byteVecPush(out, rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); + } else if (pick === 3) { + rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), (_211: [rt.usize, rt.u8]): Uint8Array => { + return Uint8Array.of(_211[0] & 0xff, _211[1]); + }, (value: Uint8Array) => rt.iterSlice(value), false, 2), "next"); + } else if (pick === 4) { + rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), k)), "next"); + } else if (pick === 5) { + rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), k)), "next"); + } else if (pick === 6) { + const _27: Overrides.Overrides = it; + const _28: rt.usize = rt.max(k, 1); + rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterFrom(_27, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _28)), "next"); + } else if (pick === 7) { + put(out, option_map$05nbzug(rt.iterRposition(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b8: rt.u8): boolean => { + return rt.u8Rem(b8, 3) === 0; + }), (i3: rt.usize): rt.u8 => { + return i3 & 0xff; + })); + } else if (pick === 8) { + const _33: rt.usize = rt.usizeRem(k, 4); + if (_33 === 0) { + const _37: Overrides.Overrides = it; + const _38: rt.usize = rt.usizeDiv(k, 4); + _32 = rt.iterRfind(rt.iterSkip(rt.iterFrom(_37, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _38), (b7: rt.u8): boolean => { + return rt.u8Rem(b7, 3) === 0; + }); + } else if (_33 === 1) { + const _42: Overrides.Overrides = it; + const _43: rt.usize = rt.usizeDiv(k, 4); + _32 = rt.iterRfind(rt.iterTake(rt.iterFrom(_42, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _43), (b6: rt.u8): boolean => { + return rt.u8Rem(b6, 3) === 0; + }); + } else if (_33 === 2) { + _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (_2: [rt.usize, rt.u8]): boolean => { + return rt.u8Rem(rt.u8Add(_2[0] & 0xff, _2[1]), 3) === 0; + }), (_210: [rt.usize, rt.u8]): rt.u8 => { + return (_210[0] & 0xff) ^ _210[1]; + }); + } else { + const _51: Overrides.Overrides = it; + const _52: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + _32 = rt.iterRfind(rt.iterStepBy(rt.iterFrom(_51, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _52), (b3: rt.u8): boolean => { + return rt.u8Rem(b3, 3) === 0; + }); + } + put(out, _32); + } else if (pick === 9) { + put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); + } else if (pick === 10) { + rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b2: rt.u8): rt.u8 => { + return b2 ^ 85; + })), k), "next"); + } else if (pick === 11) { + const v: rt.ByteVec = rt.byteVecFrom(Uint8Array.of(170)); + const _67: rt.Iter = rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), k); + rt.iterExtendBytes(v, _67, "next"); + putVec(out, v); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); + } else if (pick === 12) { + const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), new rt.Range(0, 5)); + while (true) { + const _79: [rt.u8, rt.u8] | undefined = rt.iterToOption(zip.nextBack()); + if (_79 !== undefined) { + rt.iterExtendBytes(out, rt.iterSlice(Uint8Array.of(_79[0], _79[1])), undefined, true); + } else { + break; + } + } + } else if (pick === 13) { + const fused: rt.Iter = rt.iterFuse(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })); + put(out, rt.iterToOption(fused.nextBack())); + rt.byteVecPush(out, fused.len() & 0xff); + rt.iterExtendBytes(out, fused, "next"); + } else if (pick === 14) { + put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), rt.iterSlice(Uint8Array.of(7, 8)))), k)); + } else { + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })); put(out, rt.peekablePeek(peek)); rt.byteVecPush(out, peek.len() & 0xff); rt.iterExtendBytes(out, rt.iterRev(peek), "next"); @@ -207,25 +319,25 @@ export function consumed$ends_Counted(it: ends_Counted.Counted, pick: rt.u8, k: export function consumed$ends_Run(it: ends_Run.Run, pick: rt.u8, k: rt.usize, out: rt.ByteVec): void { let _32!: rt.u8 | undefined; if (pick === 0) { - putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)))), "next")); + putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), "next")); } else if (pick === 1) { - putVec(out, rt.iterToByteVec(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), "next")); + putVec(out, rt.iterToByteVec(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), "next")); } else if (pick === 2) { - rt.byteVecPush(out, rt.iterRev(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)))).len() & 0xff); + rt.byteVecPush(out, rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })).len() & 0xff); } else if (pick === 3) { - rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))))), (_211: [rt.usize, rt.u8]): Uint8Array => { + rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }))), (_211: [rt.usize, rt.u8]): Uint8Array => { return Uint8Array.of(_211[0] & 0xff, _211[1]); }, (value: Uint8Array) => rt.iterSlice(value), false, 2), "next"); } else if (pick === 4) { - rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), k)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), k)), "next"); } else if (pick === 5) { - rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), k)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), k)), "next"); } else if (pick === 6) { const _27: ends_Run.Run = it; const _28: rt.usize = rt.max(k, 1); - rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterFrom(_27, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), _28)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterFrom(_27, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _28)), "next"); } else if (pick === 7) { - put(out, option_map$05nbzug(rt.iterRposition(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), (b8: rt.u8): boolean => { + put(out, option_map$05nbzug(rt.iterRposition(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), (b8: rt.u8): boolean => { return rt.u8Rem(b8, 3) === 0; }), (i3: rt.usize): rt.u8 => { return i3 & 0xff; @@ -235,17 +347,17 @@ export function consumed$ends_Run(it: ends_Run.Run, pick: rt.u8, k: rt.usize, ou if (_33 === 0) { const _37: ends_Run.Run = it; const _38: rt.usize = rt.usizeDiv(k, 4); - _32 = rt.iterRfind(rt.iterSkip(rt.iterFrom(_37, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), _38), (b7: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterSkip(rt.iterFrom(_37, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _38), (b7: rt.u8): boolean => { return rt.u8Rem(b7, 3) === 0; }); } else if (_33 === 1) { const _42: ends_Run.Run = it; const _43: rt.usize = rt.usizeDiv(k, 4); - _32 = rt.iterRfind(rt.iterTake(rt.iterFrom(_42, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), _43), (b6: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterTake(rt.iterFrom(_42, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _43), (b6: rt.u8): boolean => { return rt.u8Rem(b6, 3) === 0; }); } else if (_33 === 2) { - _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)))), (_2: [rt.usize, rt.u8]): boolean => { + _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), (_2: [rt.usize, rt.u8]): boolean => { return rt.u8Rem(rt.u8Add(_2[0] & 0xff, _2[1]), 3) === 0; }), (_210: [rt.usize, rt.u8]): rt.u8 => { return (_210[0] & 0xff) ^ _210[1]; @@ -253,25 +365,25 @@ export function consumed$ends_Run(it: ends_Run.Run, pick: rt.u8, k: rt.usize, ou } else { const _51: ends_Run.Run = it; const _52: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - _32 = rt.iterRfind(rt.iterStepBy(rt.iterFrom(_51, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), _52), (b3: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterStepBy(rt.iterFrom(_51, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _52), (b3: rt.u8): boolean => { return rt.u8Rem(b3, 3) === 0; }); } put(out, _32); } else if (pick === 9) { - put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)))))); + put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })))); } else if (pick === 10) { - rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), (b2: rt.u8): rt.u8 => { + rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), (b2: rt.u8): rt.u8 => { return b2 ^ 85; })), k), "next"); } else if (pick === 11) { const v: rt.ByteVec = rt.byteVecFrom(Uint8Array.of(170)); - const _67: rt.Iter = rt.iterTake(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), k); + const _67: rt.Iter = rt.iterTake(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), k); rt.iterExtendBytes(v, _67, "next"); putVec(out, v); - rt.byteVecPush(out, rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))).len() & 0xff); + rt.byteVecPush(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } else if (pick === 12) { - const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), new rt.Range(0, 5)); + const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), new rt.Range(0, 5)); while (true) { const _79: [rt.u8, rt.u8] | undefined = rt.iterToOption(zip.nextBack()); if (_79 !== undefined) { @@ -281,20 +393,537 @@ export function consumed$ends_Run(it: ends_Run.Run, pick: rt.u8, k: rt.usize, ou } } } else if (pick === 13) { - const fused: rt.Iter = rt.iterFuse(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)))); + const fused: rt.Iter = rt.iterFuse(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })); put(out, rt.iterToOption(fused.nextBack())); rt.byteVecPush(out, fused.len() & 0xff); rt.iterExtendBytes(out, fused, "next"); } else if (pick === 14) { - put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it))), rt.iterSlice(Uint8Array.of(7, 8)))), k)); + put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), rt.iterSlice(Uint8Array.of(7, 8)))), k)); } else { - const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, (it: ends_Run.Run) => ends_Run.next$iter_Iterator(it), undefined, (it: ends_Run.Run) => ends_Run.sizeHint$iter_Iterator(it), (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)))); + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })); put(out, rt.peekablePeek(peek)); rt.byteVecPush(out, peek.len() & 0xff); rt.iterExtendBytes(out, rt.iterRev(peek), "next"); } } +/** + * `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its + * `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One + * fold panics past `k` items, with what was logged so far. + */ +export function folded$ends_Counted(it: ends_Counted.Counted, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { + let _27!: Uint8Array; + let _38!: Uint8Array; + let _53!: Uint8Array; + const k8: rt.u8 = k & 0xff; + if (pick === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a12, 3) ^ b13; + })); + } else if (pick === 1) { + const _10: ends_Counted.Counted = it; + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + if (!(k < 15)) { + if (!(b12 !== 2)) { + const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); + } + } + return rt.u8WrappingMul(a11, 3) ^ b12; + }; + rt.byteVecPush(out, rt.iterRfold(rt.iterFrom(_10, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), 1, _11)); + } else if (pick === 2) { + if (!(rt.usizeRem(k, 2) === 0)) { + const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { + const _410: rt.u8 = rt.u8Rem(b11, 3); + if (_410 === 0) { + return rt.None; + } + if (_410 === 1) { + return undefined; + } + return option_or$1loyskh(a10, b11); + }, true, undefined, rt.None); + if (r === rt.None) { + _27 = Uint8Array.of(1, 0); + } else { + _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), "next"); + } else { + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + }; + put(out, rt.iterTryRfold(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), 0, _19, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), "next"); + } + } else if (pick === 3) { + const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { + if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a8 ^ b9); + } + return rt.Err(b9); + }; + const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), 0, _35); + if (r2.ok) { + _38 = Uint8Array.of(0, r2.value); + } else { + _38 = Uint8Array.of(1, r2.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + put(out, rt.iterToOption(ends_Counted.next$iter_Iterator(it))); + } else if (pick === 4) { + const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { + if (!(b8 > k8)) { + return rt.Ok(a7 ^ b8); + } + return rt.Err(b8); + }); + if (r3.ok) { + _53 = Uint8Array.of(0, r3.value); + } else { + _53 = Uint8Array.of(1, r3.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); + rt.byteVecPush(out, ends_Counted.len$iter_ExactSizeIterator(it) & 0xff); + } else if (pick === 5) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), (b7: rt.u8): rt.u8 => { + return b7 ^ 1; + })) & 0xff); + } else { + rt.byteVecPush(out, rt.iterCount(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })) & 0xff); + } + } else if (pick === 6) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })))); + } else { + put(out, rt.iterLast(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }))); + } + } else if (pick === 7) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.iterForEach(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), (b6: rt.u8): undefined => { + rt.byteVecPush(out, b6); + }); + } else { + rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), (a0: rt.u8): rt.u32 => { + return a0 as rt.u32; + }), rt.u32Add, 0) & 0xff); + } + } else if (pick === 8) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterMinByKey(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), (b5: rt.u8): rt.u8 => { + return rt.u8Rem(b5, 3); + }, rt.lt)); + } else { + put(out, rt.iterMax(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), rt.lt)); + } + } else if (pick === 9) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterLast(rt.iterChain(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), rt.iterSlice(Uint8Array.of(7, 8))))); + } else { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), rt.iterSlice(Uint8Array.of(7, 8)))) & 0xff); + } + } else if (pick === 10) { + if (!(rt.usizeRem(k, 2) === 0)) { + const _118: ends_Counted.Counted = it; + const _119: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_118, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _119))); + } else { + const _113: ends_Counted.Counted = it; + const _114: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_113, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _114)) & 0xff); + } + } else if (pick === 11) { + const _121: rt.usize = rt.usizeRem(k, 4); + if (_121 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a6, 5) ^ b4; + })); + } else if (_121 === 1) { + put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), rt.usizeDiv(k, 4))); + } else if (_121 === 2) { + put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })))); + } else { + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a5, 5) ^ b3; + })); + } + } else if (pick === 12) { + const _139: ends_Counted.Counted = it; + const _140: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _140); + put(out, rt.iterToOption(skip.next())); + put(out, rt.iterToOption(skip.nextBack())); + } else if (pick === 13) { + const _150: ends_Counted.Counted = it; + const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _151), "next")); + } else if (pick === 14) { + if (!(rt.usizeRem(k, 2) === 0)) { + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, rt.iterCount(peek) & 0xff); + } else { + put(out, rt.iterLast(rt.iterFuse(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })))); + } + } else { + const _175: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a4, 1); + })); + put(out, rt.iterLast(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }))); + rt.byteVecPush(out, ends_Counted.len$iter_ExactSizeIterator(it) & 0xff); + } +} + +/** + * `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its + * `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One + * fold panics past `k` items, with what was logged so far. + */ +export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { + let _27!: Uint8Array; + let _38!: Uint8Array; + let _53!: Uint8Array; + const k8: rt.u8 = k & 0xff; + if (pick === 0) { + rt.byteVecPush(out, Overrides.fold$iter_Iterator_u8_ends_folded_closure0_ends_Overrides(it, 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a12, 3) ^ b13; + })); + } else if (pick === 1) { + rt.byteVecPush(out, Overrides.rfold$iter_DoubleEndedIterator_u8_ends_folded_closure1_ends_Overrides(it, 1, (a11: rt.u8, b12: rt.u8): rt.u8 => { + if (!(k < 15)) { + if (!(b12 !== 2)) { + const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); + } + } + return rt.u8WrappingMul(a11, 3) ^ b12; + })); + } else if (pick === 2) { + if (!(rt.usizeRem(k, 2) === 0)) { + const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { + const _410: rt.u8 = rt.u8Rem(b11, 3); + if (_410 === 0) { + return rt.None; + } + if (_410 === 1) { + return undefined; + } + return option_or$1loyskh(a10, b11); + }, true, undefined, rt.None); + if (r === rt.None) { + _27 = Uint8Array.of(1, 0); + } else { + _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); + } else { + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + }; + put(out, rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _19, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); + } + } else if (pick === 3) { + const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { + if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a8 ^ b9); + } + return rt.Err(b9); + }; + const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _35); + if (r2.ok) { + _38 = Uint8Array.of(0, r2.value); + } else { + _38 = Uint8Array.of(1, r2.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + put(out, rt.iterToOption(Overrides.next$iter_Iterator(it))); + } else if (pick === 4) { + const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { + if (!(b8 > k8)) { + return rt.Ok(a7 ^ b8); + } + return rt.Err(b8); + }); + if (r3.ok) { + _53 = Uint8Array.of(0, r3.value); + } else { + _53 = Uint8Array.of(1, r3.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); + } else if (pick === 5) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b7: rt.u8): rt.u8 => { + return b7 ^ 1; + })) & 0xff); + } else { + rt.byteVecPush(out, Overrides.count$iter_Iterator(it) & 0xff); + } + } else if (pick === 6) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); + } else { + put(out, Overrides.last$iter_Iterator(it)); + } + } else if (pick === 7) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.iterForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b6: rt.u8): undefined => { + rt.byteVecPush(out, b6); + }, true); + } else { + rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (a0: rt.u8): rt.u32 => { + return a0 as rt.u32; + }), rt.u32Add, 0, true) & 0xff); + } + } else if (pick === 8) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterMinByKey(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b5: rt.u8): rt.u8 => { + return rt.u8Rem(b5, 3); + }, rt.lt, true)); + } else { + put(out, rt.iterMax(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), rt.lt, true)); + } + } else if (pick === 9) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.ownedLast(rt.iterChain(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), rt.iterSlice(Uint8Array.of(7, 8))))); + } else { + rt.byteVecPush(out, rt.ownedCount(rt.iterChain(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), rt.iterSlice(Uint8Array.of(7, 8)))) & 0xff); + } + } else if (pick === 10) { + if (!(rt.usizeRem(k, 2) === 0)) { + const _118: Overrides.Overrides = it; + const _119: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterFrom(_118, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _119))); + } else { + const _113: Overrides.Overrides = it; + const _114: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterFrom(_113, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _114)) & 0xff); + } + } else if (pick === 11) { + const _121: rt.usize = rt.usizeRem(k, 4); + if (_121 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a6, 5) ^ b4; + }, true)); + } else if (_121 === 1) { + put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.usizeDiv(k, 4))); + } else if (_121 === 2) { + put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); + } else { + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a5, 5) ^ b3; + }, true)); + } + } else if (pick === 12) { + const _139: Overrides.Overrides = it; + const _140: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _140); + put(out, rt.iterToOption(skip.next())); + put(out, rt.iterToOption(skip.nextBack())); + } else if (pick === 13) { + const _150: Overrides.Overrides = it; + const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _151), "next")); + } else if (pick === 14) { + if (!(rt.usizeRem(k, 2) === 0)) { + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, rt.ownedCount(peek) & 0xff); + } else { + put(out, rt.ownedLast(rt.iterFuse(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); + } + } else { + const _175: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a4, 1); + })); + put(out, rt.iterLast(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); + } +} + +/** + * `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its + * `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One + * fold panics past `k` items, with what was logged so far. + */ +export function folded$ends_Run(it: ends_Run.Run, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { + let _27!: Uint8Array; + let _38!: Uint8Array; + let _53!: Uint8Array; + const k8: rt.u8 = k & 0xff; + if (pick === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a12, 3) ^ b13; + })); + } else if (pick === 1) { + const _10: ends_Run.Run = it; + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + if (!(k < 15)) { + if (!(b12 !== 2)) { + const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); + } + } + return rt.u8WrappingMul(a11, 3) ^ b12; + }; + rt.byteVecPush(out, rt.iterRfold(rt.iterFrom(_10, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), 1, _11)); + } else if (pick === 2) { + if (!(rt.usizeRem(k, 2) === 0)) { + const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { + const _410: rt.u8 = rt.u8Rem(b11, 3); + if (_410 === 0) { + return rt.None; + } + if (_410 === 1) { + return undefined; + } + return option_or$1loyskh(a10, b11); + }, true, undefined, rt.None); + if (r === rt.None) { + _27 = Uint8Array.of(1, 0); + } else { + _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); + } else { + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + }; + put(out, rt.iterTryRfold(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _19, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); + } + } else if (pick === 3) { + const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { + if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a8 ^ b9); + } + return rt.Err(b9); + }; + const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _35); + if (r2.ok) { + _38 = Uint8Array.of(0, r2.value); + } else { + _38 = Uint8Array.of(1, r2.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + put(out, rt.iterToOption(ends_Run.next$iter_Iterator(it))); + } else if (pick === 4) { + const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { + if (!(b8 > k8)) { + return rt.Ok(a7 ^ b8); + } + return rt.Err(b8); + }); + if (r3.ok) { + _53 = Uint8Array.of(0, r3.value); + } else { + _53 = Uint8Array.of(1, r3.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); + rt.byteVecPush(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); + } else if (pick === 5) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), (b7: rt.u8): rt.u8 => { + return b7 ^ 1; + })) & 0xff); + } else { + rt.byteVecPush(out, rt.iterCount(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })) & 0xff); + } + } else if (pick === 6) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })))); + } else { + put(out, rt.iterLast(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }))); + } + } else if (pick === 7) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.iterForEach(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), (b6: rt.u8): undefined => { + rt.byteVecPush(out, b6); + }); + } else { + rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), (a0: rt.u8): rt.u32 => { + return a0 as rt.u32; + }), rt.u32Add, 0) & 0xff); + } + } else if (pick === 8) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterMinByKey(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), (b5: rt.u8): rt.u8 => { + return rt.u8Rem(b5, 3); + }, rt.lt)); + } else { + put(out, rt.iterMax(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), rt.lt)); + } + } else if (pick === 9) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterLast(rt.iterChain(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), rt.iterSlice(Uint8Array.of(7, 8))))); + } else { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), rt.iterSlice(Uint8Array.of(7, 8)))) & 0xff); + } + } else if (pick === 10) { + if (!(rt.usizeRem(k, 2) === 0)) { + const _118: ends_Run.Run = it; + const _119: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_118, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _119))); + } else { + const _113: ends_Run.Run = it; + const _114: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_113, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _114)) & 0xff); + } + } else if (pick === 11) { + const _121: rt.usize = rt.usizeRem(k, 4); + if (_121 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a6, 5) ^ b4; + })); + } else if (_121 === 1) { + put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), rt.usizeDiv(k, 4))); + } else if (_121 === 2) { + put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })))); + } else { + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a5, 5) ^ b3; + })); + } + } else if (pick === 12) { + const _139: ends_Run.Run = it; + const _140: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _140); + put(out, rt.iterToOption(skip.next())); + put(out, rt.iterToOption(skip.nextBack())); + } else if (pick === 13) { + const _150: ends_Run.Run = it; + const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _151), "next")); + } else if (pick === 14) { + if (!(rt.usizeRem(k, 2) === 0)) { + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, rt.iterCount(peek) & 0xff); + } else { + put(out, rt.iterLast(rt.iterFuse(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })))); + } + } else { + const _175: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a4, 1); + })); + put(out, rt.iterLast(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }))); + rt.byteVecPush(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); + } +} + /** * `fuse` of a `Flicker`, which reads on past its first `None`, or of a `Lapse`, which * doesn't, read by the bits of `bits` from either end. @@ -302,7 +931,7 @@ export function consumed$ends_Run(it: ends_Run.Run, pick: rt.u8, k: rt.usize, ou export function fuses(bits: rt.u8, out: rt.ByteVec): void { let _12!: rt.i32; const start: rt.u8 = bits >> 4; - const fused: rt.Iter = rt.iterFuse(rt.iterFrom({ _0: start }, (it: Flicker.Flicker) => Flicker.next$iter_Iterator(it), undefined, undefined, (it: Flicker.Flicker) => rt.iterFromOption(Flicker.nextBack$iter_DoubleEndedIterator(it))), true); + const fused: rt.Iter = rt.iterFuse(rt.iterFrom({ _0: start }, Flicker.next$iter_Iterator, undefined, { back: (it: Flicker.Flicker) => rt.iterFromOption(Flicker.nextBack$iter_DoubleEndedIterator(it)) }), true); let iterStart: rt.i32 = 0; const iterEnd: rt.i32 = 6; while ((_12 = iterStart++) < iterEnd) { @@ -312,13 +941,13 @@ export function fuses(bits: rt.u8, out: rt.ByteVec): void { put(out, rt.iterToOption(fused.nextBack())); } } - const lapsed: rt.Iter = rt.iterFuse(rt.iterFrom({ _0: { _0: start } }, (it: Lapse.Lapse) => Lapse.next$iter_Iterator(it))); + const lapsed: rt.Iter = rt.iterFuse(rt.iterFrom({ _0: { _0: start } }, Lapse.next$iter_Iterator)); let iterStart2: rt.i32 = 0; const iterEnd2: rt.i32 = 4; while (iterStart2++ < iterEnd2) { put(out, rt.iterToOption(lapsed.next())); } - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterTake(rt.iterFlatten(rt.iterSlice([{ _0: start }, { _0: rt.u8WrappingAdd(start, 1) }]), (value: Flicker.Flicker) => rt.iterFrom(value, (it: Flicker.Flicker) => Flicker.next$iter_Iterator(it), undefined, undefined, (it: Flicker.Flicker) => rt.iterFromOption(Flicker.nextBack$iter_DoubleEndedIterator(it))), true), 5), "next")), undefined, true); + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterTake(rt.iterFlatten(rt.iterSlice([{ _0: start }, { _0: rt.u8WrappingAdd(start, 1) }]), (value: Flicker.Flicker) => rt.iterFrom(value, Flicker.next$iter_Iterator, undefined, { back: (it: Flicker.Flicker) => rt.iterFromOption(Flicker.nextBack$iter_DoubleEndedIterator(it)) }), true), 5), "next")), undefined, true); } //# sourceMappingURL=ends.ts.map diff --git a/ts/fixtures/lang/expected/hints.ts b/ts/fixtures/lang/expected/hints.ts index bc9e248aa..eaceb31e8 100644 --- a/ts/fixtures/lang/expected/hints.ts +++ b/ts/fixtures/lang/expected/hints.ts @@ -1369,13 +1369,13 @@ export function walkFront$collections_hash_set_Iter_u8(it: rt.Iter, steps /** As `walk`, of an iterator that reads only from the front. */ export function walkFront$hints_Countdown(it: hints_Countdown.Countdown, steps: rt.u8, out: rt.ByteVec): void { - put(out, rt.iterFrom(it, (it: hints_Countdown.Countdown) => hints_Countdown.next$iter_Iterator(it)).sizeHint()); + put(out, rt.iterFrom(it, hints_Countdown.next$iter_Iterator).sizeHint()); const _9: rt.u8 = rt.u8Rem(steps, 4); let iterStart: rt.u8 = 0; const iterEnd: rt.u8 = _9; while (iterStart++ < iterEnd) { rt.iterToOption(hints_Countdown.next$iter_Iterator(it)); - put(out, rt.iterFrom(it, (it: hints_Countdown.Countdown) => hints_Countdown.next$iter_Iterator(it)).sizeHint()); + put(out, rt.iterFrom(it, hints_Countdown.next$iter_Iterator).sizeHint()); } } @@ -1702,7 +1702,6 @@ export function u32Of(n: rt.u64): rt.u32 { * front or the back by the third byte's other bits. */ export function hints(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { - let it!: rt.Peekable; const at: (a0: rt.usize) => rt.u8 = (i: rt.usize): rt.u8 => { return option_unwrapOr$0r2bmpr(rt.byteSliceGet(data, i), 0); }; @@ -1779,7 +1778,7 @@ export function hints(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { } else { const _131: Endless.Endless = { _0: n }; const _132: rt.usize = rt.usizeRem(rt.u64Low(n), 9); - walkFront$iter_Chain_iter_Take_hints_Endless_ops_Range_u64(rt.iterChain(rt.iterTake(rt.iterFrom(_131, (it: Endless.Endless) => Endless.next$iter_Iterator(it)), _132), new rt.Range(0, m, rt.u64Step)), steps, out); + walkFront$iter_Chain_iter_Take_hints_Endless_ops_Range_u64(rt.iterChain(rt.iterTake(rt.iterFrom(_131, Endless.next$iter_Iterator), _132), new rt.Range(0, m, rt.u64Step)), steps, out); } } else if (_37 === 5) { const _136: rt.u8 = rt.u8Rem(arm, 4); @@ -1788,11 +1787,11 @@ export function hints(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { } else if (_136 === 1) { const _142: Endless.Endless = { _0: n }; const _143: rt.Range = new rt.Range(0, u32Of(m)); - walkFront$iter_Zip_hints_Endless_ops_Range_u32(rt.iterZip(rt.iterFrom(_142, (it: Endless.Endless) => Endless.next$iter_Iterator(it)), _143), steps, out); + walkFront$iter_Zip_hints_Endless_ops_Range_u32(rt.iterZip(rt.iterFrom(_142, Endless.next$iter_Iterator), _143), steps, out); } else if (_136 === 2) { walk$iter_Zip_slice_Iter_u8_iter_Skip_slice_Iter_u8(rt.iterZip(rt.iterSlice(rt.byteSliceView(bytes)), rt.iterSkip(rt.iterSlice(rt.byteSliceView(bytes)), 1), [false, false]), steps, out); } else { - walkFront$iter_Zip_ops_Range_u32_hints_Endless(rt.iterZip(new rt.Range(0, u32Of(n)), rt.iterFrom({ _0: n }, (it: Endless.Endless) => Endless.next$iter_Iterator(it))), steps, out); + walkFront$iter_Zip_ops_Range_u32_hints_Endless(rt.iterZip(new rt.Range(0, u32Of(n)), rt.iterFrom({ _0: n }, Endless.next$iter_Iterator)), steps, out); } } else if (_37 === 6) { const _153: rt.u8 = rt.u8Rem(arm, 4); @@ -1801,11 +1800,11 @@ export function hints(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { } else if (_153 === 1) { walk$iter_Take_ops_Range_u32(rt.iterTake(new rt.Range(0, u32Of(n)), rt.u64Low(m)), steps, out); } else if (_153 === 2) { - walkFront$iter_Take_hints_Endless(rt.iterTake(rt.iterFrom({ _0: n }, (it: Endless.Endless) => Endless.next$iter_Iterator(it)), rt.u64Low(m)), steps, out); + walkFront$iter_Take_hints_Endless(rt.iterTake(rt.iterFrom({ _0: n }, Endless.next$iter_Iterator), rt.u64Low(m)), steps, out); } else { const _166: Endless.Endless = { _0: n }; const _167: rt.usize = rt.usizeRem(rt.u64Low(m), 9); - walkFront$iter_Skip_hints_Endless(rt.iterSkip(rt.iterFrom(_166, (it: Endless.Endless) => Endless.next$iter_Iterator(it)), _167), steps, out); + walkFront$iter_Skip_hints_Endless(rt.iterSkip(rt.iterFrom(_166, Endless.next$iter_Iterator), _167), steps, out); } } else if (_37 === 7) { const step: rt.usize = rt.usizeAdd(rt.usizeRem(at(1) as rt.usize, 7), 1); @@ -1842,7 +1841,7 @@ export function hints(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { return rt.u64CheckedSub(i17, 1); }), steps, out); } else { - walkFront$iter_Filter_hints_Endless_hints_hints_closure6(rt.iterFilter(rt.iterFrom({ _0: n }, (it: Endless.Endless) => Endless.next$iter_Iterator(it)), (_250: rt.u64): boolean => { + walkFront$iter_Filter_hints_Endless_hints_hints_closure6(rt.iterFilter(rt.iterFrom({ _0: n }, Endless.next$iter_Iterator), (_250: rt.u64): boolean => { return true; }), steps, out); } @@ -1866,16 +1865,16 @@ export function hints(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { } else if (_37 === 10) { const _219: rt.u8 = rt.u8Rem(arm, 4); if (_219 === 0) { - walkFront$iter_Fuse_hints_Endless(rt.iterFuse(rt.iterFrom({ _0: n }, (it: Endless.Endless) => Endless.next$iter_Iterator(it))), steps, out); + walkFront$iter_Fuse_hints_Endless(rt.iterFuse(rt.iterFrom({ _0: n }, Endless.next$iter_Iterator)), steps, out); } else if (_219 === 1) { - walkFront$iter_Fuse_iter_Take_hints_Endless(rt.iterFuse(rt.iterTake(rt.iterFrom({ _0: n }, (it: Endless.Endless) => Endless.next$iter_Iterator(it)), 2)), steps, out); + walkFront$iter_Fuse_iter_Take_hints_Endless(rt.iterFuse(rt.iterTake(rt.iterFrom({ _0: n }, Endless.next$iter_Iterator), 2)), steps, out); } else if (_219 === 2) { walk$iter_Fuse_ops_Range_u64(rt.iterFuse(new rt.Range(0, n, rt.u64Step)), steps, out); } else { - walkFront$iter_Fuse_hints_Countdown(rt.iterFuse(rt.iterFrom({ _0: rt.u64Low(n) & 0xff }, (it: hints_Countdown.Countdown) => hints_Countdown.next$iter_Iterator(it))), steps, out); + walkFront$iter_Fuse_hints_Countdown(rt.iterFuse(rt.iterFrom({ _0: rt.u64Low(n) & 0xff }, hints_Countdown.next$iter_Iterator)), steps, out); } } else if (_37 === 11) { - it = rt.iterPeekable(rt.iterChain(new rt.Range(0, n, rt.u64Step), new rt.Range(0, m, rt.u64Step))); + const it: rt.Peekable = rt.iterPeekable(rt.iterChain(new rt.Range(0, n, rt.u64Step), new rt.Range(0, m, rt.u64Step))); put(out, it.sizeHint()); const _240: rt.u8 = rt.u8Rem(steps, 4); let iterStart: rt.u8 = 0; diff --git a/ts/fixtures/lang/expected/iters.ts b/ts/fixtures/lang/expected/iters.ts index 4c45f7da8..8ac54910c 100644 --- a/ts/fixtures/lang/expected/iters.ts +++ b/ts/fixtures/lang/expected/iters.ts @@ -1643,7 +1643,7 @@ export function own(data: rt.ByteSlice, out: rt.ByteVec): void { } rt.byteVecPush(out, _13); } - rt.byteVecExtendFromSlice(out, rt.byteSliceFrom(rt.u64ToBeBytes(rt.iterSum(rt.iterMap(rt.iterFrom({ left, step }, (it: iters_Countdown.Countdown) => iters_Countdown.next$iter_Iterator(it)), (n4: rt.u8): rt.u64 => { + rt.byteVecExtendFromSlice(out, rt.byteSliceFrom(rt.u64ToBeBytes(rt.iterSum(rt.iterMap(rt.iterFrom({ left, step }, iters_Countdown.next$iter_Iterator), (n4: rt.u8): rt.u64 => { return rt.u64Div(rt.u64Mul(n4 as rt.u64, 1000), 7); }), rt.u64Add, 0)))); const down: iters_Countdown.Countdown = { left, step }; @@ -1658,9 +1658,9 @@ export function own(data: rt.ByteSlice, out: rt.ByteVec): void { } } rt.byteVecPush(out, down.left); - rt.byteVecExtendFromSlice(out, rt.byteVecSlice(rt.iterToByteVec(rt.iterFrom({ inner: rt.iterSlice(rt.byteSliceView(data)) }, (it: Evens.Evens) => Evens.next$iter_Iterator(it)), "next"))); + rt.byteVecExtendFromSlice(out, rt.byteVecSlice(rt.iterToByteVec(rt.iterFrom({ inner: rt.iterSlice(rt.byteSliceView(data)) }, Evens.next$iter_Iterator), "next"))); const byRef: Evens.Evens = { inner: rt.iterSlice(rt.byteSliceView(rt.byteSliceRange(data, rt.min(data.length, 1)))) }; - rt.byteVecExtendFromSlice(out, rt.byteVecSlice(rt.iterToByteVec(rt.iterTake(rt.iterFrom(byRef, (it: Evens.Evens) => Evens.next$iter_Iterator(it)), 2), "next"))); + rt.byteVecExtendFromSlice(out, rt.byteVecSlice(rt.iterToByteVec(rt.iterTake(rt.iterFrom(byRef, Evens.next$iter_Iterator), 2), "next"))); const iter2: Evens.Evens = byRef; while (true) { const _60: rt.u8 | rt.Done = Evens.next$iter_Iterator(iter2); @@ -1674,9 +1674,9 @@ export function own(data: rt.ByteSlice, out: rt.ByteVec): void { break; } } - rt.byteVecPush(out, rt.iterCount(rt.iterFrom(byRef, (it: Evens.Evens) => Evens.next$iter_Iterator(it))) & 0xff); - rt.byteVecExtendFromSlice(out, rt.byteVecSlice(rt.iterToByteVec(rt.iterFrom(new Halving.Halving(left), (it: Halving.Halving) => Halving.next$iter_Iterator_u8(it)), "next"))); - rt.byteVecExtendFromSlice(out, rt.byteSliceFrom(rt.u64ToBeBytes(rt.iterSum(rt.iterFrom(new Halving.Halving(rt.u64Mul(left as rt.u64, 4294967297)), (it: Halving.Halving) => Halving.next$iter_Iterator_u64(it)), rt.u64Add, 0)))); + rt.byteVecPush(out, rt.iterCount(rt.iterFrom(byRef, Evens.next$iter_Iterator)) & 0xff); + rt.byteVecExtendFromSlice(out, rt.byteVecSlice(rt.iterToByteVec(rt.iterFrom(new Halving.Halving(left), Halving.next$iter_Iterator_u8), "next"))); + rt.byteVecExtendFromSlice(out, rt.byteSliceFrom(rt.u64ToBeBytes(rt.iterSum(rt.iterFrom(new Halving.Halving(rt.u64Mul(left as rt.u64, 4294967297)), Halving.next$iter_Iterator_u64), rt.u64Add, 0)))); } /** diff --git a/ts/fixtures/lang/expected/strs.ts b/ts/fixtures/lang/expected/strs.ts index a3e6f98f0..a7a89e7e8 100644 --- a/ts/fixtures/lang/expected/strs.ts +++ b/ts/fixtures/lang/expected/strs.ts @@ -1229,7 +1229,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.iterEmpty(); fmt_put(out, rt.stringExtendChars("", rt.iterEmpty() as rt.Iter)); fmt_put(out, rt.stringExtendChars("", rt.iterOption(rt.charFromU32(kind as rt.u32)))); - fmt_put(out, rt.stringExtendChars("", rt.iterFrom({ items: chars, nexts }, (it: strs_Counted.Counted) => strs_Counted.next$iter_Iterator_char(it)))); + fmt_put(out, rt.stringExtendChars("", rt.iterFrom({ items: chars, nexts }, strs_Counted.next$iter_Iterator_char))); } else if (_21 === 1) { fmt_put(out, rt.stringExtend("", rt.iterSlice(parts))); fmt_put(out, rt.stringExtend("", rt.iterRev(rt.strSplit(s, "/")))); @@ -1252,7 +1252,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { fmt_put(out, rt.stringFromStrings(rt.iterMap(rt.iterSlice(owned), (p7: string): string => { return p7; }))); - fmt_put(out, rt.stringFromStrings(rt.iterFrom({ items: owned, nexts }, (it: strs_Counted.Counted) => strs_Counted.next$iter_Iterator_String(it)))); + fmt_put(out, rt.stringFromStrings(rt.iterFrom({ items: owned, nexts }, strs_Counted.next$iter_Iterator_String))); } else if (_21 === 2) { let t: string = "é"; const _153: rt.char[] = chars; @@ -1263,7 +1263,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.iterEmpty(); named.name = rt.stringExtendChars(named.name, rt.iterEmpty() as rt.Iter); const counted3: strs_Counted.Counted = { items: chars, nexts }; - t = rt.stringExtendChars(t, rt.iterFrom(counted3, (it: strs_Counted.Counted) => strs_Counted.next$iter_Iterator_char(it))); + t = rt.stringExtendChars(t, rt.iterFrom(counted3, strs_Counted.next$iter_Iterator_char)); fmt_put(out, t); } else { let t2: string = ""; @@ -1283,7 +1283,7 @@ export function iters(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { rt.iterEmpty(); named.name = rt.stringExtend(named.name, rt.iterEmpty() as rt.Iter); const counted4: strs_Counted.Counted = { items: parts, nexts }; - t2 = rt.stringExtend(t2, rt.iterFrom(counted4, (it: strs_Counted.Counted) => strs_Counted.next$iter_Iterator_ref_str(it))); + t2 = rt.stringExtend(t2, rt.iterFrom(counted4, strs_Counted.next$iter_Iterator_ref_str)); fmt_put(out, t2); } fmt_put(out, named.name); diff --git a/ts/fixtures/lang/src/ends.rs b/ts/fixtures/lang/src/ends.rs index 3241450f6..fa8665190 100644 --- a/ts/fixtures/lang/src/ends.rs +++ b/ts/fixtures/lang/src/ends.rs @@ -1,6 +1,7 @@ //! The crate's own iterators that read from the back, know their length, and say they stay -//! ended, with their own size hints: std's adaptors and consumers call each method where -//! native's do, and `fuse` reads on past the end of one that says it stays ended. +//! ended, with their own size hints, `nth`s, folds, `count`, and `last`: std's adaptors and +//! consumers call each method where native's do, and `fuse` reads on past the end of one +//! that says it stays ended. use std::cell::RefCell; use std::iter::FusedIterator; @@ -87,6 +88,75 @@ impl ExactSizeIterator for Counted<'_> { } } +/// A `Run` with its own `nth`, `nth_back`, `fold`, `rfold`, `count`, and `last`, each logged +/// as `N`, `B`, `f`, `r`, `c`, and `L`, which std's adaptors and consumers call in place of +/// `next` and `next_back`. Its `count` reads nothing, and its `last` reads from the back. +struct Overrides<'a>(Run<'a>); + +impl Iterator for Overrides<'_> { + type Item = u8; + + fn next(&mut self) -> Option { + self.0.next() + } + + fn size_hint(&self) -> (usize, Option) { + self.0.size_hint() + } + + fn nth(&mut self, n: usize) -> Option { + self.0.logged(b'N'); + for _ in 0..n { + self.0.next()?; + } + self.0.next() + } + + fn fold B>(mut self, init: B, mut f: F) -> B { + self.0.logged(b'f'); + let mut acc = init; + while let Some(b) = self.0.next() { + acc = f(acc, b); + } + acc + } + + fn count(self) -> usize { + self.0.logged(b'c'); + usize::from(self.0.left()) + } + + fn last(mut self) -> Option { + self.0.logged(b'L'); + self.0.next_back() + } +} + +impl DoubleEndedIterator for Overrides<'_> { + fn next_back(&mut self) -> Option { + self.0.next_back() + } + + fn nth_back(&mut self, n: usize) -> Option { + self.0.logged(b'B'); + for _ in 0..n { + self.0.next_back()?; + } + self.0.next_back() + } + + fn rfold B>(mut self, init: B, mut f: F) -> B { + self.0.logged(b'r'); + let mut acc = init; + while let Some(b) = self.0.next_back() { + acc = f(acc, b); + } + acc + } +} + +impl ExactSizeIterator for Overrides<'_> {} + /// Yields every other call to `next`, from either end, ending between: a `FusedIterator` /// that isn't, which std's `fuse` reads on from as it would one that is. struct Flicker(u8); @@ -140,7 +210,8 @@ fn put_vec(out: &mut Vec, v: Vec) { /// The run `data`'s first byte picks steps through with each of its other bytes, read /// directly, through `&mut`, or by std's adaptors, and consumed by the third byte's pick, -/// with what each read and each call of its methods logged. +/// by `consumed`, or by `folded` past the fifth `kind`, with what each read and each call +/// of its methods logged. pub fn ends(kind: u8, data: &[u8], out: &mut Vec) { let [shape, consume, steps @ ..] = data else { return; @@ -170,9 +241,14 @@ pub fn ends(kind: u8, data: &[u8], out: &mut Vec) { } } let k = usize::from(consume >> 4); - match kind % 4 { - 0 => consumed(run, consume % 16, k, out), - 1 => consumed(Counted(run), consume % 16, k, out), + let (pick, folds) = (consume % 16, kind % 10 >= 5); + match kind % 5 { + 0 if folds => folded(run, pick, k, &log, out), + 1 if folds => folded(Counted(run), pick, k, &log, out), + 4 if folds => folded(Overrides(run), pick, k, &log, out), + 0 => consumed(run, pick, k, out), + 1 => consumed(Counted(run), pick, k, out), + 4 => consumed(Overrides(run), pick, k, out), 2 => fuses(*consume, out), _ => { // Mixed from either end, by the bits of `consume`, until they meet. @@ -249,6 +325,94 @@ fn consumed + ExactSizeIterator>(mut it: I, pi } } +/// `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its +/// `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One +/// fold panics past `k` items, with what was logged so far. +fn folded + ExactSizeIterator>(mut it: I, pick: u8, k: usize, log: &RefCell>, out: &mut Vec) { + let k8 = k as u8; + match pick { + 0 => out.push(it.fold(1u8, |a, b| a.wrapping_mul(3) ^ b)), + 1 => out.push(it.rfold(1u8, |a, b| { + assert!(k < 15 || b != 2, "rfold at {b} after {:?}", log.borrow().as_slice()); + a.wrapping_mul(3) ^ b + })), + // Each `try_rfold` breaks at an item, then the rest are read on by `next`. + 2 if k % 2 == 0 => { + put(out, it.try_rfold(0u8, |a, b| (b != k8).then_some(a ^ b))); + out.extend(it); + } + // Of an `Option` accumulator, whose `Some(None)` goes on and whose `None` breaks. + 2 => { + let r = it.try_rfold(None, |a: Option, b| match b % 3 { + 0 => None, + 1 => Some(None), + _ => Some(a.or(Some(b))), + }); + out.extend(match r { + Some(a) => [0, a.unwrap_or(0xff)], + None => [1, 0], + }); + out.extend(it); + } + 3 => { + let r: Result = it.try_rfold(0u8, |a, b| if b % 4 == k8 % 4 { Err(b) } else { Ok(a ^ b) }); + out.extend(match r { + Ok(a) => [0, a], + Err(b) => [1, b], + }); + put(out, it.next()); + } + 4 => { + use std::ops::ControlFlow; + let r = it.by_ref().rev().try_rfold(0u8, |a, b| match b > k8 { + true => ControlFlow::Break(b), + false => ControlFlow::Continue(a ^ b), + }); + out.extend(match r { + ControlFlow::Continue(a) => [0, a], + ControlFlow::Break(b) => [1, b], + }); + out.push(it.len() as u8); + } + 5 if k % 2 == 0 => out.push(it.count() as u8), + 5 => out.push(it.map(|b| b ^ 1).count() as u8), + 6 if k % 2 == 0 => put(out, it.last()), + 6 => put(out, it.rev().last()), + 7 if k % 2 == 0 => out.push(it.map(u32::from).sum::() as u8), + 7 => it.for_each(|b| out.push(b)), + 8 if k % 2 == 0 => put(out, it.max()), + 8 => put(out, it.min_by_key(|b| b % 3)), + 9 if k % 2 == 0 => out.push(it.chain([7, 8]).count() as u8), + 9 => put(out, it.chain([7, 8]).last()), + 10 if k % 2 == 0 => out.push(it.skip(k / 2).count() as u8), + 10 => put(out, it.skip(k / 2).last()), + 11 => match k % 4 { + 0 => out.push(it.rev().fold(1u8, |a, b| a.wrapping_mul(5) ^ b)), + 1 => put(out, it.rev().nth(k / 4)), + 2 => put(out, it.rev().last()), + _ => out.push(it.rev().rfold(1u8, |a, b| a.wrapping_mul(5) ^ b)), + }, + 12 => { + let mut skip = it.skip(k / 2); + put(out, skip.next()); + put(out, skip.next_back()); + } + 13 => put_vec(out, it.step_by(k / 4 + 1).collect()), + 14 if k % 2 == 0 => put(out, it.fuse().last()), + 14 => { + let mut peek = it.peekable(); + put(out, peek.peek().copied()); + out.push(peek.count() as u8); + } + // Through `&mut`, which reads by `try_fold` rather than its by-value methods. + _ => { + out.push((&mut it).take(k / 2).fold(0u8, |a, _| a + 1)); + put(out, (&mut it).last()); + out.push(it.len() as u8); + } + } +} + /// `fuse` of a `Flicker`, which reads on past its first `None`, or of a `Lapse`, which /// doesn't, read by the bits of `bits` from either end. fn fuses(bits: u8, out: &mut Vec) { diff --git a/ts/fixtures/reject/census.md b/ts/fixtures/reject/census.md index a1f7273ab..93e951eaa 100644 --- a/ts/fixtures/reject/census.md +++ b/ts/fixtures/reject/census.md @@ -38,7 +38,6 @@ | 2 | a raw pointer to a place of `()`, which has no address of its own | fixtures/reject/src/lib.rs:676:15 | | 2 | an upcast from `_` to `_`, which is not supported yet | fixtures/reject/src/lib.rs:474:32 | | 2 | comparing pointers to `_`, each a place JS makes of its own | fixtures/reject/src/lib.rs:544:2 | -| 2 | overriding `_`, which std's adaptors call in place of `next` or beside it | fixtures/reject/src/lib.rs:125:2 | | 2 | passing `_`, which drops, to `_`, which is not supported yet | fixtures/reject/src/lib.rs:275:4 | | 2 | unsupported type `_` from another crate | fixtures/reject/src/lib.rs:387:32 | | 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | fixtures/reject/src/lib.rs:709:2 | @@ -96,6 +95,8 @@ | 1 | hashing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:206:75 | | 1 | hashing `_` by its address, which JS has no counterpart of | fixtures/reject/src/lib.rs:1664:5 | | 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | fixtures/reject/src/lib.rs:266:16 | +| 1 | overriding `_` with its accumulator in an `Option` or a `_`, which is not supported yet | fixtures/reject/src/lib.rs:125:2 | +| 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | fixtures/reject/src/lib.rs:150:2 | | 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | fixtures/reject/src/lib.rs:530:1 | ## By API @@ -120,6 +121,7 @@ The type or module each refused type or path belongs to. | 3 | `Iterator` | fixtures/reject/src/lib.rs:37:4 | | 3 | `Mid` | fixtures/reject/src/lib.rs:1303:34 | | 3 | `Outer` | fixtures/reject/src/lib.rs:1303:34 | +| 3 | `Poll` | fixtures/reject/src/lib.rs:72:20 | | 3 | `Reused` | fixtures/reject/src/lib.rs:21:4 | | 3 | `dyn std::any::Any` | fixtures/reject/src/lib.rs:474:32 | | 3 | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2314:2 | @@ -132,7 +134,6 @@ The type or module each refused type or path belongs to. | 2 | `InTuple` | fixtures/reject/src/lib.rs:1254:9 | | 2 | `InWritten` | fixtures/reject/src/lib.rs:1274:9 | | 2 | `Inside` | fixtures/reject/src/lib.rs:1793:20 | -| 2 | `Poll` | fixtures/reject/src/lib.rs:72:20 | | 2 | `Scaled` | fixtures/reject/src/lib.rs:406:23 | | 2 | `[u32; 3]` | fixtures/reject/src/lib.rs:2138:10 | | 2 | `[u8; 2]` | fixtures/reject/src/lib.rs:1674:37 | @@ -428,8 +429,8 @@ The type or module each refused type or path belongs to. | 1 | hashing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:206:75 | | 1 | hashing `_` by its address, which JS has no counterpart of | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1664:5 | | 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | `std::vec::Vec`, `Batched` | fixtures/reject/src/lib.rs:266:16 | -| 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | `DoubleEndedIterator::nth_back` | fixtures/reject/src/lib.rs:150:2 | -| 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | `Iterator::fold` | fixtures/reject/src/lib.rs:125:2 | +| 1 | overriding `_` with its accumulator in an `Option` or a `_`, which is not supported yet | `Iterator::fold`, `Poll` | fixtures/reject/src/lib.rs:125:2 | +| 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | `DoubleEndedIterator::rfind` | fixtures/reject/src/lib.rs:150:2 | | 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `String::retain` | fixtures/reject/src/lib.rs:732:4 | | 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `str::contains` | fixtures/reject/src/lib.rs:275:4 | | 1 | replacing the value behind a reference to `_` | `std::sync::MutexGuard` | fixtures/reject/src/lib.rs:112:2 | @@ -805,13 +806,6 @@ The type or module each refused type or path belongs to. -
overriding `_`, which std's adaptors call in place of `next` or beside it (2) - -- fixtures/reject/src/lib.rs:125:2: overriding `Iterator::fold`, which std's adaptors call in place of `next` or beside it -- fixtures/reject/src/lib.rs:150:2: overriding `DoubleEndedIterator::nth_back`, which std's adaptors call in place of `next` or beside it - -
-
passing `_`, which drops, to `_`, which is not supported yet (2) - fixtures/reject/src/lib.rs:275:4: passing `{closure@fixtures/reject/src/lib.rs:275:13: 275:27}`, which drops, to `str::contains`, which is not supported yet @@ -1156,6 +1150,18 @@ The type or module each refused type or path belongs to.
+
overriding `_` with its accumulator in an `Option` or a `_`, which is not supported yet (1) + +- fixtures/reject/src/lib.rs:125:2: overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet + +
+ +
overriding `_`, which std's adaptors call in place of `next` or beside it (1) + +- fixtures/reject/src/lib.rs:150:2: overriding `DoubleEndedIterator::rfind`, which std's adaptors call in place of `next` or beside it + +
+
union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart (1) - fixtures/reject/src/lib.rs:530:1: union `Bits`, whose fields overlap in `u32` and `f64`, which JS keeps apart diff --git a/ts/fixtures/reject/expected.txt b/ts/fixtures/reject/expected.txt index 4ebe54150..4d9b73fee 100644 --- a/ts/fixtures/reject/expected.txt +++ b/ts/fixtures/reject/expected.txt @@ -241,8 +241,8 @@ memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the byte memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2297:17 memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2298:21 memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2300:17 -overriding `Iterator::fold`, which std's adaptors call in place of `next` or beside it at fixtures/reject/src/lib.rs:125:2 -overriding `DoubleEndedIterator::nth_back`, which std's adaptors call in place of `next` or beside it at fixtures/reject/src/lib.rs:150:2 +overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet at fixtures/reject/src/lib.rs:125:2 +overriding `DoubleEndedIterator::rfind`, which std's adaptors call in place of `next` or beside it at fixtures/reject/src/lib.rs:150:2 a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Escaped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1020:43 a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Called`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1034:28 a raw pointer to `(u16, u16)` in `Copied`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1124:31 diff --git a/ts/fixtures/reject/src/lib.rs b/ts/fixtures/reject/src/lib.rs index b69a8f453..41e48beb8 100644 --- a/ts/fixtures/reject/src/lib.rs +++ b/ts/fixtures/reject/src/lib.rs @@ -112,7 +112,7 @@ pub fn swap_guards<'a>(a: &mut std::sync::MutexGuard<'a, u8>, b: &mut std::sync: std::mem::swap(a, b); } -/// An iterator whose `fold` std's adaptors would call in place of its `next`. +/// An iterator whose own `fold` holds its accumulator in an `Option`, of an `rt.None` or not. pub struct Folds; impl Iterator for Folds { @@ -123,7 +123,7 @@ impl Iterator for Folds { } fn fold B>(self, init: B, _f: F) -> B { - init + Some(init).unwrap() } } @@ -131,7 +131,7 @@ pub fn folds() -> usize { Folds.map(|b| b + 1).count() } -/// An iterator whose `nth_back` std's adaptors would call in place of its `next_back`. +/// An iterator whose `rfind` std's adaptors would call in place of its `next_back`. pub struct Backs; impl Iterator for Backs { @@ -147,13 +147,13 @@ impl DoubleEndedIterator for Backs { None } - fn nth_back(&mut self, _n: usize) -> Option { + fn rfind bool>(&mut self, _p: P) -> Option { Some(0) } } -pub fn backs() -> usize { - Backs.rev().skip(1).count() +pub fn backs() -> Option { + Backs.rev().find(|&b| b == 0) } /// JS compares objects by identity, not by `PartialOrd`. diff --git a/ts/fixtures/stock/expected/hashlink/linked_hash_map.Keys.ts b/ts/fixtures/stock/expected/hashlink/linked_hash_map.Keys.ts index 312f5ddcf..54dd3fc38 100644 --- a/ts/fixtures/stock/expected/hashlink/linked_hash_map.Keys.ts +++ b/ts/fixtures/stock/expected/hashlink/linked_hash_map.Keys.ts @@ -25,7 +25,7 @@ export function nextBack$iter_DoubleEndedIterator_u16_u32(self: Keys): rt.usize { - return rt.iterFrom(self.inner, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it))).len(); + return rt.iterFrom(self.inner, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }).len(); } //# sourceMappingURL=linked_hash_map.Keys.ts.map diff --git a/ts/fixtures/stock/expected/hashlink/linked_hash_map.Values.ts b/ts/fixtures/stock/expected/hashlink/linked_hash_map.Values.ts index c869096d2..a8b52fc55 100644 --- a/ts/fixtures/stock/expected/hashlink/linked_hash_map.Values.ts +++ b/ts/fixtures/stock/expected/hashlink/linked_hash_map.Values.ts @@ -25,7 +25,7 @@ export function nextBack$iter_DoubleEndedIterator_u16_u32(self: Values): rt.usize { - return rt.iterFrom(self.inner, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it))).len(); + return rt.iterFrom(self.inner, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }).len(); } //# sourceMappingURL=linked_hash_map.Values.ts.map diff --git a/ts/fixtures/stock/expected/hashlink/linked_hash_map.ValuesMut.ts b/ts/fixtures/stock/expected/hashlink/linked_hash_map.ValuesMut.ts index beb590cfc..c46de6f79 100644 --- a/ts/fixtures/stock/expected/hashlink/linked_hash_map.ValuesMut.ts +++ b/ts/fixtures/stock/expected/hashlink/linked_hash_map.ValuesMut.ts @@ -25,7 +25,7 @@ export function nextBack$iter_DoubleEndedIterator_u16_u32(self: ValuesMut): rt.usize { - return rt.iterFrom(self.inner, (it: IterMut.IterMut) => IterMut.next$iter_Iterator_u16_u32(it), undefined, (it: IterMut.IterMut) => IterMut.sizeHint$iter_Iterator_u16_u32(it), (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it))).len(); + return rt.iterFrom(self.inner, IterMut.next$iter_Iterator_u16_u32, undefined, { hint: IterMut.sizeHint$iter_Iterator_u16_u32, back: (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }).len(); } //# sourceMappingURL=linked_hash_map.ValuesMut.ts.map diff --git a/ts/fixtures/stock/expected/maps.ts b/ts/fixtures/stock/expected/maps.ts index ecfd975f6..e50e57e21 100644 --- a/ts/fixtures/stock/expected/maps.ts +++ b/ts/fixtures/stock/expected/maps.ts @@ -725,9 +725,9 @@ export function ends$hashlink_linked_hash_map_Drain_u16_u32_maps_linked_iters_cl } else if (_20 === 1) { item = linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it); } else if (_20 === 2) { - item = rt.iterNth(rt.iterFrom(it, (it: linked_hash_map_Drain.Drain) => linked_hash_map_Drain.next$iter_Iterator_u16_u32(it), lib_drop$hashlink_linked_hash_map_Drain_u16_u32, (it: linked_hash_map_Drain.Drain) => linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Drain.Drain) => rt.iterFromOption(linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNth(rt.iterFrom(it, linked_hash_map_Drain.next$iter_Iterator_u16_u32, lib_drop$hashlink_linked_hash_map_Drain_u16_u32, { hint: linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Drain.Drain) => rt.iterFromOption(linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } else { - item = rt.iterNthBack(rt.iterFrom(it, (it: linked_hash_map_Drain.Drain) => linked_hash_map_Drain.next$iter_Iterator_u16_u32(it), lib_drop$hashlink_linked_hash_map_Drain_u16_u32, (it: linked_hash_map_Drain.Drain) => linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Drain.Drain) => rt.iterFromOption(linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNthBack(rt.iterFrom(it, linked_hash_map_Drain.next$iter_Iterator_u16_u32, lib_drop$hashlink_linked_hash_map_Drain_u16_u32, { hint: linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Drain.Drain) => rt.iterFromOption(linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } put(out, option_mapOr$0iaogpf(item, 256, f)); const _32: [rt.usize, rt.usize | undefined] = linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32(it); @@ -736,7 +736,7 @@ export function ends$hashlink_linked_hash_map_Drain_u16_u32_maps_linked_iters_cl put(out, lower); put(out, option_unwrapOr$0l7j3f6(upper, 256)); } - const iter2: rt.Iter<[rt.u16, rt.u32]> = rt.iterRev(rt.iterFrom(it, (it: linked_hash_map_Drain.Drain) => linked_hash_map_Drain.next$iter_Iterator_u16_u32(it), lib_drop$hashlink_linked_hash_map_Drain_u16_u32, (it: linked_hash_map_Drain.Drain) => linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Drain.Drain) => rt.iterFromOption(linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it)))); + const iter2: rt.Iter<[rt.u16, rt.u32]> = rt.iterRev(rt.iterFrom(it, linked_hash_map_Drain.next$iter_Iterator_u16_u32, lib_drop$hashlink_linked_hash_map_Drain_u16_u32, { hint: linked_hash_map_Drain.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Drain.Drain) => rt.iterFromOption(linked_hash_map_Drain.nextBack$iter_DoubleEndedIterator_u16_u32(it)) })); while (true) { const _41: [rt.u16, rt.u32] | rt.Done = iter2.next(); if (_41 === rt.DONE) { @@ -768,9 +768,9 @@ export function ends$hashlink_linked_hash_map_IntoIter_u16_u32_maps_linked_iters } else if (_20 === 1) { item = linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it); } else if (_20 === 2) { - item = rt.iterNth(rt.iterFrom(it, (it: linked_hash_map_IntoIter.IntoIter) => linked_hash_map_IntoIter.next$iter_Iterator_u16_u32(it), lib_drop$hashlink_linked_hash_map_IntoIter_u16_u32, (it: linked_hash_map_IntoIter.IntoIter) => linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_IntoIter.IntoIter) => rt.iterFromOption(linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNth(rt.iterFrom(it, linked_hash_map_IntoIter.next$iter_Iterator_u16_u32, lib_drop$hashlink_linked_hash_map_IntoIter_u16_u32, { hint: linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_IntoIter.IntoIter) => rt.iterFromOption(linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } else { - item = rt.iterNthBack(rt.iterFrom(it, (it: linked_hash_map_IntoIter.IntoIter) => linked_hash_map_IntoIter.next$iter_Iterator_u16_u32(it), lib_drop$hashlink_linked_hash_map_IntoIter_u16_u32, (it: linked_hash_map_IntoIter.IntoIter) => linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_IntoIter.IntoIter) => rt.iterFromOption(linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNthBack(rt.iterFrom(it, linked_hash_map_IntoIter.next$iter_Iterator_u16_u32, lib_drop$hashlink_linked_hash_map_IntoIter_u16_u32, { hint: linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_IntoIter.IntoIter) => rt.iterFromOption(linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } put(out, option_mapOr$0iaogpf(item, 256, f)); const _32: [rt.usize, rt.usize | undefined] = linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32(it); @@ -779,7 +779,7 @@ export function ends$hashlink_linked_hash_map_IntoIter_u16_u32_maps_linked_iters put(out, lower); put(out, option_unwrapOr$0l7j3f6(upper, 256)); } - const iter2: rt.Iter<[rt.u16, rt.u32]> = rt.iterRev(rt.iterFrom(it, (it: linked_hash_map_IntoIter.IntoIter) => linked_hash_map_IntoIter.next$iter_Iterator_u16_u32(it), lib_drop$hashlink_linked_hash_map_IntoIter_u16_u32, (it: linked_hash_map_IntoIter.IntoIter) => linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_IntoIter.IntoIter) => rt.iterFromOption(linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it)))); + const iter2: rt.Iter<[rt.u16, rt.u32]> = rt.iterRev(rt.iterFrom(it, linked_hash_map_IntoIter.next$iter_Iterator_u16_u32, lib_drop$hashlink_linked_hash_map_IntoIter_u16_u32, { hint: linked_hash_map_IntoIter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_IntoIter.IntoIter) => rt.iterFromOption(linked_hash_map_IntoIter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) })); while (true) { const _41: [rt.u16, rt.u32] | rt.Done = iter2.next(); if (_41 === rt.DONE) { @@ -811,9 +811,9 @@ export function ends$hashlink_linked_hash_map_IterMut_u16_u32_maps_linked_iters_ } else if (_20 === 1) { item = IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it); } else if (_20 === 2) { - item = rt.iterNth(rt.iterFrom(it, (it: IterMut.IterMut) => IterMut.next$iter_Iterator_u16_u32(it), undefined, (it: IterMut.IterMut) => IterMut.sizeHint$iter_Iterator_u16_u32(it), (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNth(rt.iterFrom(it, IterMut.next$iter_Iterator_u16_u32, undefined, { hint: IterMut.sizeHint$iter_Iterator_u16_u32, back: (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } else { - item = rt.iterNthBack(rt.iterFrom(it, (it: IterMut.IterMut) => IterMut.next$iter_Iterator_u16_u32(it), undefined, (it: IterMut.IterMut) => IterMut.sizeHint$iter_Iterator_u16_u32(it), (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNthBack(rt.iterFrom(it, IterMut.next$iter_Iterator_u16_u32, undefined, { hint: IterMut.sizeHint$iter_Iterator_u16_u32, back: (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } put(out, option_mapOr$1noewr3(item, 256, f)); const _32: [rt.usize, rt.usize | undefined] = IterMut.sizeHint$iter_Iterator_u16_u32(it); @@ -822,7 +822,7 @@ export function ends$hashlink_linked_hash_map_IterMut_u16_u32_maps_linked_iters_ put(out, lower); put(out, option_unwrapOr$0l7j3f6(upper, 256)); } - const iter2: rt.Iter<[rt.u16, rt.Place]> = rt.iterRev(rt.iterFrom(it, (it: IterMut.IterMut) => IterMut.next$iter_Iterator_u16_u32(it), undefined, (it: IterMut.IterMut) => IterMut.sizeHint$iter_Iterator_u16_u32(it), (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)))); + const iter2: rt.Iter<[rt.u16, rt.Place]> = rt.iterRev(rt.iterFrom(it, IterMut.next$iter_Iterator_u16_u32, undefined, { hint: IterMut.sizeHint$iter_Iterator_u16_u32, back: (it: IterMut.IterMut) => rt.iterFromOption(IterMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)) })); while (true) { const _41: [rt.u16, rt.Place] | rt.Done = iter2.next(); if (_41 === rt.DONE) { @@ -853,9 +853,9 @@ export function ends$hashlink_linked_hash_map_Iter_u16_u32_maps_linked_iters_clo } else if (_20 === 1) { item = linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it); } else if (_20 === 2) { - item = rt.iterNth(rt.iterFrom(it, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNth(rt.iterFrom(it, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } else { - item = rt.iterNthBack(rt.iterFrom(it, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it))), n); + item = rt.iterNthBack(rt.iterFrom(it, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), n); } put(out, option_mapOr$0iaogpf(item, 256, f)); const _32: [rt.usize, rt.usize | undefined] = linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it); @@ -864,7 +864,7 @@ export function ends$hashlink_linked_hash_map_Iter_u16_u32_maps_linked_iters_clo put(out, lower); put(out, option_unwrapOr$0l7j3f6(upper, 256)); } - const iter2: rt.Iter<[rt.u16, rt.u32]> = rt.iterRev(rt.iterFrom(it, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)))); + const iter2: rt.Iter<[rt.u16, rt.u32]> = rt.iterRev(rt.iterFrom(it, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) })); while (true) { const _41: [rt.u16, rt.u32] | rt.Done = iter2.next(); if (_41 === rt.DONE) { @@ -895,9 +895,9 @@ export function ends$hashlink_linked_hash_map_Keys_u16_u32_maps_linked_iters_clo } else if (_20 === 1) { item = Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it); } else if (_20 === 2) { - item = rt.iterNth(rt.iterFrom(it, (it: Keys.Keys) => Keys.next$iter_Iterator_u16_u32(it), undefined, (it: Keys.Keys) => Keys.sizeHint$iter_Iterator_u16_u32(it), (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: Keys.Keys) => Keys.len$iter_ExactSizeIterator_u16_u32(it)), n); + item = rt.iterNth(rt.iterFrom(it, Keys.next$iter_Iterator_u16_u32, undefined, { hint: Keys.sizeHint$iter_Iterator_u16_u32, back: (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: Keys.len$iter_ExactSizeIterator_u16_u32 }), n); } else { - item = rt.iterNthBack(rt.iterFrom(it, (it: Keys.Keys) => Keys.next$iter_Iterator_u16_u32(it), undefined, (it: Keys.Keys) => Keys.sizeHint$iter_Iterator_u16_u32(it), (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: Keys.Keys) => Keys.len$iter_ExactSizeIterator_u16_u32(it)), n); + item = rt.iterNthBack(rt.iterFrom(it, Keys.next$iter_Iterator_u16_u32, undefined, { hint: Keys.sizeHint$iter_Iterator_u16_u32, back: (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: Keys.len$iter_ExactSizeIterator_u16_u32 }), n); } put(out, option_mapOr$0yixjb2(item, 256, f)); const _32: [rt.usize, rt.usize | undefined] = Keys.sizeHint$iter_Iterator_u16_u32(it); @@ -906,7 +906,7 @@ export function ends$hashlink_linked_hash_map_Keys_u16_u32_maps_linked_iters_clo put(out, lower); put(out, option_unwrapOr$0l7j3f6(upper, 256)); } - const iter2: rt.Iter = rt.iterRev(rt.iterFrom(it, (it: Keys.Keys) => Keys.next$iter_Iterator_u16_u32(it), undefined, (it: Keys.Keys) => Keys.sizeHint$iter_Iterator_u16_u32(it), (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: Keys.Keys) => Keys.len$iter_ExactSizeIterator_u16_u32(it))); + const iter2: rt.Iter = rt.iterRev(rt.iterFrom(it, Keys.next$iter_Iterator_u16_u32, undefined, { hint: Keys.sizeHint$iter_Iterator_u16_u32, back: (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: Keys.len$iter_ExactSizeIterator_u16_u32 })); while (true) { const _41: rt.u16 | rt.Done = iter2.next(); if (_41 === rt.DONE) { @@ -937,9 +937,9 @@ export function ends$hashlink_linked_hash_map_Values_u16_u32_maps_linked_iters_c } else if (_20 === 1) { item = linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it); } else if (_20 === 2) { - item = rt.iterNth(rt.iterFrom(it, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: linked_hash_map_Values.Values) => linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32(it)), n); + item = rt.iterNth(rt.iterFrom(it, linked_hash_map_Values.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32 }), n); } else { - item = rt.iterNthBack(rt.iterFrom(it, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: linked_hash_map_Values.Values) => linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32(it)), n); + item = rt.iterNthBack(rt.iterFrom(it, linked_hash_map_Values.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32 }), n); } put(out, option_mapOr$1vcgixw(item, 256, f)); const _32: [rt.usize, rt.usize | undefined] = linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32(it); @@ -948,7 +948,7 @@ export function ends$hashlink_linked_hash_map_Values_u16_u32_maps_linked_iters_c put(out, lower); put(out, option_unwrapOr$0l7j3f6(upper, 256)); } - const iter2: rt.Iter = rt.iterRev(rt.iterFrom(it, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: linked_hash_map_Values.Values) => linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32(it))); + const iter2: rt.Iter = rt.iterRev(rt.iterFrom(it, linked_hash_map_Values.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32 })); while (true) { const _41: rt.u32 | rt.Done = iter2.next(); if (_41 === rt.DONE) { @@ -994,7 +994,7 @@ export function linkedIters(dataData: Uint8Array, dataStart: number, dataLen: nu const _44: (a0: [rt.u16, rt.u32]) => undefined = (e2: [rt.u16, rt.u32]): undefined => { put(out, _34(e2)); }; - rt.iterForEach(rt.iterFrom(_42, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it))), _44); + rt.iterForEach(rt.iterFrom(_42, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }), _44); } else if (_35 === 2) { ends$hashlink_linked_hash_map_Keys_u16_u32_maps_linked_iters_closure3(LinkedHashMap.keys$u16_u32_hash_RandomState(m), new rt.ByteSlice(dataData, dataStart + 2, dataLen - 2), out, (k5: rt.u16): rt.usize => { return k5 as rt.usize; @@ -1016,14 +1016,14 @@ export function linkedIters(dataData: Uint8Array, dataStart: number, dataLen: nu } else if (_35 === 6) { it = LinkedHashMap.valuesMut$u16_u32_hash_RandomState(m); const _64: rt.usize = rt.usizeRem(k, 4); - put(out, option_mapOr$1787w44(rt.iterNthBack(rt.iterFrom(it, (it: ValuesMut.ValuesMut) => ValuesMut.next$iter_Iterator_u16_u32(it), undefined, (it: ValuesMut.ValuesMut) => ValuesMut.sizeHint$iter_Iterator_u16_u32(it), (it: ValuesMut.ValuesMut) => rt.iterFromOption(ValuesMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: ValuesMut.ValuesMut) => ValuesMut.len$iter_ExactSizeIterator_u16_u32(it)), _64), 256, (v: rt.Place): rt.usize => { + put(out, option_mapOr$1787w44(rt.iterNthBack(rt.iterFrom(it, ValuesMut.next$iter_Iterator_u16_u32, undefined, { hint: ValuesMut.sizeHint$iter_Iterator_u16_u32, back: (it: ValuesMut.ValuesMut) => rt.iterFromOption(ValuesMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: ValuesMut.len$iter_ExactSizeIterator_u16_u32 }), _64), 256, (v: rt.Place): rt.usize => { return v.v as rt.usize; })); put(out, ValuesMut.len$iter_ExactSizeIterator_u16_u32(it)); - rt.iterForEach(rt.iterRev(rt.iterFrom(it, (it: ValuesMut.ValuesMut) => ValuesMut.next$iter_Iterator_u16_u32(it), undefined, (it: ValuesMut.ValuesMut) => ValuesMut.sizeHint$iter_Iterator_u16_u32(it), (it: ValuesMut.ValuesMut) => rt.iterFromOption(ValuesMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: ValuesMut.ValuesMut) => ValuesMut.len$iter_ExactSizeIterator_u16_u32(it))), (v2: rt.Place): undefined => { + rt.iterForEach(rt.iterRev(rt.iterFrom(it, ValuesMut.next$iter_Iterator_u16_u32, undefined, { hint: ValuesMut.sizeHint$iter_Iterator_u16_u32, back: (it: ValuesMut.ValuesMut) => rt.iterFromOption(ValuesMut.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: ValuesMut.len$iter_ExactSizeIterator_u16_u32 })), (v2: rt.Place): undefined => { v2.v = rt.u32Add(v2.v, 1); }); - rt.iterForEach(rt.iterFrom(LinkedHashMap.values$u16_u32_hash_RandomState(m), (it: linked_hash_map_Values.Values) => linked_hash_map_Values.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Values.Values) => linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: linked_hash_map_Values.Values) => linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32(it)), (v3: rt.u32): undefined => { + rt.iterForEach(rt.iterFrom(LinkedHashMap.values$u16_u32_hash_RandomState(m), linked_hash_map_Values.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Values.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Values.Values) => rt.iterFromOption(linked_hash_map_Values.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: linked_hash_map_Values.len$iter_ExactSizeIterator_u16_u32 }), (v3: rt.u32): undefined => { put(out, v3 as rt.usize); }); } else { @@ -1031,15 +1031,15 @@ export function linkedIters(dataData: Uint8Array, dataStart: number, dataLen: nu put(out, option_mapOr$0iaogpf(rt.iterToOption(linked_hash_map_Iter.next$iter_Iterator_u16_u32(it2)), 256, (_210: [rt.u16, rt.u32]): rt.usize => { return rt.usizeAdd(rt.usizeMul(_210[0] as rt.usize, 4096), _210[1] as rt.usize); })); - put(out, rt.iterFrom(it2, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it))).len()); - const rest: rt.usize[] = rt.iterToArray(rt.iterMap(rt.iterSkip(rt.iterRev(rt.iterFrom(it2, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.next$iter_Iterator_u16_u32(it), undefined, (it: linked_hash_map_Iter.Iter) => linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32(it), (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)))), rt.usizeRem(k, 4)), (_211: [rt.u16, rt.u32]): rt.usize => { + put(out, rt.iterFrom(it2, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) }).len()); + const rest: rt.usize[] = rt.iterToArray(rt.iterMap(rt.iterSkip(rt.iterRev(rt.iterFrom(it2, linked_hash_map_Iter.next$iter_Iterator_u16_u32, undefined, { hint: linked_hash_map_Iter.sizeHint$iter_Iterator_u16_u32, back: (it: linked_hash_map_Iter.Iter) => rt.iterFromOption(linked_hash_map_Iter.nextBack$iter_DoubleEndedIterator_u16_u32(it)) })), rt.usizeRem(k, 4)), (_211: [rt.u16, rt.u32]): rt.usize => { return rt.usizeAdd(rt.usizeMul(_211[0] as rt.usize, 4096), _211[1] as rt.usize); }), "next", 4); put(out, rt.vecCapacity(rest, 4)); rt.iterForEach(rt.iterSlice(rest), (e: rt.usize): undefined => { put(out, e); }); - put(out, option_unwrapOr$0l7j3f6(rt.iterRposition(rt.iterFrom(LinkedHashMap.keys$u16_u32_hash_RandomState(m), (it: Keys.Keys) => Keys.next$iter_Iterator_u16_u32(it), undefined, (it: Keys.Keys) => Keys.sizeHint$iter_Iterator_u16_u32(it), (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), (it: Keys.Keys) => Keys.len$iter_ExactSizeIterator_u16_u32(it)), (k2: rt.u16): boolean => { + put(out, option_unwrapOr$0l7j3f6(rt.iterRposition(rt.iterFrom(LinkedHashMap.keys$u16_u32_hash_RandomState(m), Keys.next$iter_Iterator_u16_u32, undefined, { hint: Keys.sizeHint$iter_Iterator_u16_u32, back: (it: Keys.Keys) => rt.iterFromOption(Keys.nextBack$iter_DoubleEndedIterator_u16_u32(it)), len: Keys.len$iter_ExactSizeIterator_u16_u32 }), (k2: rt.u16): boolean => { return rt.u16Rem(k2, 2) === 0; }), 256)); } diff --git a/ts/fixtures/task/expected/core/result.ts b/ts/fixtures/task/expected/core/result.ts index 6aadff06d..b70062126 100644 --- a/ts/fixtures/task/expected/core/result.ts +++ b/ts/fixtures/task/expected/core/result.ts @@ -100,6 +100,13 @@ export function mapOrElse$196aho3(self: rt.Result, def return default_(self.error); } +export function mapErr$0nvqjog(self: rt.Result, op: (a0: Guard.Guard) => rt.u32): rt.Result { + if (self.ok) { + return self as rt.Result; + } + return rt.Err(op(self.error)); +} + export function mapErr$1c43xsx(self: rt.Result, op: (a0: rt.u32) => rt.u32): rt.Result { let _0!: rt.Result; let _9: boolean = false; diff --git a/ts/fixtures/task/expected/drops.ts b/ts/fixtures/task/expected/drops.ts index d2c515860..9c0e3186d 100644 --- a/ts/fixtures/task/expected/drops.ts +++ b/ts/fixtures/task/expected/drops.ts @@ -1274,8 +1274,8 @@ export function folded(log: Log.Log, id: rt.u32, arg: rt.u8): void { } /** - * Run scenario `arg % 9` of what folds back to front, and through what wraps a closure - * beside another. + * Run scenario `arg % 18` of what folds back to front, through what wraps a closure beside + * another, and through a crate's iterator with folds of its own. The last panics in a fold. */ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { folds_rfolded(log, id, arg); diff --git a/ts/fixtures/task/expected/drops/folds.Pile.ts b/ts/fixtures/task/expected/drops/folds.Pile.ts new file mode 100644 index 000000000..8048fbf64 --- /dev/null +++ b/ts/fixtures/task/expected/drops/folds.Pile.ts @@ -0,0 +1,121 @@ +// Generated by rust2-ts. Do not edit. + +import * as rt from "../rt.ts"; +import { then$1xpp3sz } from "../core/bool.ts"; +import * as Log from "../log.Log.ts"; +import type * as Guard from "../model.Guard.ts"; + +/** + * Guards popped from the back of a `Vec`, with its own `nth`, `nth_back`, folds, `count`, + * and `last`, each of which notes it was called. Its folds stop short of the last guard + * and drop their closure before they note they folded, and the rest drop with it. + */ +export class Pile { + held: Guard.Guard[]; + log: Log.Log; + + constructor(held: Guard.Guard[], log: Log.Log) { + this.held = held; + this.log = log; + } + + [Symbol.dispose](): void { + rt.dropAll(this.held); + this.log[Symbol.dispose](); + } +} + +export function next$iter_Iterator(self: Pile): Guard.Guard | rt.Done { + return rt.iterFromOption(self.held.pop()); +} + +export function sizeHint$iter_Iterator(self: Pile): [rt.usize, rt.usize | undefined] { + return [self.held.length, self.held.length] as [rt.usize, rt.usize | undefined]; +} + +export function nth$iter_Iterator(self: Pile, n: rt.usize): Guard.Guard | undefined { + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n, f)]; + const _5: string = rt.fmtFormat(["pile nth ", args2[0]]); + Log.note(self.log, _5); + let iterStart: rt.usize = 0; + const iterEnd: rt.usize = n; + while (iterStart++ < iterEnd) { + const _21: Guard.Guard | undefined = self.held.pop(); + if (_21 !== undefined) { + _21[Symbol.dispose](); + } else { + return undefined; + } + } + return self.held.pop(); +} + +export function fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32(self: Pile, init: rt.u32 | undefined, f: (a0: rt.u32 | undefined, a1: Guard.Guard) => rt.u32 | undefined): rt.u32 | undefined { + Log.note(self.log, "pile fold"); + let acc: rt.u32 | undefined = init; + while (self.held.length > 1) { + const part = rt.optionUnwrap(self.held.pop()); + acc = f(acc, part); + } + rt.drop(f); + Log.note(self.log, "pile folded"); + self[Symbol.dispose](); + return acc; +} + +export function count$iter_Iterator(self: Pile): rt.usize { + const part = self.held.length; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(part, f)]; + const _4: string = rt.fmtFormat(["pile count ", args2[0]]); + Log.note(self.log, _4); + const _0: rt.usize = self.held.length; + self[Symbol.dispose](); + return _0; +} + +export function last$iter_Iterator(self: Pile): Guard.Guard | undefined { + Log.note(self.log, "pile last"); + const _0: Guard.Guard | undefined = then$1xpp3sz(!((self.held.length === 0)), (): Guard.Guard => { + return rt.vecRemove(self.held, 0); + }); + self[Symbol.dispose](); + return _0; +} + +export function nextBack$iter_DoubleEndedIterator(self: Pile): Guard.Guard | undefined { + return then$1xpp3sz(!((self.held.length === 0)), (): Guard.Guard => { + return rt.vecRemove(self.held, 0); + }); +} + +export function nthBack$iter_DoubleEndedIterator(self: Pile, n: rt.usize): Guard.Guard | undefined { + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n, f)]; + const _5: string = rt.fmtFormat(["pile nth_back ", args2[0]]); + Log.note(self.log, _5); + let iterStart: rt.usize = 0; + const iterEnd: rt.usize = n; + while (iterStart++ < iterEnd) { + const _21: Guard.Guard | undefined = nextBack$iter_DoubleEndedIterator(self); + if (_21 !== undefined) { + _21[Symbol.dispose](); + } else { + return undefined; + } + } + return nextBack$iter_DoubleEndedIterator(self); +} + +export function rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32(self: Pile, init: rt.u32 | undefined, f: (a0: rt.u32 | undefined, a1: Guard.Guard) => rt.u32 | undefined): rt.u32 | undefined { + Log.note(self.log, "pile rfold"); + let acc: rt.u32 | undefined = init; + while (self.held.length > 1) { + const part = rt.vecRemove(self.held, 0); + acc = f(acc, part); + } + rt.drop(f); + Log.note(self.log, "pile rfolded"); + self[Symbol.dispose](); + return acc; +} + +//# sourceMappingURL=folds.Pile.ts.map diff --git a/ts/fixtures/task/expected/drops/folds.ts b/ts/fixtures/task/expected/drops/folds.ts index 7e659f31c..6f11ee090 100644 --- a/ts/fixtures/task/expected/drops/folds.ts +++ b/ts/fixtures/task/expected/drops/folds.ts @@ -4,6 +4,8 @@ import * as rt from "../rt.ts"; import { drop$Option_tuple2_tuple2_model_Guard_model_Guard_model_Guard as lib_drop$Option_tuple2_tuple2_model_Guard_model_Guard_model_Guard, drop$tuple2_i32_model_Guard as lib_drop$tuple2_i32_model_Guard, drop$tuple2_model_Guard_i32 as lib_drop$tuple2_model_Guard_i32, drop$tuple2_model_Guard_model_Guard as lib_drop$tuple2_model_Guard_model_Guard, drop$tuple2_model_Guard_u64 as lib_drop$tuple2_model_Guard_u64, drop$tuple2_tuple2_model_Guard_model_Guard_model_Guard as lib_drop$tuple2_tuple2_model_Guard_model_Guard_model_Guard, drop$tuple2_usize_model_Guard as lib_drop$tuple2_usize_model_Guard } from "../lib.ts"; import { thenSome$0zvoczk, thenSome$1af3oea, then$06wuxll, then$1xpp3sz, then$0ea5h05 } from "../core/bool.ts"; import { map$0ccnsmq as option_map$0ccnsmq, map$1raha9y as option_map$1raha9y, map$0lq7mno as option_map$0lq7mno, map$01pvlgn as option_map$01pvlgn, map$14zg54s as option_map$14zg54s, mapOr$01ozsk3 as option_mapOr$01ozsk3 } from "../core/option.ts"; +import { mapErr$0nvqjog as result_mapErr$0nvqjog } from "../core/result.ts"; +import * as Pile from "../drops/folds.Pile.ts"; import * as Log from "../log.Log.ts"; import * as Guard from "../model.Guard.ts"; @@ -933,353 +935,734 @@ export function folded(log: Log.Log, id: rt.u32, arg: rt.u8): void { } /** - * Run scenario `arg % 9` of what folds back to front and through what wraps a closure - * beside another, as `folded` does. + * Run scenario `arg % 18` of what folds back to front and through what wraps a closure + * beside another, as `folded` does, of `rfold` and `try_rfold` themselves, and of a + * crate's iterator with folds of its own. The last panics in a `try_rfold`, with what + * dropped before. */ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { + let n!: rt.u32; let f!: Guard.Guard; - let _344: boolean = false; - let _343: boolean = false; - const guard: (a0: rt.u32) => Guard.Guard = (n7: rt.u32): Guard.Guard => { - return Guard.new(rt.u32Add(id, n7), Log.clone$Clone(log)); + let broke!: rt.u32 | undefined; + let _733: boolean = false; + let _732: boolean = false; + let _731: boolean = false; + const guard: (a0: rt.u32) => Guard.Guard = (n11: rt.u32): Guard.Guard => { + return Guard.new(rt.u32Add(id, n11), Log.clone$Clone(log)); }; const guards: (a0: rt.u32, a1: rt.u32) => Guard.Guard[] = (from: rt.u32, to: rt.u32): Guard.Guard[] => { return rt.iterToArray(rt.iterMap(new rt.Range(from, to), guard), undefined, 8, true); }; const _11: [Guard.Guard, Guard.Guard, Guard.Guard] = [guard(10), guard(11), guard(12)]; + _733 = true; const c: Guard.Guard = _11[0]; - _344 = true; + _732 = true; const d: Guard.Guard = _11[1]; - _343 = true; + _731 = true; const e: Guard.Guard = _11[2]; - const _21: rt.u8 = rt.u8Rem(arg, 9); - if (_21 === 0) { - const _27: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - const captured24 = c; - const _25: rt.Iter = rt.iterRev(rt.iterMap(_27, rt.closure((g27: Guard.Guard): Guard.Guard => { - const _917: rt.u32 = Guard.id(g27); - const _1216: rt.u32 = Guard.id(captured24); - const args36: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_917, f), (f: rt.Formatter) => rt.u32Display(_1216, f)]; - Log.note(log, rt.fmtFormat(["map ", args36[0], " ", args36[1]])); - return g27; + const pile: (a0: rt.u32, a1: rt.u32) => Pile.Pile = (from2: rt.u32, to2: rt.u32): Pile.Pile => { + return new Pile.Pile(guards(from2, to2), Log.clone$Clone(log)); + }; + const _23: rt.u8 = rt.u8Rem(arg, 18); + if (_23 === 0) { + const _29: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); + _733 = false; + const captured46 = c; + const _27: rt.Iter = rt.iterRev(rt.iterMap(_29, rt.closure((g51: Guard.Guard): Guard.Guard => { + const _926: rt.u32 = Guard.id(g51); + const _1225: rt.u32 = Guard.id(captured46); + const args84: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_926, f), (f: rt.Formatter) => rt.u32Display(_1225, f)]; + Log.note(log, rt.fmtFormat(["map ", args84[0], " ", args84[1]])); + return g51; }, (): void => { - captured24[Symbol.dispose](); + captured46[Symbol.dispose](); }))); - _344 = false; - const captured25 = id; - const captured26 = d; - const n: rt.u32 = rt.iterSum(rt.iterMap(_25, rt.closure((g28: Guard.Guard): rt.u32 => { - const _029: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g28), captured25), Guard.id(captured26)), Guard.id(captured26)); - g28[Symbol.dispose](); - return _029; + _732 = false; + const captured47 = id; + const captured48 = d; + n = rt.iterSum(rt.iterMap(_27, rt.closure((g52: Guard.Guard): rt.u32 => { + const _058: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g52), captured47), Guard.id(captured48)), Guard.id(captured48)); + g52[Symbol.dispose](); + return _058; }, (): void => { - captured26[Symbol.dispose](); + captured48[Symbol.dispose](); })), rt.u32Add, 0, true); - const _39: rt.u32 = Guard.id(e); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n, f), (f: rt.Formatter) => rt.u32Display(_39, f)]; + const _41: rt.u32 = Guard.id(e); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n, f), (f: rt.Formatter) => rt.u32Display(_41, f)]; Log.note(log, rt.fmtFormat(["map ", args2[0], " ", args2[1]])); - } else if (_21 === 1) { - const _51: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - const captured19 = c; - const _49: rt.Iter = rt.iterRev(rt.iterFilter(_51, rt.closure((g23: Guard.Guard): boolean => { - return Guard.id(g23) !== Guard.id(captured19); + } else if (_23 === 1) { + const _53: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); + _733 = false; + const captured41 = c; + const _51: rt.Iter = rt.iterRev(rt.iterFilter(_53, rt.closure((g47: Guard.Guard): boolean => { + return Guard.id(g47) !== Guard.id(captured41); }, (): void => { - captured19[Symbol.dispose](); + captured41[Symbol.dispose](); }), rt.drop)); - _344 = false; - const captured20 = id; - const captured21 = d; - const n2: rt.u32 = rt.iterSum(rt.iterMap(_49, rt.closure((g24: Guard.Guard): rt.u32 => { - const _025: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g24), captured20), Guard.id(captured21)), Guard.id(captured21)); - g24[Symbol.dispose](); - return _025; + _732 = false; + const captured42 = id; + const captured43 = d; + const n2: rt.u32 = rt.iterSum(rt.iterMap(_51, rt.closure((g48: Guard.Guard): rt.u32 => { + const _054: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g48), captured42), Guard.id(captured43)), Guard.id(captured43)); + g48[Symbol.dispose](); + return _054; }, (): void => { - captured21[Symbol.dispose](); + captured43[Symbol.dispose](); })), rt.u32Add, 0, true); f = guard(13); - const _64: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); - _343 = false; - const captured22 = e; - const _62: rt.Iter = rt.iterRev(rt.iterFilterMap(_64, rt.closure((g25: Guard.Guard): Guard.Guard | undefined => { - return thenSome$0zvoczk(Guard.id(g25) !== Guard.id(captured22), g25); + const _66: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); + _731 = false; + const captured44 = e; + const _64: rt.Iter = rt.iterRev(rt.iterFilterMap(_66, rt.closure((g49: Guard.Guard): Guard.Guard | undefined => { + return thenSome$0zvoczk(Guard.id(g49) !== Guard.id(captured44), g49); }, (): void => { - captured22[Symbol.dispose](); + captured44[Symbol.dispose](); }))); - const captured23 = f; - const m: rt.usize = rt.ownedCount(rt.iterMap(_62, rt.closure((g26: Guard.Guard): rt.u32 => { - const _027: rt.u32 = rt.u32Add(Guard.id(g26), Guard.id(captured23)); - g26[Symbol.dispose](); - return _027; + const captured45 = f; + const m: rt.usize = rt.ownedCount(rt.iterMap(_64, rt.closure((g50: Guard.Guard): rt.u32 => { + const _056: rt.u32 = rt.u32Add(Guard.id(g50), Guard.id(captured45)); + g50[Symbol.dispose](); + return _056; }, (): void => { - captured23[Symbol.dispose](); + captured45[Symbol.dispose](); }))); const args4: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n2, f), (f: rt.Formatter) => rt.usizeDisplay(m, f)]; Log.note(log, rt.fmtFormat(["filter ", args4[0], " ", args4[1]])); - } else if (_21 === 2) { - const _85: rt.Iter = rt.iterSlice(guards(1, 4), rt.drop); - const captured15 = c; - const _84: rt.Iter = rt.iterInspect(_85, rt.closure((g19: Guard.Guard): undefined => { - const _914: rt.u32 = Guard.id(g19); - const _1112: rt.u32 = Guard.id(captured15); - const args32: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_914, f), (f: rt.Formatter) => rt.u32Display(_1112, f)]; - Log.note(log, rt.fmtFormat(["inspect ", args32[0], " ", args32[1]])); + } else if (_23 === 2) { + const _87: rt.Iter = rt.iterSlice(guards(1, 4), rt.drop); + _733 = false; + const captured37 = c; + const _86: rt.Iter = rt.iterInspect(_87, rt.closure((g43: Guard.Guard): undefined => { + const _923: rt.u32 = Guard.id(g43); + const _1134: rt.u32 = Guard.id(captured37); + const args80: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_923, f), (f: rt.Formatter) => rt.u32Display(_1134, f)]; + Log.note(log, rt.fmtFormat(["inspect ", args80[0], " ", args80[1]])); }, (): void => { - captured15[Symbol.dispose](); + captured37[Symbol.dispose](); })); - _344 = false; - const captured16 = d; - const n3: rt.usize = rt.ownedCount(rt.iterMap(_84, rt.closure((g20: Guard.Guard): rt.u32 => { - const _022: rt.u32 = rt.u32Add(Guard.id(g20), Guard.id(captured16)); - g20[Symbol.dispose](); - return _022; + _732 = false; + const captured38 = d; + const n3: rt.usize = rt.ownedCount(rt.iterMap(_86, rt.closure((g44: Guard.Guard): rt.u32 => { + const _051: rt.u32 = rt.u32Add(Guard.id(g44), Guard.id(captured38)); + g44[Symbol.dispose](); + return _051; }, (): void => { - captured16[Symbol.dispose](); + captured38[Symbol.dispose](); }))); const f2: Guard.Guard = guard(13); - const _98: rt.Iter = rt.iterSlice(guards(4, 8), rt.drop); - _343 = false; - const captured17 = e; - const _96: rt.Iter = rt.iterRev(rt.iterInspect(_98, rt.closure((g21: Guard.Guard): undefined => { - const _915: rt.u32 = Guard.id(g21); - const _1113: rt.u32 = Guard.id(captured17); - const args34: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_915, f), (f: rt.Formatter) => rt.u32Display(_1113, f)]; - Log.note(log, rt.fmtFormat(["inspect ", args34[0], " ", args34[1]])); + const _100: rt.Iter = rt.iterSlice(guards(4, 8), rt.drop); + _731 = false; + const captured39 = e; + const _98: rt.Iter = rt.iterRev(rt.iterInspect(_100, rt.closure((g45: Guard.Guard): undefined => { + const _924: rt.u32 = Guard.id(g45); + const _1137: rt.u32 = Guard.id(captured39); + const args82: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_924, f), (f: rt.Formatter) => rt.u32Display(_1137, f)]; + Log.note(log, rt.fmtFormat(["inspect ", args82[0], " ", args82[1]])); }, (): void => { - captured17[Symbol.dispose](); + captured39[Symbol.dispose](); }))); - const captured18 = f2; - const m2: rt.usize = rt.ownedCount(rt.iterMap(_96, rt.closure((g22: Guard.Guard): rt.u32 => { - const _023: rt.u32 = rt.u32Add(Guard.id(g22), Guard.id(captured18)); - g22[Symbol.dispose](); - return _023; + const captured40 = f2; + const m2: rt.usize = rt.ownedCount(rt.iterMap(_98, rt.closure((g46: Guard.Guard): rt.u32 => { + const _052: rt.u32 = rt.u32Add(Guard.id(g46), Guard.id(captured40)); + g46[Symbol.dispose](); + return _052; }, (): void => { - captured18[Symbol.dispose](); + captured40[Symbol.dispose](); }))); const args6: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n3, f), (f: rt.Formatter) => rt.usizeDisplay(m2, f)]; Log.note(log, rt.fmtFormat(["inspect ", args6[0], " ", args6[1]])); - } else if (_21 === 3) { - const _120: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - const captured14 = c; - const _131: [rt.usize, rt.u32] | undefined = option_map$14zg54s(rt.ownedLast(rt.iterRev(rt.iterEnumerate(rt.iterMap(_120, rt.closure((g17: Guard.Guard): Guard.Guard => { - const _913: rt.u32 = Guard.id(g17); - const _1214: rt.u32 = Guard.id(captured14); - const args30: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_913, f), (f: rt.Formatter) => rt.u32Display(_1214, f)]; - Log.note(log, rt.fmtFormat(["map ", args30[0], " ", args30[1]])); - return g17; + } else if (_23 === 3) { + const _122: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); + _733 = false; + const captured36 = c; + const _133: [rt.usize, rt.u32] | undefined = option_map$14zg54s(rt.ownedLast(rt.iterRev(rt.iterEnumerate(rt.iterMap(_122, rt.closure((g41: Guard.Guard): Guard.Guard => { + const _922: rt.u32 = Guard.id(g41); + const _1223: rt.u32 = Guard.id(captured36); + const args78: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_922, f), (f: rt.Formatter) => rt.u32Display(_1223, f)]; + Log.note(log, rt.fmtFormat(["map ", args78[0], " ", args78[1]])); + return g41; }, (): void => { - captured14[Symbol.dispose](); - })))), lib_drop$tuple2_usize_model_Guard), (_2: [rt.usize, Guard.Guard]): [rt.usize, rt.u32] => { - const i: rt.usize = _2[0]; - const g18: Guard.Guard = _2[1]; - const _021: [rt.usize, rt.u32] = [i, Guard.id(g18)]; - g18[Symbol.dispose](); - return _021; + captured36[Symbol.dispose](); + })))), lib_drop$tuple2_usize_model_Guard), (_230: [rt.usize, Guard.Guard]): [rt.usize, rt.u32] => { + const i: rt.usize = _230[0]; + const g42: Guard.Guard = _230[1]; + const _050: [rt.usize, rt.u32] = [i, Guard.id(g42)]; + g42[Symbol.dispose](); + return _050; }); - const _133: rt.u32 = Guard.id(d); - const _136: rt.u32 = Guard.id(e); - const args8: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_131, f, (value: [rt.usize, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.usizeDebug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f)], f)), (f: rt.Formatter) => rt.u32Display(_133, f), (f: rt.Formatter) => rt.u32Display(_136, f)]; + const _135: rt.u32 = Guard.id(d); + const _138: rt.u32 = Guard.id(e); + const args8: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_133, f, (value: [rt.usize, rt.u32], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.usizeDebug(value[0], f), (f: rt.Formatter) => rt.u32Debug(value[1], f)], f)), (f: rt.Formatter) => rt.u32Display(_135, f), (f: rt.Formatter) => rt.u32Display(_138, f)]; Log.note(log, rt.fmtFormat(["enumerate ", args8[0], " ", args8[1], " ", args8[2]])); - } else if (_21 === 4) { - const _148: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - const captured12 = c; - const n4: rt.usize = rt.ownedCount(rt.iterRev(rt.iterRev(rt.iterMap(_148, rt.closure((g15: Guard.Guard): rt.u32 => { - const _017: rt.u32 = rt.u32Add(Guard.id(g15), Guard.id(captured12)); - g15[Symbol.dispose](); - return _017; + } else if (_23 === 4) { + const _150: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); + _733 = false; + const captured34 = c; + const n4: rt.usize = rt.ownedCount(rt.iterRev(rt.iterRev(rt.iterMap(_150, rt.closure((g39: Guard.Guard): rt.u32 => { + const _046: rt.u32 = rt.u32Add(Guard.id(g39), Guard.id(captured34)); + g39[Symbol.dispose](); + return _046; }, (): void => { - captured12[Symbol.dispose](); + captured34[Symbol.dispose](); }))))); - const _156: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); - _344 = false; - const captured13 = d; - const m3: rt.u32 = rt.iterFold(rt.iterSkip(rt.iterMap(_156, rt.closure((g16: Guard.Guard): rt.u32 => { - const _018: rt.u32 = rt.u32Add(Guard.id(g16), Guard.id(captured13)); - g16[Symbol.dispose](); - return _018; + const _158: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); + _732 = false; + const captured35 = d; + const m3: rt.u32 = rt.iterFold(rt.iterSkip(rt.iterMap(_158, rt.closure((g40: Guard.Guard): rt.u32 => { + const _047: rt.u32 = rt.u32Add(Guard.id(g40), Guard.id(captured35)); + g40[Symbol.dispose](); + return _047; }, (): void => { - captured13[Symbol.dispose](); - })), 1), 0, (n8: rt.u32, k: rt.u32): rt.u32 => { - return rt.u32Add(n8, k); + captured35[Symbol.dispose](); + })), 1), 0, (n22: rt.u32, k5: rt.u32): rt.u32 => { + return rt.u32Add(n22, k5); }, true); - const _167: rt.u32 = Guard.id(e); - const args10: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n4, f), (f: rt.Formatter) => rt.u32Display(m3, f), (f: rt.Formatter) => rt.u32Display(_167, f)]; + const _169: rt.u32 = Guard.id(e); + const args10: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n4, f), (f: rt.Formatter) => rt.u32Display(m3, f), (f: rt.Formatter) => rt.u32Display(_169, f)]; Log.note(log, rt.fmtFormat(["twice ", args10[0], " ", args10[1], " ", args10[2]])); - } else if (_21 === 5) { - const _181: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - const captured10 = c; - const _179: rt.Iter = rt.iterStepBy(rt.iterMap(_181, rt.closure((g11: Guard.Guard): Guard.Guard => { - const _911: rt.u32 = Guard.id(g11); - const _1212: rt.u32 = Guard.id(captured10); - const args28: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_911, f), (f: rt.Formatter) => rt.u32Display(_1212, f)]; - Log.note(log, rt.fmtFormat(["map ", args28[0], " ", args28[1]])); - return g11; + } else if (_23 === 5) { + const _183: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); + _733 = false; + const captured32 = c; + const _181: rt.Iter = rt.iterStepBy(rt.iterMap(_183, rt.closure((g35: Guard.Guard): Guard.Guard => { + const _920: rt.u32 = Guard.id(g35); + const _1221: rt.u32 = Guard.id(captured32); + const args76: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_920, f), (f: rt.Formatter) => rt.u32Display(_1221, f)]; + Log.note(log, rt.fmtFormat(["map ", args76[0], " ", args76[1]])); + return g35; }, (): void => { - captured10[Symbol.dispose](); + captured32[Symbol.dispose](); })), 2, rt.drop); - _344 = false; - const captured11 = d; - const _197: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_179, rt.closure((g12: Guard.Guard): [Guard.Guard, rt.u32] => { - return [g12, Guard.id(captured11)] as [Guard.Guard, rt.u32]; + _732 = false; + const captured33 = d; + const _199: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_181, rt.closure((g36: Guard.Guard): [Guard.Guard, rt.u32] => { + return [g36, Guard.id(captured33)] as [Guard.Guard, rt.u32]; }, (): void => { - captured11[Symbol.dispose](); - })), guard(20), (kept4: Guard.Guard | undefined, _315: [Guard.Guard, rt.u32]): Guard.Guard | undefined => { - let _015!: Guard.Guard | undefined; - let _1213: boolean = false; - let _1111: boolean = false; - _1213 = true; - _1111 = true; - const g13: Guard.Guard = _315[0]; - if (!(rt.u32Rem(Guard.id(g13), 2) === 1)) { - _1213 = false; - _015 = kept4; + captured33[Symbol.dispose](); + })), guard(20), (kept7: Guard.Guard | undefined, _347: [Guard.Guard, rt.u32]): Guard.Guard | undefined => { + let _044!: Guard.Guard | undefined; + let _1222: boolean = false; + let _1126: boolean = false; + _1222 = true; + _1126 = true; + const g37: Guard.Guard = _347[0]; + if (!(rt.u32Rem(Guard.id(g37), 2) === 1)) { + _1222 = false; + _044 = kept7; } else { - _1111 = false; - _015 = g13; + _1126 = false; + _044 = g37; } - if (_1111) { - g13[Symbol.dispose](); + if (_1126) { + g37[Symbol.dispose](); } - _1111 = false; - if (_1213) { - rt.drop(kept4); - return _015; + _1126 = false; + if (_1222) { + rt.drop(kept7); + return _044; } - return _015; - }, true), (g14: Guard.Guard): rt.u32 => { - const _016: rt.u32 = Guard.id(g14); - g14[Symbol.dispose](); - return _016; + return _044; + }, true), (g38: Guard.Guard): rt.u32 => { + const _045: rt.u32 = Guard.id(g38); + g38[Symbol.dispose](); + return _045; }); - const _199: rt.u32 = Guard.id(e); - const args12: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_197, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_199, f)]; + const _201: rt.u32 = Guard.id(e); + const args12: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_199, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_201, f)]; Log.note(log, rt.fmtFormat(["step ", args12[0], " ", args12[1]])); - } else if (_21 === 6) { - const _211: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); - const captured8 = c; - const _208: rt.Iter = rt.iterRev(rt.iterStepBy(rt.iterMap(_211, rt.closure((g7: Guard.Guard): Guard.Guard => { - const _94: rt.u32 = Guard.id(g7); - const _1210: rt.u32 = Guard.id(captured8); - const args26: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_94, f), (f: rt.Formatter) => rt.u32Display(_1210, f)]; - Log.note(log, rt.fmtFormat(["map ", args26[0], " ", args26[1]])); - return g7; + } else if (_23 === 6) { + const _213: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + _733 = false; + const captured30 = c; + const _210: rt.Iter = rt.iterRev(rt.iterStepBy(rt.iterMap(_213, rt.closure((g31: Guard.Guard): Guard.Guard => { + const _918: rt.u32 = Guard.id(g31); + const _1219: rt.u32 = Guard.id(captured30); + const args74: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_918, f), (f: rt.Formatter) => rt.u32Display(_1219, f)]; + Log.note(log, rt.fmtFormat(["map ", args74[0], " ", args74[1]])); + return g31; }, (): void => { - captured8[Symbol.dispose](); + captured30[Symbol.dispose](); })), 2, rt.drop)); - _344 = false; - const captured9 = d; - const _227: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_208, rt.closure((g8: Guard.Guard): [Guard.Guard, rt.u32] => { - return [g8, Guard.id(captured9)] as [Guard.Guard, rt.u32]; + _732 = false; + const captured31 = d; + const _229: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_210, rt.closure((g32: Guard.Guard): [Guard.Guard, rt.u32] => { + return [g32, Guard.id(captured31)] as [Guard.Guard, rt.u32]; }, (): void => { - captured9[Symbol.dispose](); - })), guard(20), (kept3: Guard.Guard | undefined, _311: [Guard.Guard, rt.u32]): Guard.Guard | undefined => { - let _011!: Guard.Guard | undefined; - let _1211: boolean = false; - let _1110: boolean = false; - _1211 = true; - _1110 = true; - const g9: Guard.Guard = _311[0]; - if (!(rt.u32Rem(Guard.id(g9), 2) === 1)) { - _1211 = false; - _011 = kept3; + captured31[Symbol.dispose](); + })), guard(20), (kept6: Guard.Guard | undefined, _344: [Guard.Guard, rt.u32]): Guard.Guard | undefined => { + let _040!: Guard.Guard | undefined; + let _1220: boolean = false; + let _1121: boolean = false; + _1220 = true; + _1121 = true; + const g33: Guard.Guard = _344[0]; + if (!(rt.u32Rem(Guard.id(g33), 2) === 1)) { + _1220 = false; + _040 = kept6; } else { - _1110 = false; - _011 = g9; + _1121 = false; + _040 = g33; } - if (_1110) { - g9[Symbol.dispose](); + if (_1121) { + g33[Symbol.dispose](); } - _1110 = false; - if (_1211) { - rt.drop(kept3); - return _011; + _1121 = false; + if (_1220) { + rt.drop(kept6); + return _040; } - return _011; - }, true), (g10: Guard.Guard): rt.u32 => { - const _012: rt.u32 = Guard.id(g10); - g10[Symbol.dispose](); - return _012; + return _040; + }, true), (g34: Guard.Guard): rt.u32 => { + const _041: rt.u32 = Guard.id(g34); + g34[Symbol.dispose](); + return _041; }); - const _229: rt.u32 = Guard.id(e); - const args14: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_227, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_229, f)]; + const _231: rt.u32 = Guard.id(e); + const args14: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_229, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_231, f)]; Log.note(log, rt.fmtFormat(["step ", args14[0], " ", args14[1]])); - } else if (_21 === 7) { - const _239: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - const captured5 = id; - const captured6 = c; - const n5: rt.u32 = rt.iterSum(rt.iterFuse(rt.iterMap(_239, rt.closure((g5: Guard.Guard): rt.u32 => { - const _07: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g5), captured5), Guard.id(captured6)), Guard.id(captured6)); - g5[Symbol.dispose](); - return _07; + } else if (_23 === 7) { + const _241: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); + _733 = false; + const captured27 = id; + const captured28 = c; + const n5: rt.u32 = rt.iterSum(rt.iterFuse(rt.iterMap(_241, rt.closure((g29: Guard.Guard): rt.u32 => { + const _036: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g29), captured27), Guard.id(captured28)), Guard.id(captured28)); + g29[Symbol.dispose](); + return _036; }, (): void => { - captured6[Symbol.dispose](); + captured28[Symbol.dispose](); })), true), rt.u32Add, 0, true); - const _248: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); - _344 = false; - const captured7 = d; - const m4: rt.usize = rt.ownedCount(rt.iterRev(rt.iterFuse(rt.iterMap(_248, rt.closure((g6: Guard.Guard): rt.u32 => { - const _08: rt.u32 = rt.u32Add(Guard.id(g6), Guard.id(captured7)); - g6[Symbol.dispose](); - return _08; + const _250: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); + _732 = false; + const captured29 = d; + const m4: rt.usize = rt.ownedCount(rt.iterRev(rt.iterFuse(rt.iterMap(_250, rt.closure((g30: Guard.Guard): rt.u32 => { + const _037: rt.u32 = rt.u32Add(Guard.id(g30), Guard.id(captured29)); + g30[Symbol.dispose](); + return _037; }, (): void => { - captured7[Symbol.dispose](); + captured29[Symbol.dispose](); })), true))); - const _259: rt.u32 = Guard.id(e); - const args16: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n5, f), (f: rt.Formatter) => rt.usizeDisplay(m4, f), (f: rt.Formatter) => rt.u32Display(_259, f)]; + const _261: rt.u32 = Guard.id(e); + const args16: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n5, f), (f: rt.Formatter) => rt.usizeDisplay(m4, f), (f: rt.Formatter) => rt.u32Display(_261, f)]; Log.note(log, rt.fmtFormat(["fuse ", args16[0], " ", args16[1], " ", args16[2]])); - } else { - const _271: rt.Iter = rt.iterSlice(guards(1, 4), rt.drop); - const captured = c; - const captured2 = guard; - const captured3 = id; - const flat: rt.Iter = rt.iterFlatten(rt.iterMap(_271, rt.closure((g: Guard.Guard): Guard.Guard[] => { - const _9: rt.u32 = Guard.id(g); - const _122: rt.u32 = Guard.id(captured); - const args24: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_9, f), (f: rt.Formatter) => rt.u32Display(_122, f)]; - Log.note(log, rt.fmtFormat(["map ", args24[0], " ", args24[1]])); + } else if (_23 === 8) { + const _273: rt.Iter = rt.iterSlice(guards(1, 4), rt.drop); + _733 = false; + const captured23 = c; + const captured24 = guard; + const captured25 = id; + const flat: rt.Iter = rt.iterFlatten(rt.iterMap(_273, rt.closure((g25: Guard.Guard): Guard.Guard[] => { + const _916: rt.u32 = Guard.id(g25); + const _1217: rt.u32 = Guard.id(captured23); + const args72: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_916, f), (f: rt.Formatter) => rt.u32Display(_1217, f)]; + Log.note(log, rt.fmtFormat(["map ", args72[0], " ", args72[1]])); const v: Guard.Guard[] = []; - const _225: Guard.Guard = captured2(rt.u32Add(rt.u32Sub(Guard.id(g), captured3), 3)); - v.push(_225); - v.push(g); + const _2211: Guard.Guard = captured24(rt.u32Add(rt.u32Sub(Guard.id(g25), captured25), 3)); + v.push(_2211); + v.push(g25); return v; }, (): void => { - captured[Symbol.dispose](); + captured23[Symbol.dispose](); })), (value: Guard.Guard[]) => rt.iterSlice(value, rt.drop), true); - const part2 = option_map$1raha9y(rt.iterToOption(flat.next()), (g2: Guard.Guard): rt.u32 => { - const _04: rt.u32 = Guard.id(g2); - g2[Symbol.dispose](); - return _04; + const part8 = option_map$1raha9y(rt.iterToOption(flat.next()), (g26: Guard.Guard): rt.u32 => { + const _033: rt.u32 = Guard.id(g26); + g26[Symbol.dispose](); + return _033; }); - const args18: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part2, f, rt.u32Debug)]; + const args18: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part8, f, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["ends ", args18[0]])); - const part3 = option_map$1raha9y(rt.iterToOption(flat.nextBack()), (g3: Guard.Guard): rt.u32 => { + const part9 = option_map$1raha9y(rt.iterToOption(flat.nextBack()), (g27: Guard.Guard): rt.u32 => { + const _034: rt.u32 = Guard.id(g27); + g27[Symbol.dispose](); + return _034; + }); + const args20: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part9, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["ends ", args20[0]])); + const _306: rt.Iter = flat; + _732 = false; + const captured26 = d; + const n6: rt.usize = rt.ownedCount(rt.iterMap(_306, rt.closure((g28: Guard.Guard): rt.u32 => { + const _035: rt.u32 = rt.u32Add(Guard.id(g28), Guard.id(captured26)); + g28[Symbol.dispose](); + return _035; + }, (): void => { + captured26[Symbol.dispose](); + }))); + const _314: rt.u32 = Guard.id(e); + const args22: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n6, f), (f: rt.Formatter) => rt.u32Display(_314, f)]; + Log.note(log, rt.fmtFormat(["flat ", args22[0], " ", args22[1]])); + } else if (_23 === 9) { + const _324: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + _733 = false; + const captured20 = c; + const _323: rt.Iter = rt.iterMap(_324, rt.closure((g22: Guard.Guard): Guard.Guard => { + const _914: rt.u32 = Guard.id(g22); + const _1215: rt.u32 = Guard.id(captured20); + const args68: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_914, f), (f: rt.Formatter) => rt.u32Display(_1215, f)]; + Log.note(log, rt.fmtFormat(["map ", args68[0], " ", args68[1]])); + return g22; + }, (): void => { + captured20[Symbol.dispose](); + })); + const _329: Guard.Guard | undefined = guard(20); + _732 = false; + const captured21 = d; + const kept3: Guard.Guard | undefined = rt.iterRfold(_323, _329, rt.closure((kept5: Guard.Guard | undefined, g23: Guard.Guard): Guard.Guard | undefined => { + let _029!: Guard.Guard | undefined; + let _304: boolean = false; + let _296: boolean = false; + _304 = true; + _296 = true; + const _1014: rt.u32 = Guard.id(g23); + const _1316: rt.u32 = Guard.id(captured21); + const args70: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_1014, f), (f: rt.Formatter) => rt.u32Display(_1316, f)]; + Log.note(log, rt.fmtFormat(["rfold ", args70[0], " ", args70[1]])); + if (!(rt.u32Rem(Guard.id(g23), 2) === 1)) { + _304 = false; + _029 = kept5; + } else { + _296 = false; + _029 = g23; + } + if (_296) { + g23[Symbol.dispose](); + } + if (_304) { + rt.drop(kept5); + return _029; + } + return _029; + }, (): void => { + captured21[Symbol.dispose](); + }), true, true); + const _335: rt.Iter = rt.iterSlice([1, 2, 3]); + _731 = false; + const captured22 = e; + const n7: rt.u32 = rt.iterRfold(_335, 0, rt.closure((n21: rt.u32, _326: rt.u32): rt.u32 => { + return rt.u32Sub(rt.u32Add(rt.u32Add(rt.u32Mul(n21, 10), _326), Guard.id(captured22)), Guard.id(captured22)); + }, (): void => { + captured22[Symbol.dispose](); + }), undefined, true); + const _345: rt.u32 | undefined = option_map$1raha9y(kept3, (g24: Guard.Guard): rt.u32 => { + const _031: rt.u32 = Guard.id(g24); + g24[Symbol.dispose](); + return _031; + }); + const args24: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_345, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(n7, f)]; + Log.note(log, rt.fmtFormat(["rfold ", args24[0], " ", args24[1]])); + } else if (_23 === 10) { + const held: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + _733 = false; + const captured17 = c; + const captured18 = id; + const sum: rt.u32 | undefined = rt.iterTryRfold(held, 0, rt.closure((n19: rt.u32, g20: Guard.Guard): rt.u32 | undefined => { + const _1012: rt.u32 = Guard.id(g20); + const _1314: rt.u32 = Guard.id(captured17); + const args66: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_1012, f), (f: rt.Formatter) => rt.u32Display(_1314, f)]; + Log.note(log, rt.fmtFormat(["try ", args66[0], " ", args66[1]])); + const _025: rt.u32 | undefined = then$0ea5h05(Guard.id(g20) !== rt.u32Add(captured18, 3), (): rt.u32 => { + return rt.u32Sub(rt.u32Add(n19, Guard.id(g20)), captured18); + }); + g20[Symbol.dispose](); + return _025; + }, (): void => { + captured17[Symbol.dispose](); + }), true, true); + const _365: rt.usize = held.len(); + const args26: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(sum, f, rt.u32Debug), (f: rt.Formatter) => rt.usizeDisplay(_365, f)]; + Log.note(log, rt.fmtFormat(["tried ", args26[0], " ", args26[1]])); + _732 = false; + const captured19 = d; + const rest: rt.u32 | undefined = rt.iterTryRfold(held, 0, rt.closure((n20: rt.u32, g21: Guard.Guard): rt.u32 | undefined => { + const _027: rt.u32 | undefined = rt.u32Sub(rt.u32Add(rt.u32Add(n20, Guard.id(g21)), Guard.id(captured19)), Guard.id(captured19)); + g21[Symbol.dispose](); + return _027; + }, (): void => { + captured19[Symbol.dispose](); + }), true, true); + const _382: rt.u32 = Guard.id(e); + const args28: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(rest, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_382, f)]; + Log.note(log, rt.fmtFormat(["rest ", args28[0], " ", args28[1]])); + rt.drop(held); + } else if (_23 === 11) { + const _391: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + _733 = false; + const captured14 = c; + const mapped: rt.Iter = rt.iterMap(_391, rt.closure((g17: Guard.Guard): Guard.Guard => { + const _911: rt.u32 = Guard.id(g17); + const _1212: rt.u32 = Guard.id(captured14); + const args64: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_911, f), (f: rt.Formatter) => rt.u32Display(_1212, f)]; + Log.note(log, rt.fmtFormat(["map ", args64[0], " ", args64[1]])); + return g17; + }, (): void => { + captured14[Symbol.dispose](); + })); + _732 = false; + const captured15 = id; + const captured16 = d; + const part5 = result_mapErr$0nvqjog(rt.iterTryRfold(mapped, 0, rt.closure((n18: rt.u32, g18: Guard.Guard): rt.Result => { + let _023!: rt.Result; + let _233: boolean = false; + _233 = true; + if (!(Guard.id(g18) === rt.u32Add(captured15, 2))) { + _023 = rt.Ok(rt.u32Sub(rt.u32Add(rt.u32Add(n18, Guard.id(g18)), Guard.id(captured16)), Guard.id(captured16))); + } else { + _233 = false; + _023 = rt.Err(g18); + } + if (_233) { + g18[Symbol.dispose](); + return _023; + } + return _023; + }, (): void => { + captured16[Symbol.dispose](); + }), undefined, true), (g19: Guard.Guard): rt.u32 => { + const _024: rt.u32 = Guard.id(g19); + g19[Symbol.dispose](); + return _024; + }); + const args30: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(part5, f, rt.u32Debug, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["tried ", args30[0]])); + rt.drop(mapped); + const part6 = Guard.id(e); + const args32: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part6, f)]; + Log.note(log, rt.fmtFormat(["dropped ", args32[0]])); + } else if (_23 === 12) { + const chained: rt.Iter = rt.iterRev(rt.iterChain(rt.iterSlice(guards(1, 3), rt.drop), rt.iterSlice(guards(3, 6), rt.drop))); + _733 = false; + const captured12 = id; + const captured13 = c; + const r2: rt.Result = rt.iterTryRfold(chained, 0, rt.closure((n16: rt.u32, g15: Guard.Guard): rt.Result => { + let _020!: rt.Result; + let _232: boolean = false; + _232 = true; + if (!(Guard.id(g15) === rt.u32Add(captured12, 4))) { + _020 = rt.Ok(rt.u32Sub(rt.u32Add(rt.u32Add(n16, Guard.id(g15)), Guard.id(captured13)), Guard.id(captured13))); + } else { + _232 = false; + _020 = rt.Err(g15); + } + if (_232) { + g15[Symbol.dispose](); + return _020; + } + return _020; + }, (): void => { + captured13[Symbol.dispose](); + }), undefined, true); + if (r2.ok) { + broke = undefined; + } else { + const g: Guard.Guard = r2.error; + broke = Guard.id(g); + g[Symbol.dispose](); + } + const args34: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(broke, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["broke ", args34[0]])); + const n8: rt.Result = rt.iterTryRfold(chained, 0, (n17: rt.u32, g16: Guard.Guard): rt.Result => { + const _021: rt.Result = rt.Ok(rt.u32Sub(rt.u32Add(n17, Guard.id(g16)), id)); + g16[Symbol.dispose](); + return _021; + }); + const _461: rt.u32 = Guard.id(d); + const _464: rt.u32 = Guard.id(e); + const args36: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtControlFlow(n8, f, rt.u32Debug, rt.fmtUnit), (f: rt.Formatter) => rt.u32Display(_461, f), (f: rt.Formatter) => rt.u32Display(_464, f)]; + Log.note(log, rt.fmtFormat(["rest ", args36[0], " ", args36[1], " ", args36[2]])); + rt.drop(chained); + } else if (_23 === 13) { + const _474: rt.Iter = rt.iterSlice(guards(1, 1), rt.drop); + const _478: Guard.Guard = guard(20); + _733 = false; + const captured9 = c; + const none: Guard.Guard = rt.iterRfold(_474, _478, rt.closure((acc: Guard.Guard, _316: Guard.Guard): Guard.Guard => { + const part3 = Guard.id(captured9); + const args60: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part3, f)]; + Log.note(log, rt.fmtFormat(["never ", args60[0]])); + _316[Symbol.dispose](); + return acc; + }, (): void => { + captured9[Symbol.dispose](); + }), true, true); + const _483: rt.Iter = rt.iterSlice(guards(1, 1), rt.drop); + _732 = false; + const captured10 = d; + const empty: rt.Iter = rt.iterMap(_483, rt.closure((g14: Guard.Guard): rt.u32 => { + const _018: rt.u32 = rt.u32Add(Guard.id(g14), Guard.id(captured10)); + g14[Symbol.dispose](); + return _018; + }, (): void => { + captured10[Symbol.dispose](); + })); + _731 = false; + const captured11 = e; + const tried: rt.u32 | undefined = rt.iterTryRfold(empty, 0, rt.closure((n15: rt.u32, k3: rt.u32): rt.u32 | undefined => { + const part4 = Guard.id(captured11); + const args62: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part4, f)]; + Log.note(log, rt.fmtFormat(["never ", args62[0]])); + return rt.u32CheckedAdd(n15, k3); + }, (): void => { + captured11[Symbol.dispose](); + }), true, true); + const _497: rt.u32 = Guard.id(none); + const args38: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_497, f), (f: rt.Formatter) => rt.fmtOption(tried, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["empty ", args38[0], " ", args38[1]])); + rt.drop(empty); + none[Symbol.dispose](); + } else if (_23 === 14) { + const _507: Pile.Pile = pile(1, 5); + _733 = false; + const captured5 = c; + const captured6 = id; + const _510: (a0: Guard.Guard) => rt.u32 = rt.closure((g11: Guard.Guard): rt.u32 => { + const _94: rt.u32 = Guard.id(g11); + const _1210: rt.u32 = Guard.id(captured5); + const args56: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_94, f), (f: rt.Formatter) => rt.u32Display(_1210, f)]; + Log.note(log, rt.fmtFormat(["map ", args56[0], " ", args56[1]])); + const _014: rt.u32 = rt.u32Sub(Guard.id(g11), captured6); + g11[Symbol.dispose](); + return _014; + }, (): void => { + captured5[Symbol.dispose](); + }); + const part2 = rt.iterFold(rt.iterMap(rt.iterFrom(_507, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), _510), 0, (n14: rt.u32, k2: rt.u32): rt.u32 => { + return rt.u32Add(rt.u32Mul(n14, 10), k2); + }, true); + const args40: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part2, f)]; + Log.note(log, rt.fmtFormat(["fold ", args40[0]])); + const _522: Pile.Pile = pile(5, 8); + _732 = false; + const captured7 = d; + const _525: (a0: Guard.Guard) => undefined = rt.closure((g12: Guard.Guard): undefined => { + const _84: rt.u32 = Guard.id(g12); + const _1110: rt.u32 = Guard.id(captured7); + const args58: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_84, f), (f: rt.Formatter) => rt.u32Display(_1110, f)]; + Log.note(log, rt.fmtFormat(["each ", args58[0], " ", args58[1]])); + g12[Symbol.dispose](); + }, (): void => { + captured7[Symbol.dispose](); + }); + rt.iterForEach(rt.iterFrom(_522, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), _525, true, true); + const _528: Pile.Pile = pile(1, 4); + _731 = false; + const captured8 = e; + const _531: (a0: Guard.Guard) => rt.u32 = rt.closure((g13: Guard.Guard): rt.u32 => { + const _016: rt.u32 = rt.u32Add(Guard.id(g13), Guard.id(captured8)); + g13[Symbol.dispose](); + return _016; + }, (): void => { + captured8[Symbol.dispose](); + }); + const m5: rt.usize = rt.ownedCount(rt.iterMap(rt.iterFrom(_528, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), _531)); + const _538: rt.usize = Pile.count$iter_Iterator(pile(4, 6)); + const args42: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(m5, f), (f: rt.Formatter) => rt.usizeDisplay(_538, f)]; + Log.note(log, rt.fmtFormat(["count ", args42[0], " ", args42[1]])); + } else if (_23 === 15) { + const last2: Guard.Guard | undefined = Pile.last$iter_Iterator(pile(1, 4)); + const back: Guard.Guard | undefined = rt.ownedLast(rt.iterRev(rt.iterFrom(pile(4, 7), Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 })), rt.drop); + const skipped: Guard.Guard | undefined = rt.ownedLast(rt.iterSkip(rt.iterFrom(pile(7, 9), Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), 1, rt.drop), rt.drop); + const _568: rt.u32 | undefined = option_map$1raha9y(last2, (g5: Guard.Guard): rt.u32 => { + const _08: rt.u32 = Guard.id(g5); + g5[Symbol.dispose](); + return _08; + }); + const _570: rt.u32 | undefined = option_map$1raha9y(back, (g6: Guard.Guard): rt.u32 => { + const _09: rt.u32 = Guard.id(g6); + g6[Symbol.dispose](); + return _09; + }); + const _572: rt.u32 | undefined = option_map$1raha9y(skipped, (g7: Guard.Guard): rt.u32 => { + const _010: rt.u32 = Guard.id(g7); + g7[Symbol.dispose](); + return _010; + }); + const args44: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_568, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtOption(_570, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtOption(_572, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["last ", args44[0], " ", args44[1], " ", args44[2]])); + const _581: rt.Iter = rt.iterRev(rt.iterFrom(pile(1, 6), Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 })); + _733 = false; + const captured4 = c; + const _593: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_581, rt.closure((g8: Guard.Guard): [Guard.Guard, rt.u32] => { + return [g8, Guard.id(captured4)] as [Guard.Guard, rt.u32]; + }, (): void => { + captured4[Symbol.dispose](); + })), undefined as Guard.Guard | undefined, (_2: Guard.Guard | undefined, _312: [Guard.Guard, rt.u32]): Guard.Guard | undefined => { + const _012: Guard.Guard | undefined = _312[0]; + rt.drop(_2); + return _012; + }, true), (g10: Guard.Guard): rt.u32 => { + const _013: rt.u32 = Guard.id(g10); + g10[Symbol.dispose](); + return _013; + }); + const _595: rt.u32 = Guard.id(d); + const _598: rt.u32 = Guard.id(e); + const args46: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_593, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_595, f), (f: rt.Formatter) => rt.u32Display(_598, f)]; + Log.note(log, rt.fmtFormat(["rev ", args46[0], " ", args46[1], " ", args46[2]])); + } else if (_23 === 16) { + const held2: Pile.Pile = pile(1, 6); + const part = option_map$1raha9y(rt.iterNth(rt.iterRev(rt.iterFrom(held2, Pile.next$iter_Iterator, undefined, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)) })), 1, rt.drop), (g3: Guard.Guard): rt.u32 => { const _05: rt.u32 = Guard.id(g3); g3[Symbol.dispose](); return _05; }); - const args20: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part3, f, rt.u32Debug)]; - Log.note(log, rt.fmtFormat(["ends ", args20[0]])); - const _304: rt.Iter = flat; - _344 = false; - const captured4 = d; - const n6: rt.usize = rt.ownedCount(rt.iterMap(_304, rt.closure((g4: Guard.Guard): rt.u32 => { - const _06: rt.u32 = rt.u32Add(Guard.id(g4), Guard.id(captured4)); + const args48: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["nth ", args48[0]])); + _733 = false; + const captured3 = c; + const n10: rt.u32 = rt.iterFold(rt.iterMap(rt.iterFrom(held2, Pile.next$iter_Iterator, undefined, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)) }), rt.closure((g4: Guard.Guard): rt.u32 => { + const _06: rt.u32 = rt.u32Sub(rt.u32Add(Guard.id(g4), Guard.id(captured3)), Guard.id(captured3)); g4[Symbol.dispose](); return _06; }, (): void => { - captured4[Symbol.dispose](); - }))); - const _312: rt.u32 = Guard.id(e); - const args22: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n6, f), (f: rt.Formatter) => rt.u32Display(_312, f)]; - Log.note(log, rt.fmtFormat(["flat ", args22[0], " ", args22[1]])); + captured3[Symbol.dispose](); + })), 0, (n13: rt.u32, k: rt.u32): rt.u32 => { + return rt.u32Add(n13, k); + }, true); + const _635: rt.usize = held2.held.length; + const args50: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n10, f), (f: rt.Formatter) => rt.usizeDisplay(_635, f)]; + Log.note(log, rt.fmtFormat(["borrowed ", args50[0], " ", args50[1]])); + const _645: Pile.Pile = pile(6, 8); + const _648: Guard.Guard[] = guards(8, 10); + const m6: rt.usize = rt.ownedCount(rt.iterChain(rt.iterFrom(_645, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), rt.iterSlice(_648, rt.drop)), rt.drop); + const _657: rt.u32 = Guard.id(d); + const _660: rt.u32 = Guard.id(e); + const args52: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(m6, f), (f: rt.Formatter) => rt.u32Display(_657, f), (f: rt.Formatter) => rt.u32Display(_660, f)]; + Log.note(log, rt.fmtFormat(["chain ", args52[0], " ", args52[1], " ", args52[2]])); + held2[Symbol.dispose](); + } else { + const a: Guard.Guard = guard(20); + const _674: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + const captured = id; + const captured2 = a; + rt.iterTryRfold(_674, 0, rt.closure((n12: rt.u32, g2: Guard.Guard): rt.u32 | undefined => { + if (!(Guard.id(g2) !== rt.u32Add(captured, 3))) { + const _145: rt.u32 = Guard.id(g2); + const _172: rt.u32 = Guard.id(captured2); + const _202: string = rt.resultUnwrap(rt.stringFromUtf8(Log.text(log)), rt.fmtFromUtf8ErrorDebug); + const args54: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_145, f), (f: rt.Formatter) => rt.u32Display(_172, f), (f: rt.Formatter) => rt.fmtPad(f, _202)]; + rt.panicFmt(["try_rfold of g", args54[0], " with g", args54[1], " after\n", args54[2]]); + } else { + const _04: rt.u32 | undefined = rt.u32Add(n12, Guard.id(g2)); + g2[Symbol.dispose](); + return _04; + } + }, (): void => { + captured2[Symbol.dispose](); + }), true, true); + rt.drop(_674); } - if (_343) { + if (_731) { e[Symbol.dispose](); } - _343 = false; - if (_344) { + _731 = false; + if (_732) { d[Symbol.dispose](); } - _344 = false; + _732 = false; + if (_733) { + c[Symbol.dispose](); + } + _733 = false; } /** `last` and `min` of `Option`s, by what drops: a `None` item apart from no items. */ diff --git a/ts/fixtures/task/src/drops.rs b/ts/fixtures/task/src/drops.rs index 972886355..53d5a8cc7 100644 --- a/ts/fixtures/task/src/drops.rs +++ b/ts/fixtures/task/src/drops.rs @@ -722,8 +722,8 @@ pub fn folded(log: &Log, id: u32, arg: u8) { folds::folded(log, id, arg); } -/// Run scenario `arg % 9` of what folds back to front, and through what wraps a closure -/// beside another. +/// Run scenario `arg % 18` of what folds back to front, through what wraps a closure beside +/// another, and through a crate's iterator with folds of its own. The last panics in a fold. pub fn rfolded(log: &Log, id: u32, arg: u8) { folds::rfolded(log, id, arg); } diff --git a/ts/fixtures/task/src/drops/folds.rs b/ts/fixtures/task/src/drops/folds.rs index d863f6d4b..92838ee69 100644 --- a/ts/fixtures/task/src/drops/folds.rs +++ b/ts/fixtures/task/src/drops/folds.rs @@ -405,13 +405,19 @@ pub(super) fn folded(log: &Log, id: u32, arg: u8) { } } -/// Run scenario `arg % 9` of what folds back to front and through what wraps a closure -/// beside another, as `folded` does. +/// Run scenario `arg % 18` of what folds back to front and through what wraps a closure +/// beside another, as `folded` does, of `rfold` and `try_rfold` themselves, and of a +/// crate's iterator with folds of its own. The last panics in a `try_rfold`, with what +/// dropped before. pub(super) fn rfolded(log: &Log, id: u32, arg: u8) { let guard = |n: u32| Guard::new(id + n, log.clone()); let guards = |from: u32, to: u32| (from..to).map(guard).collect::>(); let (c, d, e) = (guard(10), guard(11), guard(12)); - match arg % 9 { + let pile = |from: u32, to: u32| Pile { + held: guards(from, to), + log: log.clone(), + }; + match arg % 18 { 0 => { let n: u32 = guards(1, 5) .into_iter() @@ -536,7 +542,7 @@ pub(super) fn rfolded(log: &Log, id: u32, arg: u8) { .count(); log.note(format!("fuse {n} {m} {}", e.id())); } - _ => { + 8 => { // What is left between the front and back iterators, folded. let mut flat = guards(1, 4) .into_iter() @@ -550,6 +556,189 @@ pub(super) fn rfolded(log: &Log, id: u32, arg: u8) { let n = flat.map(move |g| g.id() + d.id()).count(); log.note(format!("flat {n} {}", e.id())); } + 9 => { + // `rfold` through a closure that owns a guard, of an accumulator that drops. + let kept = guards(1, 6) + .into_iter() + .map(move |g| { + log.note(format!("map {} {}", g.id(), c.id())); + g + }) + .rfold(Some(guard(20)), move |kept, g| { + log.note(format!("rfold {} {}", g.id(), d.id())); + if g.id() % 2 == 1 { Some(g) } else { kept } + }); + // Of an iterator that drops nothing, by a closure that does. + let n = [1u32, 2, 3].iter().rfold(0, move |n, &k| n * 10 + k + e.id() - e.id()); + log.note(format!("rfold {:?} {n}", kept.map(|g| g.id()))); + } + 10 => { + // `try_rfold` breaks by `None`, dropping its closure as it returns, before what the + // iterator still holds, which drops with it. + let mut held = guards(1, 6).into_iter(); + let sum = held.try_rfold(0, move |n, g| { + log.note(format!("try {} {}", g.id(), c.id())); + (g.id() != id + 3).then(|| n + g.id() - id) + }); + log.note(format!("tried {sum:?} {}", held.len())); + let rest = held.try_rfold(0, move |n, g| Some(n + g.id() + d.id() - d.id())); + log.note(format!("rest {rest:?} {}", e.id())); + } + 11 => { + // By `Err`, through a `map` whose closure it borrows, which drops with the map. + let mut mapped = guards(1, 6).into_iter().map(move |g| { + log.note(format!("map {} {}", g.id(), c.id())); + g + }); + let r: Result = + mapped.try_rfold(0, move |n, g| if g.id() == id + 2 { Err(g) } else { Ok(n + g.id() + d.id() - d.id()) }); + log.note(format!("tried {:?}", r.map_err(|g| g.id()))); + drop(mapped); + log.note(format!("dropped {}", e.id())); + } + 12 => { + use std::ops::ControlFlow; + // By `Break`, through a chain, which drops each half it ends as it goes. + let mut chained = guards(1, 3).into_iter().chain(guards(3, 6)).rev(); + let r = chained.try_rfold(0, move |n, g| match g.id() == id + 4 { + true => ControlFlow::Break(g), + false => ControlFlow::Continue(n + g.id() + c.id() - c.id()), + }); + let broke = match r { + ControlFlow::Break(g) => Some(g.id()), + ControlFlow::Continue(_) => None, + }; + log.note(format!("broke {broke:?}")); + let n = chained.try_rfold(0, |n, g| ControlFlow::<(), u32>::Continue(n + g.id() - id)); + log.note(format!("rest {n:?} {} {}", d.id(), e.id())); + } + 13 => { + // Of nothing: each closure drops before the iterator, or as `try_rfold` returns. + let none = guards(1, 1).into_iter().rfold(guard(20), move |acc, _| { + log.note(format!("never {}", c.id())); + acc + }); + let mut empty = guards(1, 1).into_iter().map(move |g| g.id() + d.id()); + let tried = empty.try_rfold(0u32, move |n, k| { + log.note(format!("never {}", e.id())); + n.checked_add(k) + }); + log.note(format!("empty {} {tried:?}", none.id())); + } + 14 => { + // A crate's own `fold` and `count`, which std's `map` and `for_each` call, drop + // what they hold, and the closure std gives the fold, where their bodies do. + let n = pile(1, 5) + .map(move |g| { + log.note(format!("map {} {}", g.id(), c.id())); + g.id() - id + }) + .fold(0, |n, k| n * 10 + k); + log.note(format!("fold {n}")); + pile(5, 8).for_each(move |g| log.note(format!("each {} {}", g.id(), d.id()))); + let m = pile(1, 4).map(move |g| g.id() + e.id()).count(); + log.note(format!("count {m} {}", pile(4, 6).count())); + } + 15 => { + // Its own `last`, `rfold` through `rev`, and `nth` through `skip`. + let last = pile(1, 4).last(); + let back = pile(4, 7).rev().last(); + let skipped = pile(7, 9).skip(1).last(); + log.note(format!("last {:?} {:?} {:?}", last.map(|g| g.id()), back.map(|g| g.id()), skipped.map(|g| g.id()))); + let kept = pile(1, 6).rev().map(move |g| (g, c.id())).fold(None, |_, (g, _)| Some(g)); + log.note(format!("rev {:?} {} {}", kept.map(|g| g.id()), d.id(), e.id())); + } + 16 => { + // Its own `nth_back` through `rev`, `count` through `chain`, and its `fold`, not + // called through `&mut`. + let mut held = pile(1, 6); + log.note(format!("nth {:?}", held.by_ref().rev().nth(1).map(|g| g.id()))); + let n = (&mut held).map(move |g| g.id() + c.id() - c.id()).fold(0, |n, k| n + k); + log.note(format!("borrowed {n} {}", held.held.len())); + let m = pile(6, 8).chain(guards(8, 10)).count(); + log.note(format!("chain {m} {} {}", d.id(), e.id())); + } + _ => { + let a = guard(20); + guards(1, 6).into_iter().try_rfold(0, move |n, g| { + assert!(g.id() != id + 3, "try_rfold of g{} with g{} after\n{}", g.id(), a.id(), String::from_utf8(log.text()).unwrap()); + Some(n + g.id()) + }); + } + } +} + +/// Guards popped from the back of a `Vec`, with its own `nth`, `nth_back`, folds, `count`, +/// and `last`, each of which notes it was called. Its folds stop short of the last guard +/// and drop their closure before they note they folded, and the rest drop with it. +struct Pile { + held: Vec, + log: Log, +} + +impl Iterator for Pile { + type Item = Guard; + + fn next(&mut self) -> Option { + self.held.pop() + } + + fn size_hint(&self) -> (usize, Option) { + (self.held.len(), Some(self.held.len())) + } + + fn nth(&mut self, n: usize) -> Option { + self.log.note(format!("pile nth {n}")); + for _ in 0..n { + drop(self.held.pop()?); + } + self.held.pop() + } + + fn fold B>(mut self, init: B, mut f: F) -> B { + self.log.note("pile fold".into()); + let mut acc = init; + while self.held.len() > 1 { + acc = f(acc, self.held.pop().unwrap()); + } + drop(f); + self.log.note("pile folded".into()); + acc + } + + fn count(self) -> usize { + self.log.note(format!("pile count {}", self.held.len())); + self.held.len() + } + + fn last(mut self) -> Option { + self.log.note("pile last".into()); + (!self.held.is_empty()).then(|| self.held.remove(0)) + } +} + +impl DoubleEndedIterator for Pile { + fn next_back(&mut self) -> Option { + (!self.held.is_empty()).then(|| self.held.remove(0)) + } + + fn nth_back(&mut self, n: usize) -> Option { + self.log.note(format!("pile nth_back {n}")); + for _ in 0..n { + drop(self.next_back()?); + } + self.next_back() + } + + fn rfold B>(mut self, init: B, mut f: F) -> B { + self.log.note("pile rfold".into()); + let mut acc = init; + while self.held.len() > 1 { + acc = f(acc, self.held.remove(0)); + } + drop(f); + self.log.note("pile rfolded".into()); + acc } } diff --git a/ts/runtime/rt/iter.ts b/ts/runtime/rt/iter.ts index af602ba18..9e850e074 100644 --- a/ts/runtime/rt/iter.ts +++ b/ts/runtime/rt/iter.ts @@ -26,7 +26,7 @@ import { ByteSlice, ByteVec, byteVecExtendFromSlice, byteVecPush, byteVecReserve import { AtIndex, BTreeIter, HashIter, type Ordering } from "./collections.ts"; import { type Hasher, hash8 } from "./hash.ts"; import { charStep, intToBig, type Limbs, lt as wideLt, type Step } from "./int.ts"; -import { drop as dispose, dropRange } from "./task.ts"; +import { closure, drop as dispose, dropRange } from "./task.ts"; /** What `next` returns once an iterator is exhausted, which no item is. */ export const DONE: unique symbol = /* @__PURE__ */ Symbol("DONE"); @@ -543,12 +543,29 @@ export function iterSuccessors(first: T | undefined | None, succ: (item: T) = } /** - * An `impl Iterator` of the translated crate, which `next` calls the `next` of, and `drop` - * drops. `hint`, `back`, and `len` call its own `size_hint`, `next_back`, and `len`, where - * it has them. + * The methods of std's iterator traits an iterator of the translated crate has of its own, + * beside `next`, each a function of its source: `iterFrom` calls each where std's + * adaptors and consumers do. `fold`, `rfold`, `count`, and `last` take it by value. */ -export function iterFrom(source: S, next: (source: S) => T | Done, drop?: Drop, hint?: (source: S) => SizeHint, back?: (source: S) => T | Done, len?: (source: S) => number): Iter { - return new FromNext(source, next, drop, hint, back, len); +export interface Own { + readonly hint?: (source: S) => SizeHint; + readonly back?: (source: S) => T | Done; + readonly len?: (source: S) => number; + readonly nth?: (source: S, n: number) => T | Done; + readonly nthBack?: (source: S, n: number) => T | Done; + /** Of one accumulator type in Rust, which only moves the one it is given, as any it is called with. */ + readonly fold?: (source: S, acc: never, f: never) => unknown; + readonly rfold?: (source: S, acc: never, f: never) => unknown; + readonly count?: (source: S) => number; + readonly last?: (source: S) => T | Done; +} + +/** + * An `impl Iterator` of the translated crate, which `next` calls the `next` of, `drop` + * drops, and `own` reads by the methods it has of its own. + */ +export function iterFrom(source: S, next: (source: S) => T | Done, drop?: Drop, own?: Own): Iter { + return new FromNext(source, next, drop, own); } /** An iterator borrowed by `&mut`, which std's adaptors take as one: its items, but never it to drop. */ @@ -985,6 +1002,39 @@ export function iterFold(it: Iter, init: A, f: (acc: A, item: T) => A, return it.fold(init, f, owns ? () => dispose(f) : undefined); } +/** `DoubleEndedIterator::rfold`, from the back, as `iterFold`. */ +export function iterRfold(it: Iter, init: A, f: (acc: A, item: T) => A, drops = false, owns = false): A { + if (!drops) { + const folded = it.folded(true); + let acc = init; + for (let item = folded.nextBack(); item !== DONE; item = folded.nextBack()) acc = f(acc, item); + if (owns) dispose(f); + return acc; + } + return it.rfold(init, f, owns ? () => dispose(f) : undefined); +} + +/** + * `DoubleEndedIterator::try_rfold`, from the back as `try_rfold` steps it, until `f` + * breaks: by an `Option`'s `None`, `none` where that is `rt.None`, if `option`, and else by + * an `rt.Result`'s `Err`, as a `Result` or a `ControlFlow` breaks. It returns what broke, or + * the accumulator as the type continues with it. If it `owns` `f`, `f` drops as it returns. + */ +export function iterTryRfold(it: Iter, init: A, f: (acc: A, item: T) => R, option = false, owns = false, none?: None): R { + const folded = it.folded(); + let acc = init; + for (let item = folded.nextBack(); item !== DONE; item = folded.nextBack()) { + const step = f(acc, item); + if (option ? step === none : !(step as Result).ok) { + if (owns) dispose(f); + return step; + } + acc = option ? (step as unknown as A) : (step as { value: A }).value; + } + if (owns) dispose(f); + return (option ? acc : Ok(acc)) as R; +} + /** `Iterator::for_each`, which drops `f` if it `owns` it, as `iterFold` does. */ export function iterForEach(it: Iter, f: (item: T) => void, drops = false, owns = false): void { if (!drops) { @@ -1392,6 +1442,7 @@ export function ownedLast(it: Iter, drop?: Drop, none?: None): T | unde /** `count`, dropping each item by `drop`, and then `it`, as std's of its kind does. */ function count(it: Iter, drop: Drop | undefined): number { + if (it instanceof FromNext && it.own?.count !== undefined) return it.taken(it.own.count); if (it instanceof EnumerateIter) return count(it.inner, items(drop)); if (it instanceof ChainIter) { // std's: each iterator's own `count`, the first's first. @@ -1448,6 +1499,7 @@ function count(it: Iter, drop: Drop | undefined): number { * does. By `fold`, each item drops as the next replaces it. */ function last(it: Iter, drop: Drop | undefined): T | Done { + if (it instanceof FromNext && it.own?.last !== undefined) return it.taken(it.own.last); if ((it instanceof SliceIter && drop !== undefined) || (it instanceof BTreeIter && it.back)) { // std's, of a `Vec`'s or an array's, and of a B-tree's `into_keys` and // `into_values`: the last item, and then the rest drop with it. @@ -1919,25 +1971,21 @@ class OptionIter extends Iter implements Disposable { } /** - * An iterator whose `next` is a function of its source, which `drop` drops, as are its - * `size_hint`, `next_back`, and `len` where it has them. + * An iterator whose `next` is a function of its source, which `drop` drops, and which `own` + * reads by the methods it has of its own. */ class FromNext extends Iter implements Disposable { private readonly source: S; private readonly step: (source: S) => T | Done; private drop: Drop | undefined; - private readonly hint: ((source: S) => SizeHint) | undefined; - private readonly back: ((source: S) => T | Done) | undefined; - private readonly exact: ((source: S) => number) | undefined; + readonly own: Own | undefined; - constructor(source: S, step: (source: S) => T | Done, drop?: Drop, hint?: (source: S) => SizeHint, back?: (source: S) => T | Done, exact?: (source: S) => number) { + constructor(source: S, step: (source: S) => T | Done, drop?: Drop, own?: Own) { super(); this.source = source; this.step = step; this.drop = drop; - this.hint = hint; - this.back = back; - this.exact = exact; + this.own = own; } next(): T | Done { @@ -1946,21 +1994,60 @@ class FromNext extends Iter implements Disposable { /** Only an iterator with its own `next_back` is read from the back. */ override nextBack(): T | Done { - return (this.back as (source: S) => T | Done)(this.source); + return (this.own?.back as (source: S) => T | Done)(this.source); + } + + /** Its own, which drops what it skips itself. */ + override nth(n: number, drop?: Drop): T | Done { + const nth = this.own?.nth; + return nth === undefined ? super.nth(n, drop) : nth(this.source, n); + } + + override nthBack(n: number, drop?: Drop): T | Done { + const nthBack = this.own?.nthBack; + return nthBack === undefined ? super.nthBack(n, drop) : nthBack(this.source, n); } override sizeHint(): SizeHint { - return this.hint === undefined ? super.sizeHint() : this.hint(this.source); + const hint = this.own?.hint; + return hint === undefined ? super.sizeHint() : hint(this.source); } /** Its own, or std's, of its size hint. */ override len(): number { - return this.exact === undefined ? hintLen(this) : this.exact(this.source); + const len = this.own?.len; + return len === undefined ? hintLen(this) : len(this.source); + } + + override fold(acc: A, f: (acc: A, item: T) => A, release?: () => void): A { + const fold = this.own?.fold; + return fold === undefined ? super.fold(acc, f, release) : this.folds(fold, acc, f, release); + } + + override rfold(acc: A, f: (acc: A, item: T) => A, release?: () => void): A { + const rfold = this.own?.rfold; + return rfold === undefined ? super.rfold(acc, f, release) : this.folds(rfold, acc, f, release); + } + + /** + * Its own `fold` or `rfold`, which takes it by value: given `f` as a closure that drops + * what it owns by `release`, as the crate's drops the closure std gives it. + */ + private folds(fold: (source: S, acc: never, f: never) => unknown, acc: A, f: (acc: A, item: T) => A, release: (() => void) | undefined): A { + this.drop = undefined; + const g = release === undefined ? f : closure((acc: A, item: T) => f(acc, item), release); + return (fold as (source: S, acc: A, f: (acc: A, item: T) => A) => A)(this.source, acc, g); + } + + /** Its own `count` or `last`, which takes it by value. */ + taken(f: (source: S) => R): R { + this.drop = undefined; + return f(this.source); } /** Its source cloned by `h.v`, as the crate's own `Clone` of it. */ override clone(h?: Clones): Iter { - return new FromNext(cloned(this.source, h?.v), this.step, this.drop, this.hint, this.back, this.exact); + return new FromNext(cloned(this.source, h?.v), this.step, this.drop, this.own); } [Symbol.dispose](): void { diff --git a/ts/src/lower/iter.rs b/ts/src/lower/iter.rs index 950f51806..fc6397a3c 100644 --- a/ts/src/lower/iter.rs +++ b/ts/src/lower/iter.rs @@ -56,17 +56,34 @@ fn own_next<'tcx>(b: &Body<'_, '_, 'tcx>, ty: Ty<'tcx>) -> Option /// The methods of std's iterator traits, by trait, that an iterator of the crate may have /// of its own: `rt.iterFrom` calls each where std's adaptors do. -const OWN: [(&str, &str); 4] = [ +const OWN: [(&str, &str); 10] = [ ("Iterator", "next"), ("Iterator", "size_hint"), + ("Iterator", "nth"), + ("Iterator", "fold"), + ("Iterator", "count"), + ("Iterator", "last"), ("DoubleEndedIterator", "next_back"), + ("DoubleEndedIterator", "nth_back"), + ("DoubleEndedIterator", "rfold"), ("ExactSizeIterator", "len"), ]; +/// The methods in `OWN` that take the iterator by value, which std's consumers call of +/// one they own, but not through a `&mut`, which reads it by `try_fold`. +const BY_VALUE: [(&str, &str); 4] = [ + ("Iterator", "fold"), + ("DoubleEndedIterator", "rfold"), + ("Iterator", "count"), + ("Iterator", "last"), +]; + /// Refuse an `impl Iterator` of the crate, whose `next` is `next_fn`, that std's adaptors /// would read other than through the methods in `OWN`: one whose `Iterator` or -/// `DoubleEndedIterator` impl overrides another, such as `fold` or `nth_back`, which they -/// call in its place. +/// `DoubleEndedIterator` impl overrides another, such as `find`, which they call in its +/// place, or whose own `fold` or `rfold` holds its accumulator in an `Option` or a `Poll`, +/// as `fold_args` translates it for one that can't tell an `rt.None` or `rt.Pending` +/// accumulator apart. pub fn check_impl(t: &mut Translator<'_, '_>, next_fn: DefId) { let tcx = t.tcx; let Some(imp) = tcx.impl_of_assoc(next_fn) else { @@ -87,18 +104,64 @@ pub fn check_impl(t: &mut Translator<'_, '_>, next_fn: DefId) { }; for item in tcx.associated_items(other).in_definition_order() { let name = item.name(); - if item.is_fn() && !OWN.contains(&(tr.as_str(), name.as_str())) { + if !item.is_fn() { + continue; + } + if !OWN.contains(&(tr.as_str(), name.as_str())) { t.err( tcx.def_span(item.def_id), format!("overriding `{tr}::{name}`, which std's adaptors call in place of `next` or beside it"), ); + } else if matches!(name.as_str(), "fold" | "rfold") && wraps_acc(tcx, item.def_id) { + t.err( + tcx.def_span(item.def_id), + format!("overriding `{tr}::{name}` with its accumulator in an `Option` or a `Poll`, which is not supported yet"), + ); } } } } +/// Whether the crate's own `fold` or `rfold`, `def_id`, holds its accumulator, its first type +/// parameter, in an `Option` or a `Poll`. +fn wraps_acc(tcx: TyCtxt<'_>, def_id: DefId) -> bool { + let generics = tcx.generics_of(def_id); + let Some(acc) = generics.own_params.iter().find(|p| matches!(p.kind, ty::GenericParamDefKind::Type { .. })) else { + return false; + }; + tcx.optimized_mir(def_id).local_decls.iter().any(|local| { + local.ty.walk().filter_map(|arg| arg.as_type()).any(|t| match t.kind() { + ty::Adt(adt, args) => { + matches!(Std::of(tcx, adt.did()), Some(Std::Option | Std::Poll)) + && matches!(args.type_at(0).kind(), ty::Param(p) if p.index == acc.index) + } + _ => false, + }) + }) +} + +/// The generic arguments the crate's own `fold` or `rfold` of `item`s is translated for: +/// the accumulator, as an `Option`, whose `None` in an `Option` of it is `rt.None` +/// and which nothing else tells apart from any other value, as a body generic over it +/// can't, and the closure, as a `Box acc>`, whose JS value is the +/// function `rt.iterFrom` gives it and which drops what std's closure owns as it drops. +fn fold_args<'tcx>(tcx: TyCtxt<'tcx>, item: Ty<'tcx>) -> Option<[Ty<'tcx>; 2]> { + let lang = tcx.lang_items(); + let acc = Ty::new_option(tcx, tcx.types.u32); + let inputs = Ty::new_tup(tcx, &[acc, item]); + let call = ty::ExistentialTraitRef::new(tcx, lang.fn_mut_trait()?, [inputs]); + let output = ty::ExistentialProjection::new(tcx, lang.fn_once_output()?, [inputs], acc.into()); + let preds = tcx.mk_poly_existential_predicates(&[ + ty::Binder::dummy(ty::ExistentialPredicate::Trait(call)), + ty::Binder::dummy(ty::ExistentialPredicate::Projection(output)), + ]); + let f = Ty::new_box(tcx, Ty::new_dynamic(tcx, preds, tcx.lifetimes.re_erased)); + Some([acc, f]) +} + /// The crate's own `tr::name` of an iterator of type `ty`, through any references, if `ty` -/// is one of the crate's own that overrides it or has it as a required method. +/// is one of the crate's own that overrides it or has it as a required method: its +/// instance for `fold_args` if it is a `fold` or `rfold`. fn own_method<'tcx>(b: &Body<'_, '_, 'tcx>, ty: Ty<'tcx>, tr: &str, name: &str) -> Option> { let tcx = b.t.tcx; let ty = ty.peel_refs(); @@ -114,10 +177,75 @@ fn own_method<'tcx>(b: &Body<'_, '_, 'tcx>, ty: Ty<'tcx>, tr: &str, name: &str) .filter_by_name_unhygienic(rustc_span::Symbol::intern(name)) .next()? .def_id; - let instance = Instance::try_resolve(tcx, b.t.typing_env_pub(), method, tcx.mk_args(&[ty.into()])).ok()??; + let mut args = vec![ty::GenericArg::from(ty)]; + if matches!(name, "fold" | "rfold") { + args.extend(fold_args(tcx, b.t.iter_item(ty)?)?.map(ty::GenericArg::from)); + } + let instance = Instance::try_resolve(tcx, b.t.typing_env_pub(), method, tcx.mk_args(&args)).ok()??; (instance.def_id() != method).then_some(instance) } +/// Whether `ty` holds, by value rather than through a reference, an iterator of the crate with a +/// method in `BY_VALUE` of its own, which std's consumers call where they take it. +fn folds_own<'tcx>(b: &Body<'_, '_, 'tcx>, ty: Ty<'tcx>) -> bool { + let mut walk = ty.walk(); + while let Some(arg) = walk.next() { + let Some(t) = arg.as_type() else { + continue; + }; + if t.is_ref() { + walk.skip_current_subtree(); + } else if BY_VALUE.iter().any(|&(tr, name)| own_method(b, t, tr, name).is_some()) { + return true; + } + } + false +} + +/// The `rt.Own` of the crate's iterator of type `ty`: each method of `OWN` but `next` that +/// it has of its own, as a function of its source, and those in `BY_VALUE` only if it is +/// `owned`. `undefined` if it has none. +fn own_methods<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, owned: bool, span: Span) -> Expr { + let none = b.t.iter_item(ty.peel_refs()).and_then(|item| b.t.none_arg(item)); + let mut props = Vec::new(); + for (tr, name) in &OWN[1..] { + if !owned && BY_VALUE.contains(&(tr, name)) { + continue; + } + let Some(instance) = own_method(b, ty, tr, name) else { + continue; + }; + let sym = Expr::Sym(b.t.instance(instance)); + // Each that returns an `Option` of an item, as the protocol returns it: an item or + // `rt.DONE`. + let method = match *name { + "next_back" | "nth" | "nth_back" | "last" => { + let n = (*name != "next_back" && *name != "last").then_some("n"); + let args = [Expr::ident("it")].into_iter().chain(n.map(Expr::ident)).collect(); + let option = [sym.call(args)].into_iter().chain(none.clone()).collect(); + let it = Param { + name: "it".into(), + ty: Some(b.t.ty(ty.peel_refs(), span)), + }; + // `n` is typed by its place in `rt.Own`. + let params = [it].into_iter().chain(n.map(|n| Param { name: n.into(), ty: None })); + Expr::Lambda(params.collect(), Box::new(Expr::rt("iterFromOption", option))) + } + _ => sym, + }; + let key = match *name { + "size_hint" => "hint".into(), + "next_back" => "back".into(), + other => super::camel(other), + }; + props.push((Key::Name(key), method)); + } + match props.is_empty() { + true => Expr::undefined(), + false => Expr::Object(props), + } +} + /// `iter.next_back()` of the crate's own iterator of type `ty`, as the protocol returns it: /// an item or `rt.DONE`. fn own_back<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, iter: Expr) -> Option { @@ -165,38 +293,13 @@ pub fn into_iter<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, value: Expr, sp not_bound(b, ty, span); return Some(match own_next(b, ty) { Some(instance) => { - let sym = b.t.instance(instance); - let param_ty = b.t.ty(ty.peel_refs(), span); - let it = "it".to_string(); - let next = Expr::Sym(sym).call(vec![Expr::ident(&it)]); - // Each of its own methods `rt.iterFrom` calls, as a function of the source. - let of = |body: Option| match body { - Some(body) => { - let param = Param { - name: it.clone(), - ty: Some(param_ty.clone()), - }; - Expr::Lambda(vec![param], Box::new(body)) - } - None => Expr::undefined(), - }; - let call = |b: &mut Body<'_, '_, 'tcx>, tr: &str, name: &str| { - let instance = own_method(b, ty, tr, name)?; - Some(Expr::Sym(b.t.instance(instance)).call(vec![Expr::ident(&it)])) - }; + let next = Expr::Sym(b.t.instance(instance)); let drop = match owned && b.t.drops(ty) { true => b.t.dropper(ty, span), false => Expr::undefined(), }; - let own = [ - call(b, "Iterator", "size_hint"), - own_back(b, ty, Expr::ident(&it)), - call(b, "ExactSizeIterator", "len"), - ]; - Expr::rt( - "iterFrom", - tail(vec![value, of(Some(next))], [vec![drop], own.map(of).to_vec()].concat()), - ) + let own = own_methods(b, ty, owned, span); + Expr::rt("iterFrom", tail(vec![value, next], vec![drop, own])) } // One borrowed by `&mut`, which std's adaptors may drop once it ends, but which // is its owner's to drop, and which a consumer reads on through the borrow @@ -569,11 +672,18 @@ pub fn call<'tcx>( } } // Each owns a closure it is given by value, which drops as its fold ends. - "for_each" | "fold" => { + "for_each" | "fold" | "rfold" => { let drops = iter_drops(b, self_ty, span); let owns = flag(b.t.drops(targ(gargs.types().count() - 1)?)); method(&camel, tail(rest, vec![drops, owns])) } + // `try_rfold::`, which drops its closure as it returns, but not the + // iterator, which it borrows. + "try_rfold" => { + let (option, none) = try_flow(b, targ(3)?)?; + let owns = flag(b.t.drops(targ(2)?)); + method(&camel, tail(rest, [flag(option), owns].into_iter().chain(none).collect())) + } // std's `Sum` and `Product` are of the type or a reference to it: another is the crate's. "sum" | "product" if item.peel_refs() != targ(1)? => None, // `Duration`'s carries its nanoseconds and panics as std's does, not as `+` would. @@ -1461,6 +1571,23 @@ pub(super) fn text_items<'tcx>(t: &Translator<'_, 'tcx>, item: Ty<'tcx>) -> Opti } } +/// How a `try_` fold's closure returning an `r` breaks: by `None`, and the `rt.None` that is +/// where it is, if it is an `Option`, or a `ControlFlow` held as one, and else by `Err`, if +/// it is a `Result`, or a `ControlFlow` held as one. +fn try_flow<'tcx>(b: &Body<'_, '_, 'tcx>, r: Ty<'tcx>) -> Option<(bool, Option)> { + let ty::Adt(_, args) = r.kind() else { + return None; + }; + match b.t.std_of(r)? { + Std::Option => Some((true, b.t.none_arg(args.type_at(0)))), + Std::ControlFlow if library::Flow::of(b.t.tcx, args) == library::Flow::Option => { + Some((true, b.t.none_arg(args.type_at(1)))) + } + Std::Result | Std::ControlFlow => Some((false, None)), + _ => None, + } +} + /// Whether an iterator of type `ty` that a runtime function takes by value drops what it /// holds, which its `rt.Iter` drops as std's does: `true`, or `undefined` for one that /// drops nothing. @@ -1487,11 +1614,13 @@ pub(super) fn iter_take<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, folds: b } } -/// Whether an iterator of type `ty` drops, refusing one it can't drop: the crate's own -/// drops through `rt.iterFrom`. +/// Whether a runtime function takes an iterator of type `ty` by value as std's consumers +/// do, by its `fold` or its kind's own `count` and `last`, rather than as `folded` steps +/// it: if it drops, refusing one it can't drop, as the crate's own drops through +/// `rt.iterFrom`, or holds one of the crate's own that `folds_own`. fn drops_iter<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, span: Span) -> bool { if !b.t.drops(ty) { - return false; + return folds_own(b, ty); } if own_next(b, ty).is_none() { b.t.dropper(ty, span); diff --git a/ts/src/lower/library.rs b/ts/src/lower/library.rs index 4a0ab4100..f21ac26b6 100644 --- a/ts/src/lower/library.rs +++ b/ts/src/lower/library.rs @@ -958,7 +958,8 @@ fn releases(owner: &str, name: &str) -> bool { | "eq_by" | "cmp_by" | "partial_cmp_by" - ) | ("Entry", "or_insert_with" | "or_insert_with_key" | "and_modify") + ) | ("DoubleEndedIterator", "rfold" | "try_rfold") + | ("Entry", "or_insert_with" | "or_insert_with_key" | "and_modify") ) } @@ -1002,7 +1003,7 @@ fn takes_none(owner: &str, name: &str) -> bool { "get" | "get_mut" | "set" | "get_or_init" | "get_or_try_init" | "take" | "into_inner" ) | ("Arc" | "Rc", "into_inner") - | ("DoubleEndedIterator", "next_back" | "nth_back" | "rfind") + | ("DoubleEndedIterator", "next_back" | "nth_back" | "rfind" | "try_rfold") | ("dyn Any", "downcast_ref" | "downcast_mut") | ("ptr", "as_ref" | "as_mut") | ("from_fn", "from_fn") diff --git a/ts/tests/task.ts b/ts/tests/task.ts index 6959edb1a..81ef2c5cf 100644 --- a/ts/tests/task.ts +++ b/ts/tests/task.ts @@ -425,7 +425,7 @@ export const cases: Uint8Array[] = [ ...Array.from({ length: 6 }, (_, arg) => script(["cells", arg])), // Each scenario of adaptors' closures that drop, folded either way. ...Array.from({ length: 42 }, (_, arg) => script(["folded", arg])), - ...Array.from({ length: 9 }, (_, arg) => script(["rfolded", arg])), + ...Array.from({ length: 18 }, (_, arg) => script(["rfolded", arg])), // Where std drops values inside its iterators and formatting. ...[...Array.from({ length: 10 }, (_, arg) => arg), 19, 29].map((arg) => script(["inside", arg])), // Where std drops a closure given to a consumer or an entry. From b46c2f817ad19087ce1113d347939e57620af174 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 17:14:52 -0800 Subject: [PATCH 03/23] style(ts): format Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/lang/src/ends.rs | 8 +++++++- ts/fixtures/task/src/drops/folds.rs | 29 ++++++++++++++++++++++++----- ts/src/lower/iter.rs | 20 ++++++++++++++++---- 3 files changed, 47 insertions(+), 10 deletions(-) diff --git a/ts/fixtures/lang/src/ends.rs b/ts/fixtures/lang/src/ends.rs index fa8665190..bab5b1e68 100644 --- a/ts/fixtures/lang/src/ends.rs +++ b/ts/fixtures/lang/src/ends.rs @@ -328,7 +328,13 @@ fn consumed + ExactSizeIterator>(mut it: I, pi /// `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its /// `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One /// fold panics past `k` items, with what was logged so far. -fn folded + ExactSizeIterator>(mut it: I, pick: u8, k: usize, log: &RefCell>, out: &mut Vec) { +fn folded + ExactSizeIterator>( + mut it: I, + pick: u8, + k: usize, + log: &RefCell>, + out: &mut Vec, +) { let k8 = k as u8; match pick { 0 => out.push(it.fold(1u8, |a, b| a.wrapping_mul(3) ^ b)), diff --git a/ts/fixtures/task/src/drops/folds.rs b/ts/fixtures/task/src/drops/folds.rs index 92838ee69..64b8f5487 100644 --- a/ts/fixtures/task/src/drops/folds.rs +++ b/ts/fixtures/task/src/drops/folds.rs @@ -590,8 +590,13 @@ pub(super) fn rfolded(log: &Log, id: u32, arg: u8) { log.note(format!("map {} {}", g.id(), c.id())); g }); - let r: Result = - mapped.try_rfold(0, move |n, g| if g.id() == id + 2 { Err(g) } else { Ok(n + g.id() + d.id() - d.id()) }); + let r: Result = mapped.try_rfold(0, move |n, g| { + if g.id() == id + 2 { + Err(g) + } else { + Ok(n + g.id() + d.id() - d.id()) + } + }); log.note(format!("tried {:?}", r.map_err(|g| g.id()))); drop(mapped); log.note(format!("dropped {}", e.id())); @@ -644,8 +649,16 @@ pub(super) fn rfolded(log: &Log, id: u32, arg: u8) { let last = pile(1, 4).last(); let back = pile(4, 7).rev().last(); let skipped = pile(7, 9).skip(1).last(); - log.note(format!("last {:?} {:?} {:?}", last.map(|g| g.id()), back.map(|g| g.id()), skipped.map(|g| g.id()))); - let kept = pile(1, 6).rev().map(move |g| (g, c.id())).fold(None, |_, (g, _)| Some(g)); + log.note(format!( + "last {:?} {:?} {:?}", + last.map(|g| g.id()), + back.map(|g| g.id()), + skipped.map(|g| g.id()) + )); + let kept = pile(1, 6) + .rev() + .map(move |g| (g, c.id())) + .fold(None, |_, (g, _)| Some(g)); log.note(format!("rev {:?} {} {}", kept.map(|g| g.id()), d.id(), e.id())); } 16 => { @@ -661,7 +674,13 @@ pub(super) fn rfolded(log: &Log, id: u32, arg: u8) { _ => { let a = guard(20); guards(1, 6).into_iter().try_rfold(0, move |n, g| { - assert!(g.id() != id + 3, "try_rfold of g{} with g{} after\n{}", g.id(), a.id(), String::from_utf8(log.text()).unwrap()); + assert!( + g.id() != id + 3, + "try_rfold of g{} with g{} after\n{}", + g.id(), + a.id(), + String::from_utf8(log.text()).unwrap() + ); Some(n + g.id()) }); } diff --git a/ts/src/lower/iter.rs b/ts/src/lower/iter.rs index df0fe90d1..6adae80c2 100644 --- a/ts/src/lower/iter.rs +++ b/ts/src/lower/iter.rs @@ -115,7 +115,9 @@ pub fn check_impl(t: &mut Translator<'_, '_>, next_fn: DefId) { } else if matches!(name.as_str(), "fold" | "rfold") && wraps_acc(tcx, item.def_id) { t.err( tcx.def_span(item.def_id), - format!("overriding `{tr}::{name}` with its accumulator in an `Option` or a `Poll`, which is not supported yet"), + format!( + "overriding `{tr}::{name}` with its accumulator in an `Option` or a `Poll`, which is not supported yet" + ), ); } } @@ -126,7 +128,11 @@ pub fn check_impl(t: &mut Translator<'_, '_>, next_fn: DefId) { /// parameter, in an `Option` or a `Poll`. fn wraps_acc(tcx: TyCtxt<'_>, def_id: DefId) -> bool { let generics = tcx.generics_of(def_id); - let Some(acc) = generics.own_params.iter().find(|p| matches!(p.kind, ty::GenericParamDefKind::Type { .. })) else { + let Some(acc) = generics + .own_params + .iter() + .find(|p| matches!(p.kind, ty::GenericParamDefKind::Type { .. })) + else { return false; }; tcx.optimized_mir(def_id).local_decls.iter().any(|local| { @@ -228,7 +234,10 @@ fn own_methods<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, owned: bool, span ty: Some(b.t.ty(ty.peel_refs(), span)), }; // `n` is typed by its place in `rt.Own`. - let params = [it].into_iter().chain(n.map(|n| Param { name: n.into(), ty: None })); + let params = [it].into_iter().chain(n.map(|n| Param { + name: n.into(), + ty: None, + })); Expr::Lambda(params.collect(), Box::new(Expr::rt("iterFromOption", option))) } _ => sym, @@ -682,7 +691,10 @@ pub fn call<'tcx>( "try_rfold" => { let (option, none) = try_flow(b, targ(3)?)?; let owns = flag(b.t.drops(targ(2)?)); - method(&camel, tail(rest, [flag(option), owns].into_iter().chain(none).collect())) + method( + &camel, + tail(rest, [flag(option), owns].into_iter().chain(none).collect()), + ) } // std's `Sum` and `Product` are of the type or a reference to it: another is the crate's. "sum" | "product" if item.peel_refs() != targ(1)? => None, From 6428d1c2b67116c802f7fc35bc02c9a15c59510a Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 17:16:02 -0800 Subject: [PATCH 04/23] fix(ts): keep Poll verbatim in the census Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/reject/census.md | 8 ++++---- ts/src/census.rs | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ts/fixtures/reject/census.md b/ts/fixtures/reject/census.md index 93e951eaa..13f7d59b2 100644 --- a/ts/fixtures/reject/census.md +++ b/ts/fixtures/reject/census.md @@ -95,7 +95,7 @@ | 1 | hashing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:206:75 | | 1 | hashing `_` by its address, which JS has no counterpart of | fixtures/reject/src/lib.rs:1664:5 | | 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | fixtures/reject/src/lib.rs:266:16 | -| 1 | overriding `_` with its accumulator in an `Option` or a `_`, which is not supported yet | fixtures/reject/src/lib.rs:125:2 | +| 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | fixtures/reject/src/lib.rs:125:2 | | 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | fixtures/reject/src/lib.rs:150:2 | | 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | fixtures/reject/src/lib.rs:530:1 | @@ -121,7 +121,6 @@ The type or module each refused type or path belongs to. | 3 | `Iterator` | fixtures/reject/src/lib.rs:37:4 | | 3 | `Mid` | fixtures/reject/src/lib.rs:1303:34 | | 3 | `Outer` | fixtures/reject/src/lib.rs:1303:34 | -| 3 | `Poll` | fixtures/reject/src/lib.rs:72:20 | | 3 | `Reused` | fixtures/reject/src/lib.rs:21:4 | | 3 | `dyn std::any::Any` | fixtures/reject/src/lib.rs:474:32 | | 3 | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2314:2 | @@ -134,6 +133,7 @@ The type or module each refused type or path belongs to. | 2 | `InTuple` | fixtures/reject/src/lib.rs:1254:9 | | 2 | `InWritten` | fixtures/reject/src/lib.rs:1274:9 | | 2 | `Inside` | fixtures/reject/src/lib.rs:1793:20 | +| 2 | `Poll` | fixtures/reject/src/lib.rs:72:20 | | 2 | `Scaled` | fixtures/reject/src/lib.rs:406:23 | | 2 | `[u32; 3]` | fixtures/reject/src/lib.rs:2138:10 | | 2 | `[u8; 2]` | fixtures/reject/src/lib.rs:1674:37 | @@ -429,7 +429,7 @@ The type or module each refused type or path belongs to. | 1 | hashing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:206:75 | | 1 | hashing `_` by its address, which JS has no counterpart of | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1664:5 | | 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | `std::vec::Vec`, `Batched` | fixtures/reject/src/lib.rs:266:16 | -| 1 | overriding `_` with its accumulator in an `Option` or a `_`, which is not supported yet | `Iterator::fold`, `Poll` | fixtures/reject/src/lib.rs:125:2 | +| 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:125:2 | | 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | `DoubleEndedIterator::rfind` | fixtures/reject/src/lib.rs:150:2 | | 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `String::retain` | fixtures/reject/src/lib.rs:732:4 | | 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `str::contains` | fixtures/reject/src/lib.rs:275:4 | @@ -1150,7 +1150,7 @@ The type or module each refused type or path belongs to.
-
overriding `_` with its accumulator in an `Option` or a `_`, which is not supported yet (1) +
overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet (1) - fixtures/reject/src/lib.rs:125:2: overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet diff --git a/ts/src/census.rs b/ts/src/census.rs index 5d32ef700..44b38836e 100644 --- a/ts/src/census.rs +++ b/ts/src/census.rs @@ -162,6 +162,7 @@ const VERBATIM: &[&str] = &[ "Ord", "Pending", "Pointer", + "Poll", "Ready", "Reborrow", "Result", From 61ea38d4ab295fe55a3aa257b350e3f0f424018d Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 17:23:34 -0800 Subject: [PATCH 05/23] docs(ts): note rt.iterFrom's Own record in MIGRATE Co-Authored-By: Claude Opus 5.5 --- ts/MIGRATE.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ts/MIGRATE.md b/ts/MIGRATE.md index aeaea18fd..5e8383f01 100644 --- a/ts/MIGRATE.md +++ b/ts/MIGRATE.md @@ -2,6 +2,9 @@ ## Unreleased +- `rt.iterFrom` takes `hint`, `back`, and `len` in one `rt.Own` record after `drop`, + which also holds the crate's own `nth`, `fold`, and the rest, as in + `rt.iterFrom(source, next, drop, { hint, back, len })`. - `rt.sliceSort` is the stable sorts and takes the element's size in bytes on wasm32 and whether it is `Freeze` after the test, as in `rt.sliceSort(v, rt.lt, 4, true)`; `rt.sliceSortUnstable` is the unstable ones and takes whether it is `Copy` too. From 8505ceea95b9b536d06ddb4bfdc349e07e3f3c9e Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 17:38:36 -0800 Subject: [PATCH 06/23] fix(ts): lend a fold's closure to the crate's own fold, and refuse folds generic in more than moves A chain lends its closure to its first half's own fold, which dropped it there. The crate's fold, translated for one accumulator and closure, now refuses a body that tells either apart: a call or constant generic over them, or a drop of the accumulator, in it or its closures. Co-Authored-By: Claude Opus 5.5 --- ts/README.md | 6 +- ts/fixtures/reject/census.md | 36 +- ts/fixtures/reject/expected.txt | 5 +- ts/fixtures/reject/src/lib.rs | 67 ++ ts/fixtures/reject/ts.toml | 3 + ts/fixtures/task/expected/drops/folds.ts | 827 ++++++++++++----------- ts/fixtures/task/src/drops/folds.rs | 8 + ts/runtime/rt/iter.ts | 7 +- ts/src/lower/iter.rs | 171 ++++- 9 files changed, 686 insertions(+), 444 deletions(-) diff --git a/ts/README.md b/ts/README.md index 74e3ee698..e05fe33f7 100644 --- a/ts/README.md +++ b/ts/README.md @@ -892,8 +892,10 @@ copies that std makes, other than a map's, or hands a closure, as `iter_mut` and `and_modify` do, one into a `Result`'s payload passed on or kept, the adaptors without a mapping in `src/lower/iter.rs` (such as `partition`), an own `impl Iterator` or `DoubleEndedIterator` that overrides a provided method other than -those, such as `find` or `for_each`, or whose own `fold` or `rfold` holds its accumulator in an -`Option` or a `Poll`, +those, such as `find` or `for_each`, or whose own `fold` or `rfold` tells its accumulator or +closure apart from another, by an `Option` or a `Poll` of it, a call or constant generic over it +other than calling or dropping the closure or passing them to std's iterators, or a drop of the +accumulator, a pointer's address (`{:p}`), `write!` with a placeholder into the crate's own `fmt::Write`, a `str` pattern other than a `char`, a `&str`, a predicate, or chars, a mutable `str` slice, a copy of a closure that changes diff --git a/ts/fixtures/reject/census.md b/ts/fixtures/reject/census.md index 13f7d59b2..f188634a3 100644 --- a/ts/fixtures/reject/census.md +++ b/ts/fixtures/reject/census.md @@ -1,7 +1,7 @@ # Census of `reject-fixture` -- Refusals: 260 -- Function instances: 296 +- Refusals: 263 +- Function instances: 306 - Generic functions no instance reached, lowered over their type parameters: 13 ## By construct @@ -95,7 +95,10 @@ | 1 | hashing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:206:75 | | 1 | hashing `_` by its address, which JS has no counterpart of | fixtures/reject/src/lib.rs:1664:5 | | 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | fixtures/reject/src/lib.rs:266:16 | -| 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | fixtures/reject/src/lib.rs:125:2 | +| 1 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | fixtures/reject/src/lib.rs:2422:3 | +| 1 | overriding `_` with a constant generic over its accumulator or closure, which is not supported yet | fixtures/reject/src/lib.rs:2446:11 | +| 1 | overriding `_` with a drop of its accumulator, which is not supported yet | fixtures/reject/src/lib.rs:2469:3 | +| 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | fixtures/reject/src/lib.rs:126:3 | | 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | fixtures/reject/src/lib.rs:150:2 | | 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | fixtures/reject/src/lib.rs:530:1 | @@ -111,6 +114,7 @@ The type or module each refused type or path belongs to. | 11 | `(u8, u8)` | fixtures/reject/src/lib.rs:1220:31 | | 9 | `[u8; 4]` | fixtures/reject/src/lib.rs:423:26 | | 8 | `u8` | fixtures/reject/src/lib.rs:224:6 | +| 6 | `Iterator` | fixtures/reject/src/lib.rs:37:4 | | 6 | `f16` | fixtures/reject/src/lib.rs:7:14 | | 6 | `std::borrow::Cow` | fixtures/reject/src/lib.rs:280:2 | | 5 | `Gap` | fixtures/reject/src/lib.rs:856:10 | @@ -118,7 +122,6 @@ The type or module each refused type or path belongs to. | 5 | `i32` | fixtures/reject/src/lib.rs:2294:7 | | 4 | `std::pin::Pin` | fixtures/reject/src/lib.rs:91:2 | | 4 | `std::str` | fixtures/reject/src/lib.rs:388:4 | -| 3 | `Iterator` | fixtures/reject/src/lib.rs:37:4 | | 3 | `Mid` | fixtures/reject/src/lib.rs:1303:34 | | 3 | `Outer` | fixtures/reject/src/lib.rs:1303:34 | | 3 | `Reused` | fixtures/reject/src/lib.rs:21:4 | @@ -429,7 +432,10 @@ The type or module each refused type or path belongs to. | 1 | hashing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:206:75 | | 1 | hashing `_` by its address, which JS has no counterpart of | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1664:5 | | 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | `std::vec::Vec`, `Batched` | fixtures/reject/src/lib.rs:266:16 | -| 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:125:2 | +| 1 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2422:3 | +| 1 | overriding `_` with a constant generic over its accumulator or closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2446:11 | +| 1 | overriding `_` with a drop of its accumulator, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2469:3 | +| 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:126:3 | | 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | `DoubleEndedIterator::rfind` | fixtures/reject/src/lib.rs:150:2 | | 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `String::retain` | fixtures/reject/src/lib.rs:732:4 | | 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `str::contains` | fixtures/reject/src/lib.rs:275:4 | @@ -1150,9 +1156,27 @@ The type or module each refused type or path belongs to.
+
overriding `_` with a call generic over its accumulator or closure, which is not supported yet (1) + +- fixtures/reject/src/lib.rs:2422:3: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet + +
+ +
overriding `_` with a constant generic over its accumulator or closure, which is not supported yet (1) + +- fixtures/reject/src/lib.rs:2446:11: overriding `Iterator::fold` with a constant generic over its accumulator or closure, which is not supported yet + +
+ +
overriding `_` with a drop of its accumulator, which is not supported yet (1) + +- fixtures/reject/src/lib.rs:2469:3: overriding `Iterator::fold` with a drop of its accumulator, which is not supported yet + +
+
overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet (1) -- fixtures/reject/src/lib.rs:125:2: overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet +- fixtures/reject/src/lib.rs:126:3: overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet
diff --git a/ts/fixtures/reject/expected.txt b/ts/fixtures/reject/expected.txt index 4d9b73fee..9356beb68 100644 --- a/ts/fixtures/reject/expected.txt +++ b/ts/fixtures/reject/expected.txt @@ -241,7 +241,7 @@ memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the byte memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2297:17 memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2298:21 memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2300:17 -overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet at fixtures/reject/src/lib.rs:125:2 +overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet at fixtures/reject/src/lib.rs:126:3 overriding `DoubleEndedIterator::rfind`, which std's adaptors call in place of `next` or beside it at fixtures/reject/src/lib.rs:150:2 a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Escaped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1020:43 a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Called`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1034:28 @@ -258,3 +258,6 @@ a raw pointer to `(u8, u8)` in `([Cloned; 2], (u8, u8))`, which the crate may pu a raw pointer to `(u8, u8)` in `(Dropped, (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2321:23 a raw pointer to `(u8, u8)` in `([Greatest; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2377:13 a raw pointer to `(u8, u8)` in `([Touched; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2321:23 +overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2422:3 +overriding `Iterator::fold` with a constant generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2446:11 +overriding `Iterator::fold` with a drop of its accumulator, which is not supported yet at fixtures/reject/src/lib.rs:2469:3 diff --git a/ts/fixtures/reject/src/lib.rs b/ts/fixtures/reject/src/lib.rs index 41e48beb8..d149ebfc0 100644 --- a/ts/fixtures/reject/src/lib.rs +++ b/ts/fixtures/reject/src/lib.rs @@ -2407,3 +2407,70 @@ fn given_slots(fill: [T; 2]) -> u8 { } tagged_slots!(slots) } + +/// An iterator whose own `fold` tells its accumulator apart by a helper generic over it. +pub struct Keeps; + +impl Iterator for Keeps { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + fn fold B>(self, init: B, _f: F) -> B { + keep(init) + } +} + +#[inline(never)] +fn keep(x: T) -> T { + Some(x).unwrap() +} + +pub fn keeps() -> usize { + Keeps.map(|b| b + 1).count() +} + +/// An iterator whose own `fold` tells its accumulator apart by its size. +pub struct Sizes; + +impl Iterator for Sizes { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + fn fold B>(self, init: B, _f: F) -> B { + assert!(const { size_of::() } > 0); + init + } +} + +pub fn sizes() -> usize { + Sizes.map(|b| b + 1).count() +} + +/// An iterator whose own `fold` drops its accumulator, as the one it is translated for drops. +pub struct Discards; + +impl Iterator for Discards { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + #[allow(clippy::empty_loop)] + fn fold B>(self, init: B, _f: F) -> B { + { + let _held = init; + } + loop {} + } +} + +pub fn discards() -> usize { + Discards.map(|b| b + 1).count() +} diff --git a/ts/fixtures/reject/ts.toml b/ts/fixtures/reject/ts.toml index 6f3febbf5..0668d51fb 100644 --- a/ts/fixtures/reject/ts.toml +++ b/ts/fixtures/reject/ts.toml @@ -187,5 +187,8 @@ roots = [ "dropped_slots", "ranked_slots", "touched_slots", + "keeps", + "sizes", + "discards", ] printable = ["Meters"] diff --git a/ts/fixtures/task/expected/drops/folds.ts b/ts/fixtures/task/expected/drops/folds.ts index 6f11ee090..62a3a391a 100644 --- a/ts/fixtures/task/expected/drops/folds.ts +++ b/ts/fixtures/task/expected/drops/folds.ts @@ -944,21 +944,21 @@ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { let n!: rt.u32; let f!: Guard.Guard; let broke!: rt.u32 | undefined; - let _733: boolean = false; - let _732: boolean = false; - let _731: boolean = false; - const guard: (a0: rt.u32) => Guard.Guard = (n11: rt.u32): Guard.Guard => { - return Guard.new(rt.u32Add(id, n11), Log.clone$Clone(log)); + let _775: boolean = false; + let _774: boolean = false; + let _773: boolean = false; + const guard: (a0: rt.u32) => Guard.Guard = (n12: rt.u32): Guard.Guard => { + return Guard.new(rt.u32Add(id, n12), Log.clone$Clone(log)); }; const guards: (a0: rt.u32, a1: rt.u32) => Guard.Guard[] = (from: rt.u32, to: rt.u32): Guard.Guard[] => { return rt.iterToArray(rt.iterMap(new rt.Range(from, to), guard), undefined, 8, true); }; const _11: [Guard.Guard, Guard.Guard, Guard.Guard] = [guard(10), guard(11), guard(12)]; - _733 = true; + _775 = true; const c: Guard.Guard = _11[0]; - _732 = true; + _774 = true; const d: Guard.Guard = _11[1]; - _731 = true; + _773 = true; const e: Guard.Guard = _11[2]; const pile: (a0: rt.u32, a1: rt.u32) => Pile.Pile = (from2: rt.u32, to2: rt.u32): Pile.Pile => { return new Pile.Pile(guards(from2, to2), Log.clone$Clone(log)); @@ -966,129 +966,129 @@ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { const _23: rt.u8 = rt.u8Rem(arg, 18); if (_23 === 0) { const _29: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - _733 = false; - const captured46 = c; - const _27: rt.Iter = rt.iterRev(rt.iterMap(_29, rt.closure((g51: Guard.Guard): Guard.Guard => { - const _926: rt.u32 = Guard.id(g51); - const _1225: rt.u32 = Guard.id(captured46); - const args84: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_926, f), (f: rt.Formatter) => rt.u32Display(_1225, f)]; - Log.note(log, rt.fmtFormat(["map ", args84[0], " ", args84[1]])); - return g51; + _775 = false; + const captured48 = c; + const _27: rt.Iter = rt.iterRev(rt.iterMap(_29, rt.closure((g53: Guard.Guard): Guard.Guard => { + const _928: rt.u32 = Guard.id(g53); + const _1226: rt.u32 = Guard.id(captured48); + const args86: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_928, f), (f: rt.Formatter) => rt.u32Display(_1226, f)]; + Log.note(log, rt.fmtFormat(["map ", args86[0], " ", args86[1]])); + return g53; }, (): void => { - captured46[Symbol.dispose](); + captured48[Symbol.dispose](); }))); - _732 = false; - const captured47 = id; - const captured48 = d; - n = rt.iterSum(rt.iterMap(_27, rt.closure((g52: Guard.Guard): rt.u32 => { - const _058: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g52), captured47), Guard.id(captured48)), Guard.id(captured48)); - g52[Symbol.dispose](); - return _058; + _774 = false; + const captured49 = id; + const captured50 = d; + n = rt.iterSum(rt.iterMap(_27, rt.closure((g54: Guard.Guard): rt.u32 => { + const _060: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g54), captured49), Guard.id(captured50)), Guard.id(captured50)); + g54[Symbol.dispose](); + return _060; }, (): void => { - captured48[Symbol.dispose](); + captured50[Symbol.dispose](); })), rt.u32Add, 0, true); const _41: rt.u32 = Guard.id(e); const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n, f), (f: rt.Formatter) => rt.u32Display(_41, f)]; Log.note(log, rt.fmtFormat(["map ", args2[0], " ", args2[1]])); } else if (_23 === 1) { const _53: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - _733 = false; - const captured41 = c; - const _51: rt.Iter = rt.iterRev(rt.iterFilter(_53, rt.closure((g47: Guard.Guard): boolean => { - return Guard.id(g47) !== Guard.id(captured41); + _775 = false; + const captured43 = c; + const _51: rt.Iter = rt.iterRev(rt.iterFilter(_53, rt.closure((g49: Guard.Guard): boolean => { + return Guard.id(g49) !== Guard.id(captured43); }, (): void => { - captured41[Symbol.dispose](); + captured43[Symbol.dispose](); }), rt.drop)); - _732 = false; - const captured42 = id; - const captured43 = d; - const n2: rt.u32 = rt.iterSum(rt.iterMap(_51, rt.closure((g48: Guard.Guard): rt.u32 => { - const _054: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g48), captured42), Guard.id(captured43)), Guard.id(captured43)); - g48[Symbol.dispose](); - return _054; + _774 = false; + const captured44 = id; + const captured45 = d; + const n2: rt.u32 = rt.iterSum(rt.iterMap(_51, rt.closure((g50: Guard.Guard): rt.u32 => { + const _056: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g50), captured44), Guard.id(captured45)), Guard.id(captured45)); + g50[Symbol.dispose](); + return _056; }, (): void => { - captured43[Symbol.dispose](); + captured45[Symbol.dispose](); })), rt.u32Add, 0, true); f = guard(13); const _66: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); - _731 = false; - const captured44 = e; - const _64: rt.Iter = rt.iterRev(rt.iterFilterMap(_66, rt.closure((g49: Guard.Guard): Guard.Guard | undefined => { - return thenSome$0zvoczk(Guard.id(g49) !== Guard.id(captured44), g49); + _773 = false; + const captured46 = e; + const _64: rt.Iter = rt.iterRev(rt.iterFilterMap(_66, rt.closure((g51: Guard.Guard): Guard.Guard | undefined => { + return thenSome$0zvoczk(Guard.id(g51) !== Guard.id(captured46), g51); }, (): void => { - captured44[Symbol.dispose](); + captured46[Symbol.dispose](); }))); - const captured45 = f; - const m: rt.usize = rt.ownedCount(rt.iterMap(_64, rt.closure((g50: Guard.Guard): rt.u32 => { - const _056: rt.u32 = rt.u32Add(Guard.id(g50), Guard.id(captured45)); - g50[Symbol.dispose](); - return _056; + const captured47 = f; + const m: rt.usize = rt.ownedCount(rt.iterMap(_64, rt.closure((g52: Guard.Guard): rt.u32 => { + const _058: rt.u32 = rt.u32Add(Guard.id(g52), Guard.id(captured47)); + g52[Symbol.dispose](); + return _058; }, (): void => { - captured45[Symbol.dispose](); + captured47[Symbol.dispose](); }))); const args4: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n2, f), (f: rt.Formatter) => rt.usizeDisplay(m, f)]; Log.note(log, rt.fmtFormat(["filter ", args4[0], " ", args4[1]])); } else if (_23 === 2) { const _87: rt.Iter = rt.iterSlice(guards(1, 4), rt.drop); - _733 = false; - const captured37 = c; - const _86: rt.Iter = rt.iterInspect(_87, rt.closure((g43: Guard.Guard): undefined => { - const _923: rt.u32 = Guard.id(g43); - const _1134: rt.u32 = Guard.id(captured37); - const args80: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_923, f), (f: rt.Formatter) => rt.u32Display(_1134, f)]; - Log.note(log, rt.fmtFormat(["inspect ", args80[0], " ", args80[1]])); + _775 = false; + const captured39 = c; + const _86: rt.Iter = rt.iterInspect(_87, rt.closure((g45: Guard.Guard): undefined => { + const _925: rt.u32 = Guard.id(g45); + const _1136: rt.u32 = Guard.id(captured39); + const args82: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_925, f), (f: rt.Formatter) => rt.u32Display(_1136, f)]; + Log.note(log, rt.fmtFormat(["inspect ", args82[0], " ", args82[1]])); }, (): void => { - captured37[Symbol.dispose](); + captured39[Symbol.dispose](); })); - _732 = false; - const captured38 = d; - const n3: rt.usize = rt.ownedCount(rt.iterMap(_86, rt.closure((g44: Guard.Guard): rt.u32 => { - const _051: rt.u32 = rt.u32Add(Guard.id(g44), Guard.id(captured38)); - g44[Symbol.dispose](); - return _051; + _774 = false; + const captured40 = d; + const n3: rt.usize = rt.ownedCount(rt.iterMap(_86, rt.closure((g46: Guard.Guard): rt.u32 => { + const _053: rt.u32 = rt.u32Add(Guard.id(g46), Guard.id(captured40)); + g46[Symbol.dispose](); + return _053; }, (): void => { - captured38[Symbol.dispose](); + captured40[Symbol.dispose](); }))); const f2: Guard.Guard = guard(13); const _100: rt.Iter = rt.iterSlice(guards(4, 8), rt.drop); - _731 = false; - const captured39 = e; - const _98: rt.Iter = rt.iterRev(rt.iterInspect(_100, rt.closure((g45: Guard.Guard): undefined => { - const _924: rt.u32 = Guard.id(g45); - const _1137: rt.u32 = Guard.id(captured39); - const args82: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_924, f), (f: rt.Formatter) => rt.u32Display(_1137, f)]; - Log.note(log, rt.fmtFormat(["inspect ", args82[0], " ", args82[1]])); + _773 = false; + const captured41 = e; + const _98: rt.Iter = rt.iterRev(rt.iterInspect(_100, rt.closure((g47: Guard.Guard): undefined => { + const _926: rt.u32 = Guard.id(g47); + const _1139: rt.u32 = Guard.id(captured41); + const args84: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_926, f), (f: rt.Formatter) => rt.u32Display(_1139, f)]; + Log.note(log, rt.fmtFormat(["inspect ", args84[0], " ", args84[1]])); }, (): void => { - captured39[Symbol.dispose](); + captured41[Symbol.dispose](); }))); - const captured40 = f2; - const m2: rt.usize = rt.ownedCount(rt.iterMap(_98, rt.closure((g46: Guard.Guard): rt.u32 => { - const _052: rt.u32 = rt.u32Add(Guard.id(g46), Guard.id(captured40)); - g46[Symbol.dispose](); - return _052; + const captured42 = f2; + const m2: rt.usize = rt.ownedCount(rt.iterMap(_98, rt.closure((g48: Guard.Guard): rt.u32 => { + const _054: rt.u32 = rt.u32Add(Guard.id(g48), Guard.id(captured42)); + g48[Symbol.dispose](); + return _054; }, (): void => { - captured40[Symbol.dispose](); + captured42[Symbol.dispose](); }))); const args6: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n3, f), (f: rt.Formatter) => rt.usizeDisplay(m2, f)]; Log.note(log, rt.fmtFormat(["inspect ", args6[0], " ", args6[1]])); } else if (_23 === 3) { const _122: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - _733 = false; - const captured36 = c; - const _133: [rt.usize, rt.u32] | undefined = option_map$14zg54s(rt.ownedLast(rt.iterRev(rt.iterEnumerate(rt.iterMap(_122, rt.closure((g41: Guard.Guard): Guard.Guard => { - const _922: rt.u32 = Guard.id(g41); - const _1223: rt.u32 = Guard.id(captured36); - const args78: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_922, f), (f: rt.Formatter) => rt.u32Display(_1223, f)]; - Log.note(log, rt.fmtFormat(["map ", args78[0], " ", args78[1]])); - return g41; + _775 = false; + const captured38 = c; + const _133: [rt.usize, rt.u32] | undefined = option_map$14zg54s(rt.ownedLast(rt.iterRev(rt.iterEnumerate(rt.iterMap(_122, rt.closure((g43: Guard.Guard): Guard.Guard => { + const _924: rt.u32 = Guard.id(g43); + const _1224: rt.u32 = Guard.id(captured38); + const args80: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_924, f), (f: rt.Formatter) => rt.u32Display(_1224, f)]; + Log.note(log, rt.fmtFormat(["map ", args80[0], " ", args80[1]])); + return g43; }, (): void => { - captured36[Symbol.dispose](); + captured38[Symbol.dispose](); })))), lib_drop$tuple2_usize_model_Guard), (_230: [rt.usize, Guard.Guard]): [rt.usize, rt.u32] => { const i: rt.usize = _230[0]; - const g42: Guard.Guard = _230[1]; - const _050: [rt.usize, rt.u32] = [i, Guard.id(g42)]; - g42[Symbol.dispose](); - return _050; + const g44: Guard.Guard = _230[1]; + const _052: [rt.usize, rt.u32] = [i, Guard.id(g44)]; + g44[Symbol.dispose](); + return _052; }); const _135: rt.u32 = Guard.id(d); const _138: rt.u32 = Guard.id(e); @@ -1096,289 +1096,289 @@ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { Log.note(log, rt.fmtFormat(["enumerate ", args8[0], " ", args8[1], " ", args8[2]])); } else if (_23 === 4) { const _150: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - _733 = false; - const captured34 = c; - const n4: rt.usize = rt.ownedCount(rt.iterRev(rt.iterRev(rt.iterMap(_150, rt.closure((g39: Guard.Guard): rt.u32 => { - const _046: rt.u32 = rt.u32Add(Guard.id(g39), Guard.id(captured34)); - g39[Symbol.dispose](); - return _046; + _775 = false; + const captured36 = c; + const n4: rt.usize = rt.ownedCount(rt.iterRev(rt.iterRev(rt.iterMap(_150, rt.closure((g41: Guard.Guard): rt.u32 => { + const _048: rt.u32 = rt.u32Add(Guard.id(g41), Guard.id(captured36)); + g41[Symbol.dispose](); + return _048; }, (): void => { - captured34[Symbol.dispose](); + captured36[Symbol.dispose](); }))))); const _158: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); - _732 = false; - const captured35 = d; - const m3: rt.u32 = rt.iterFold(rt.iterSkip(rt.iterMap(_158, rt.closure((g40: Guard.Guard): rt.u32 => { - const _047: rt.u32 = rt.u32Add(Guard.id(g40), Guard.id(captured35)); - g40[Symbol.dispose](); - return _047; + _774 = false; + const captured37 = d; + const m3: rt.u32 = rt.iterFold(rt.iterSkip(rt.iterMap(_158, rt.closure((g42: Guard.Guard): rt.u32 => { + const _049: rt.u32 = rt.u32Add(Guard.id(g42), Guard.id(captured37)); + g42[Symbol.dispose](); + return _049; }, (): void => { - captured35[Symbol.dispose](); - })), 1), 0, (n22: rt.u32, k5: rt.u32): rt.u32 => { - return rt.u32Add(n22, k5); + captured37[Symbol.dispose](); + })), 1), 0, (n25: rt.u32, k6: rt.u32): rt.u32 => { + return rt.u32Add(n25, k6); }, true); const _169: rt.u32 = Guard.id(e); const args10: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n4, f), (f: rt.Formatter) => rt.u32Display(m3, f), (f: rt.Formatter) => rt.u32Display(_169, f)]; Log.note(log, rt.fmtFormat(["twice ", args10[0], " ", args10[1], " ", args10[2]])); } else if (_23 === 5) { const _183: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - _733 = false; - const captured32 = c; - const _181: rt.Iter = rt.iterStepBy(rt.iterMap(_183, rt.closure((g35: Guard.Guard): Guard.Guard => { - const _920: rt.u32 = Guard.id(g35); - const _1221: rt.u32 = Guard.id(captured32); - const args76: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_920, f), (f: rt.Formatter) => rt.u32Display(_1221, f)]; - Log.note(log, rt.fmtFormat(["map ", args76[0], " ", args76[1]])); - return g35; + _775 = false; + const captured34 = c; + const _181: rt.Iter = rt.iterStepBy(rt.iterMap(_183, rt.closure((g37: Guard.Guard): Guard.Guard => { + const _922: rt.u32 = Guard.id(g37); + const _1222: rt.u32 = Guard.id(captured34); + const args78: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_922, f), (f: rt.Formatter) => rt.u32Display(_1222, f)]; + Log.note(log, rt.fmtFormat(["map ", args78[0], " ", args78[1]])); + return g37; }, (): void => { - captured32[Symbol.dispose](); + captured34[Symbol.dispose](); })), 2, rt.drop); - _732 = false; - const captured33 = d; - const _199: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_181, rt.closure((g36: Guard.Guard): [Guard.Guard, rt.u32] => { - return [g36, Guard.id(captured33)] as [Guard.Guard, rt.u32]; + _774 = false; + const captured35 = d; + const _199: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_181, rt.closure((g38: Guard.Guard): [Guard.Guard, rt.u32] => { + return [g38, Guard.id(captured35)] as [Guard.Guard, rt.u32]; }, (): void => { - captured33[Symbol.dispose](); + captured35[Symbol.dispose](); })), guard(20), (kept7: Guard.Guard | undefined, _347: [Guard.Guard, rt.u32]): Guard.Guard | undefined => { - let _044!: Guard.Guard | undefined; - let _1222: boolean = false; - let _1126: boolean = false; - _1222 = true; - _1126 = true; - const g37: Guard.Guard = _347[0]; - if (!(rt.u32Rem(Guard.id(g37), 2) === 1)) { - _1222 = false; - _044 = kept7; + let _046!: Guard.Guard | undefined; + let _1223: boolean = false; + let _1128: boolean = false; + _1223 = true; + _1128 = true; + const g39: Guard.Guard = _347[0]; + if (!(rt.u32Rem(Guard.id(g39), 2) === 1)) { + _1223 = false; + _046 = kept7; } else { - _1126 = false; - _044 = g37; + _1128 = false; + _046 = g39; } - if (_1126) { - g37[Symbol.dispose](); + if (_1128) { + g39[Symbol.dispose](); } - _1126 = false; - if (_1222) { + _1128 = false; + if (_1223) { rt.drop(kept7); - return _044; + return _046; } - return _044; - }, true), (g38: Guard.Guard): rt.u32 => { - const _045: rt.u32 = Guard.id(g38); - g38[Symbol.dispose](); - return _045; + return _046; + }, true), (g40: Guard.Guard): rt.u32 => { + const _047: rt.u32 = Guard.id(g40); + g40[Symbol.dispose](); + return _047; }); const _201: rt.u32 = Guard.id(e); const args12: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_199, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_201, f)]; Log.note(log, rt.fmtFormat(["step ", args12[0], " ", args12[1]])); } else if (_23 === 6) { const _213: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); - _733 = false; - const captured30 = c; - const _210: rt.Iter = rt.iterRev(rt.iterStepBy(rt.iterMap(_213, rt.closure((g31: Guard.Guard): Guard.Guard => { - const _918: rt.u32 = Guard.id(g31); - const _1219: rt.u32 = Guard.id(captured30); - const args74: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_918, f), (f: rt.Formatter) => rt.u32Display(_1219, f)]; - Log.note(log, rt.fmtFormat(["map ", args74[0], " ", args74[1]])); - return g31; + _775 = false; + const captured32 = c; + const _210: rt.Iter = rt.iterRev(rt.iterStepBy(rt.iterMap(_213, rt.closure((g33: Guard.Guard): Guard.Guard => { + const _920: rt.u32 = Guard.id(g33); + const _1220: rt.u32 = Guard.id(captured32); + const args76: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_920, f), (f: rt.Formatter) => rt.u32Display(_1220, f)]; + Log.note(log, rt.fmtFormat(["map ", args76[0], " ", args76[1]])); + return g33; }, (): void => { - captured30[Symbol.dispose](); + captured32[Symbol.dispose](); })), 2, rt.drop)); - _732 = false; - const captured31 = d; - const _229: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_210, rt.closure((g32: Guard.Guard): [Guard.Guard, rt.u32] => { - return [g32, Guard.id(captured31)] as [Guard.Guard, rt.u32]; + _774 = false; + const captured33 = d; + const _229: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_210, rt.closure((g34: Guard.Guard): [Guard.Guard, rt.u32] => { + return [g34, Guard.id(captured33)] as [Guard.Guard, rt.u32]; }, (): void => { - captured31[Symbol.dispose](); + captured33[Symbol.dispose](); })), guard(20), (kept6: Guard.Guard | undefined, _344: [Guard.Guard, rt.u32]): Guard.Guard | undefined => { - let _040!: Guard.Guard | undefined; - let _1220: boolean = false; - let _1121: boolean = false; - _1220 = true; - _1121 = true; - const g33: Guard.Guard = _344[0]; - if (!(rt.u32Rem(Guard.id(g33), 2) === 1)) { - _1220 = false; - _040 = kept6; + let _042!: Guard.Guard | undefined; + let _1221: boolean = false; + let _1123: boolean = false; + _1221 = true; + _1123 = true; + const g35: Guard.Guard = _344[0]; + if (!(rt.u32Rem(Guard.id(g35), 2) === 1)) { + _1221 = false; + _042 = kept6; } else { - _1121 = false; - _040 = g33; + _1123 = false; + _042 = g35; } - if (_1121) { - g33[Symbol.dispose](); + if (_1123) { + g35[Symbol.dispose](); } - _1121 = false; - if (_1220) { + _1123 = false; + if (_1221) { rt.drop(kept6); - return _040; + return _042; } - return _040; - }, true), (g34: Guard.Guard): rt.u32 => { - const _041: rt.u32 = Guard.id(g34); - g34[Symbol.dispose](); - return _041; + return _042; + }, true), (g36: Guard.Guard): rt.u32 => { + const _043: rt.u32 = Guard.id(g36); + g36[Symbol.dispose](); + return _043; }); const _231: rt.u32 = Guard.id(e); const args14: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_229, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_231, f)]; Log.note(log, rt.fmtFormat(["step ", args14[0], " ", args14[1]])); } else if (_23 === 7) { const _241: rt.Iter = rt.iterSlice(guards(1, 5), rt.drop); - _733 = false; - const captured27 = id; - const captured28 = c; - const n5: rt.u32 = rt.iterSum(rt.iterFuse(rt.iterMap(_241, rt.closure((g29: Guard.Guard): rt.u32 => { - const _036: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g29), captured27), Guard.id(captured28)), Guard.id(captured28)); - g29[Symbol.dispose](); - return _036; + _775 = false; + const captured29 = id; + const captured30 = c; + const n5: rt.u32 = rt.iterSum(rt.iterFuse(rt.iterMap(_241, rt.closure((g31: Guard.Guard): rt.u32 => { + const _038: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Sub(Guard.id(g31), captured29), Guard.id(captured30)), Guard.id(captured30)); + g31[Symbol.dispose](); + return _038; }, (): void => { - captured28[Symbol.dispose](); + captured30[Symbol.dispose](); })), true), rt.u32Add, 0, true); const _250: rt.Iter = rt.iterSlice(guards(5, 8), rt.drop); - _732 = false; - const captured29 = d; - const m4: rt.usize = rt.ownedCount(rt.iterRev(rt.iterFuse(rt.iterMap(_250, rt.closure((g30: Guard.Guard): rt.u32 => { - const _037: rt.u32 = rt.u32Add(Guard.id(g30), Guard.id(captured29)); - g30[Symbol.dispose](); - return _037; + _774 = false; + const captured31 = d; + const m4: rt.usize = rt.ownedCount(rt.iterRev(rt.iterFuse(rt.iterMap(_250, rt.closure((g32: Guard.Guard): rt.u32 => { + const _039: rt.u32 = rt.u32Add(Guard.id(g32), Guard.id(captured31)); + g32[Symbol.dispose](); + return _039; }, (): void => { - captured29[Symbol.dispose](); + captured31[Symbol.dispose](); })), true))); const _261: rt.u32 = Guard.id(e); const args16: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n5, f), (f: rt.Formatter) => rt.usizeDisplay(m4, f), (f: rt.Formatter) => rt.u32Display(_261, f)]; Log.note(log, rt.fmtFormat(["fuse ", args16[0], " ", args16[1], " ", args16[2]])); } else if (_23 === 8) { const _273: rt.Iter = rt.iterSlice(guards(1, 4), rt.drop); - _733 = false; - const captured23 = c; - const captured24 = guard; - const captured25 = id; - const flat: rt.Iter = rt.iterFlatten(rt.iterMap(_273, rt.closure((g25: Guard.Guard): Guard.Guard[] => { - const _916: rt.u32 = Guard.id(g25); - const _1217: rt.u32 = Guard.id(captured23); - const args72: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_916, f), (f: rt.Formatter) => rt.u32Display(_1217, f)]; - Log.note(log, rt.fmtFormat(["map ", args72[0], " ", args72[1]])); + _775 = false; + const captured25 = c; + const captured26 = guard; + const captured27 = id; + const flat: rt.Iter = rt.iterFlatten(rt.iterMap(_273, rt.closure((g27: Guard.Guard): Guard.Guard[] => { + const _918: rt.u32 = Guard.id(g27); + const _1218: rt.u32 = Guard.id(captured25); + const args74: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_918, f), (f: rt.Formatter) => rt.u32Display(_1218, f)]; + Log.note(log, rt.fmtFormat(["map ", args74[0], " ", args74[1]])); const v: Guard.Guard[] = []; - const _2211: Guard.Guard = captured24(rt.u32Add(rt.u32Sub(Guard.id(g25), captured25), 3)); + const _2211: Guard.Guard = captured26(rt.u32Add(rt.u32Sub(Guard.id(g27), captured27), 3)); v.push(_2211); - v.push(g25); + v.push(g27); return v; }, (): void => { - captured23[Symbol.dispose](); + captured25[Symbol.dispose](); })), (value: Guard.Guard[]) => rt.iterSlice(value, rt.drop), true); - const part8 = option_map$1raha9y(rt.iterToOption(flat.next()), (g26: Guard.Guard): rt.u32 => { - const _033: rt.u32 = Guard.id(g26); - g26[Symbol.dispose](); - return _033; + const part8 = option_map$1raha9y(rt.iterToOption(flat.next()), (g28: Guard.Guard): rt.u32 => { + const _035: rt.u32 = Guard.id(g28); + g28[Symbol.dispose](); + return _035; }); const args18: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part8, f, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["ends ", args18[0]])); - const part9 = option_map$1raha9y(rt.iterToOption(flat.nextBack()), (g27: Guard.Guard): rt.u32 => { - const _034: rt.u32 = Guard.id(g27); - g27[Symbol.dispose](); - return _034; + const part9 = option_map$1raha9y(rt.iterToOption(flat.nextBack()), (g29: Guard.Guard): rt.u32 => { + const _036: rt.u32 = Guard.id(g29); + g29[Symbol.dispose](); + return _036; }); const args20: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part9, f, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["ends ", args20[0]])); const _306: rt.Iter = flat; - _732 = false; - const captured26 = d; - const n6: rt.usize = rt.ownedCount(rt.iterMap(_306, rt.closure((g28: Guard.Guard): rt.u32 => { - const _035: rt.u32 = rt.u32Add(Guard.id(g28), Guard.id(captured26)); - g28[Symbol.dispose](); - return _035; + _774 = false; + const captured28 = d; + const n6: rt.usize = rt.ownedCount(rt.iterMap(_306, rt.closure((g30: Guard.Guard): rt.u32 => { + const _037: rt.u32 = rt.u32Add(Guard.id(g30), Guard.id(captured28)); + g30[Symbol.dispose](); + return _037; }, (): void => { - captured26[Symbol.dispose](); + captured28[Symbol.dispose](); }))); const _314: rt.u32 = Guard.id(e); const args22: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(n6, f), (f: rt.Formatter) => rt.u32Display(_314, f)]; Log.note(log, rt.fmtFormat(["flat ", args22[0], " ", args22[1]])); } else if (_23 === 9) { const _324: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); - _733 = false; - const captured20 = c; - const _323: rt.Iter = rt.iterMap(_324, rt.closure((g22: Guard.Guard): Guard.Guard => { - const _914: rt.u32 = Guard.id(g22); - const _1215: rt.u32 = Guard.id(captured20); - const args68: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_914, f), (f: rt.Formatter) => rt.u32Display(_1215, f)]; - Log.note(log, rt.fmtFormat(["map ", args68[0], " ", args68[1]])); - return g22; + _775 = false; + const captured22 = c; + const _323: rt.Iter = rt.iterMap(_324, rt.closure((g24: Guard.Guard): Guard.Guard => { + const _916: rt.u32 = Guard.id(g24); + const _1216: rt.u32 = Guard.id(captured22); + const args70: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_916, f), (f: rt.Formatter) => rt.u32Display(_1216, f)]; + Log.note(log, rt.fmtFormat(["map ", args70[0], " ", args70[1]])); + return g24; }, (): void => { - captured20[Symbol.dispose](); + captured22[Symbol.dispose](); })); const _329: Guard.Guard | undefined = guard(20); - _732 = false; - const captured21 = d; - const kept3: Guard.Guard | undefined = rt.iterRfold(_323, _329, rt.closure((kept5: Guard.Guard | undefined, g23: Guard.Guard): Guard.Guard | undefined => { - let _029!: Guard.Guard | undefined; + _774 = false; + const captured23 = d; + const kept3: Guard.Guard | undefined = rt.iterRfold(_323, _329, rt.closure((kept5: Guard.Guard | undefined, g25: Guard.Guard): Guard.Guard | undefined => { + let _031!: Guard.Guard | undefined; let _304: boolean = false; let _296: boolean = false; _304 = true; _296 = true; - const _1014: rt.u32 = Guard.id(g23); - const _1316: rt.u32 = Guard.id(captured21); - const args70: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_1014, f), (f: rt.Formatter) => rt.u32Display(_1316, f)]; - Log.note(log, rt.fmtFormat(["rfold ", args70[0], " ", args70[1]])); - if (!(rt.u32Rem(Guard.id(g23), 2) === 1)) { + const _1014: rt.u32 = Guard.id(g25); + const _1316: rt.u32 = Guard.id(captured23); + const args72: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_1014, f), (f: rt.Formatter) => rt.u32Display(_1316, f)]; + Log.note(log, rt.fmtFormat(["rfold ", args72[0], " ", args72[1]])); + if (!(rt.u32Rem(Guard.id(g25), 2) === 1)) { _304 = false; - _029 = kept5; + _031 = kept5; } else { _296 = false; - _029 = g23; + _031 = g25; } if (_296) { - g23[Symbol.dispose](); + g25[Symbol.dispose](); } if (_304) { rt.drop(kept5); - return _029; + return _031; } - return _029; + return _031; }, (): void => { - captured21[Symbol.dispose](); + captured23[Symbol.dispose](); }), true, true); const _335: rt.Iter = rt.iterSlice([1, 2, 3]); - _731 = false; - const captured22 = e; - const n7: rt.u32 = rt.iterRfold(_335, 0, rt.closure((n21: rt.u32, _326: rt.u32): rt.u32 => { - return rt.u32Sub(rt.u32Add(rt.u32Add(rt.u32Mul(n21, 10), _326), Guard.id(captured22)), Guard.id(captured22)); + _773 = false; + const captured24 = e; + const n7: rt.u32 = rt.iterRfold(_335, 0, rt.closure((n24: rt.u32, _326: rt.u32): rt.u32 => { + return rt.u32Sub(rt.u32Add(rt.u32Add(rt.u32Mul(n24, 10), _326), Guard.id(captured24)), Guard.id(captured24)); }, (): void => { - captured22[Symbol.dispose](); + captured24[Symbol.dispose](); }), undefined, true); - const _345: rt.u32 | undefined = option_map$1raha9y(kept3, (g24: Guard.Guard): rt.u32 => { - const _031: rt.u32 = Guard.id(g24); - g24[Symbol.dispose](); - return _031; + const _345: rt.u32 | undefined = option_map$1raha9y(kept3, (g26: Guard.Guard): rt.u32 => { + const _033: rt.u32 = Guard.id(g26); + g26[Symbol.dispose](); + return _033; }); const args24: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_345, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(n7, f)]; Log.note(log, rt.fmtFormat(["rfold ", args24[0], " ", args24[1]])); } else if (_23 === 10) { const held: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); - _733 = false; - const captured17 = c; - const captured18 = id; - const sum: rt.u32 | undefined = rt.iterTryRfold(held, 0, rt.closure((n19: rt.u32, g20: Guard.Guard): rt.u32 | undefined => { - const _1012: rt.u32 = Guard.id(g20); - const _1314: rt.u32 = Guard.id(captured17); - const args66: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_1012, f), (f: rt.Formatter) => rt.u32Display(_1314, f)]; - Log.note(log, rt.fmtFormat(["try ", args66[0], " ", args66[1]])); - const _025: rt.u32 | undefined = then$0ea5h05(Guard.id(g20) !== rt.u32Add(captured18, 3), (): rt.u32 => { - return rt.u32Sub(rt.u32Add(n19, Guard.id(g20)), captured18); + _775 = false; + const captured19 = c; + const captured20 = id; + const sum: rt.u32 | undefined = rt.iterTryRfold(held, 0, rt.closure((n22: rt.u32, g22: Guard.Guard): rt.u32 | undefined => { + const _1012: rt.u32 = Guard.id(g22); + const _1314: rt.u32 = Guard.id(captured19); + const args68: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_1012, f), (f: rt.Formatter) => rt.u32Display(_1314, f)]; + Log.note(log, rt.fmtFormat(["try ", args68[0], " ", args68[1]])); + const _027: rt.u32 | undefined = then$0ea5h05(Guard.id(g22) !== rt.u32Add(captured20, 3), (): rt.u32 => { + return rt.u32Sub(rt.u32Add(n22, Guard.id(g22)), captured20); }); - g20[Symbol.dispose](); - return _025; + g22[Symbol.dispose](); + return _027; }, (): void => { - captured17[Symbol.dispose](); + captured19[Symbol.dispose](); }), true, true); const _365: rt.usize = held.len(); const args26: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(sum, f, rt.u32Debug), (f: rt.Formatter) => rt.usizeDisplay(_365, f)]; Log.note(log, rt.fmtFormat(["tried ", args26[0], " ", args26[1]])); - _732 = false; - const captured19 = d; - const rest: rt.u32 | undefined = rt.iterTryRfold(held, 0, rt.closure((n20: rt.u32, g21: Guard.Guard): rt.u32 | undefined => { - const _027: rt.u32 | undefined = rt.u32Sub(rt.u32Add(rt.u32Add(n20, Guard.id(g21)), Guard.id(captured19)), Guard.id(captured19)); - g21[Symbol.dispose](); - return _027; + _774 = false; + const captured21 = d; + const rest: rt.u32 | undefined = rt.iterTryRfold(held, 0, rt.closure((n23: rt.u32, g23: Guard.Guard): rt.u32 | undefined => { + const _029: rt.u32 | undefined = rt.u32Sub(rt.u32Add(rt.u32Add(n23, Guard.id(g23)), Guard.id(captured21)), Guard.id(captured21)); + g23[Symbol.dispose](); + return _029; }, (): void => { - captured19[Symbol.dispose](); + captured21[Symbol.dispose](); }), true, true); const _382: rt.u32 = Guard.id(e); const args28: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(rest, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_382, f)]; @@ -1386,41 +1386,41 @@ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { rt.drop(held); } else if (_23 === 11) { const _391: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); - _733 = false; - const captured14 = c; - const mapped: rt.Iter = rt.iterMap(_391, rt.closure((g17: Guard.Guard): Guard.Guard => { - const _911: rt.u32 = Guard.id(g17); - const _1212: rt.u32 = Guard.id(captured14); - const args64: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_911, f), (f: rt.Formatter) => rt.u32Display(_1212, f)]; - Log.note(log, rt.fmtFormat(["map ", args64[0], " ", args64[1]])); - return g17; + _775 = false; + const captured16 = c; + const mapped: rt.Iter = rt.iterMap(_391, rt.closure((g19: Guard.Guard): Guard.Guard => { + const _913: rt.u32 = Guard.id(g19); + const _1213: rt.u32 = Guard.id(captured16); + const args66: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_913, f), (f: rt.Formatter) => rt.u32Display(_1213, f)]; + Log.note(log, rt.fmtFormat(["map ", args66[0], " ", args66[1]])); + return g19; }, (): void => { - captured14[Symbol.dispose](); + captured16[Symbol.dispose](); })); - _732 = false; - const captured15 = id; - const captured16 = d; - const part5 = result_mapErr$0nvqjog(rt.iterTryRfold(mapped, 0, rt.closure((n18: rt.u32, g18: Guard.Guard): rt.Result => { - let _023!: rt.Result; + _774 = false; + const captured17 = id; + const captured18 = d; + const part5 = result_mapErr$0nvqjog(rt.iterTryRfold(mapped, 0, rt.closure((n21: rt.u32, g20: Guard.Guard): rt.Result => { + let _025!: rt.Result; let _233: boolean = false; _233 = true; - if (!(Guard.id(g18) === rt.u32Add(captured15, 2))) { - _023 = rt.Ok(rt.u32Sub(rt.u32Add(rt.u32Add(n18, Guard.id(g18)), Guard.id(captured16)), Guard.id(captured16))); + if (!(Guard.id(g20) === rt.u32Add(captured17, 2))) { + _025 = rt.Ok(rt.u32Sub(rt.u32Add(rt.u32Add(n21, Guard.id(g20)), Guard.id(captured18)), Guard.id(captured18))); } else { _233 = false; - _023 = rt.Err(g18); + _025 = rt.Err(g20); } if (_233) { - g18[Symbol.dispose](); - return _023; + g20[Symbol.dispose](); + return _025; } - return _023; + return _025; }, (): void => { - captured16[Symbol.dispose](); - }), undefined, true), (g19: Guard.Guard): rt.u32 => { - const _024: rt.u32 = Guard.id(g19); - g19[Symbol.dispose](); - return _024; + captured18[Symbol.dispose](); + }), undefined, true), (g21: Guard.Guard): rt.u32 => { + const _026: rt.u32 = Guard.id(g21); + g21[Symbol.dispose](); + return _026; }); const args30: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(part5, f, rt.u32Debug, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["tried ", args30[0]])); @@ -1430,26 +1430,26 @@ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { Log.note(log, rt.fmtFormat(["dropped ", args32[0]])); } else if (_23 === 12) { const chained: rt.Iter = rt.iterRev(rt.iterChain(rt.iterSlice(guards(1, 3), rt.drop), rt.iterSlice(guards(3, 6), rt.drop))); - _733 = false; - const captured12 = id; - const captured13 = c; - const r2: rt.Result = rt.iterTryRfold(chained, 0, rt.closure((n16: rt.u32, g15: Guard.Guard): rt.Result => { - let _020!: rt.Result; + _775 = false; + const captured14 = id; + const captured15 = c; + const r2: rt.Result = rt.iterTryRfold(chained, 0, rt.closure((n19: rt.u32, g17: Guard.Guard): rt.Result => { + let _022!: rt.Result; let _232: boolean = false; _232 = true; - if (!(Guard.id(g15) === rt.u32Add(captured12, 4))) { - _020 = rt.Ok(rt.u32Sub(rt.u32Add(rt.u32Add(n16, Guard.id(g15)), Guard.id(captured13)), Guard.id(captured13))); + if (!(Guard.id(g17) === rt.u32Add(captured14, 4))) { + _022 = rt.Ok(rt.u32Sub(rt.u32Add(rt.u32Add(n19, Guard.id(g17)), Guard.id(captured15)), Guard.id(captured15))); } else { _232 = false; - _020 = rt.Err(g15); + _022 = rt.Err(g17); } if (_232) { - g15[Symbol.dispose](); - return _020; + g17[Symbol.dispose](); + return _022; } - return _020; + return _022; }, (): void => { - captured13[Symbol.dispose](); + captured15[Symbol.dispose](); }), undefined, true); if (r2.ok) { broke = undefined; @@ -1460,10 +1460,10 @@ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { } const args34: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(broke, f, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["broke ", args34[0]])); - const n8: rt.Result = rt.iterTryRfold(chained, 0, (n17: rt.u32, g16: Guard.Guard): rt.Result => { - const _021: rt.Result = rt.Ok(rt.u32Sub(rt.u32Add(n17, Guard.id(g16)), id)); - g16[Symbol.dispose](); - return _021; + const n8: rt.Result = rt.iterTryRfold(chained, 0, (n20: rt.u32, g18: Guard.Guard): rt.Result => { + const _023: rt.Result = rt.Ok(rt.u32Sub(rt.u32Add(n20, Guard.id(g18)), id)); + g18[Symbol.dispose](); + return _023; }); const _461: rt.u32 = Guard.id(d); const _464: rt.u32 = Guard.id(e); @@ -1473,36 +1473,36 @@ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { } else if (_23 === 13) { const _474: rt.Iter = rt.iterSlice(guards(1, 1), rt.drop); const _478: Guard.Guard = guard(20); - _733 = false; - const captured9 = c; + _775 = false; + const captured11 = c; const none: Guard.Guard = rt.iterRfold(_474, _478, rt.closure((acc: Guard.Guard, _316: Guard.Guard): Guard.Guard => { - const part3 = Guard.id(captured9); - const args60: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part3, f)]; - Log.note(log, rt.fmtFormat(["never ", args60[0]])); + const part3 = Guard.id(captured11); + const args62: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part3, f)]; + Log.note(log, rt.fmtFormat(["never ", args62[0]])); _316[Symbol.dispose](); return acc; }, (): void => { - captured9[Symbol.dispose](); + captured11[Symbol.dispose](); }), true, true); const _483: rt.Iter = rt.iterSlice(guards(1, 1), rt.drop); - _732 = false; - const captured10 = d; - const empty: rt.Iter = rt.iterMap(_483, rt.closure((g14: Guard.Guard): rt.u32 => { - const _018: rt.u32 = rt.u32Add(Guard.id(g14), Guard.id(captured10)); - g14[Symbol.dispose](); - return _018; + _774 = false; + const captured12 = d; + const empty: rt.Iter = rt.iterMap(_483, rt.closure((g16: Guard.Guard): rt.u32 => { + const _020: rt.u32 = rt.u32Add(Guard.id(g16), Guard.id(captured12)); + g16[Symbol.dispose](); + return _020; }, (): void => { - captured10[Symbol.dispose](); + captured12[Symbol.dispose](); })); - _731 = false; - const captured11 = e; - const tried: rt.u32 | undefined = rt.iterTryRfold(empty, 0, rt.closure((n15: rt.u32, k3: rt.u32): rt.u32 | undefined => { - const part4 = Guard.id(captured11); - const args62: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part4, f)]; - Log.note(log, rt.fmtFormat(["never ", args62[0]])); - return rt.u32CheckedAdd(n15, k3); + _773 = false; + const captured13 = e; + const tried: rt.u32 | undefined = rt.iterTryRfold(empty, 0, rt.closure((n18: rt.u32, k4: rt.u32): rt.u32 | undefined => { + const part4 = Guard.id(captured13); + const args64: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part4, f)]; + Log.note(log, rt.fmtFormat(["never ", args64[0]])); + return rt.u32CheckedAdd(n18, k4); }, (): void => { - captured11[Symbol.dispose](); + captured13[Symbol.dispose](); }), true, true); const _497: rt.u32 = Guard.id(none); const args38: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_497, f), (f: rt.Formatter) => rt.fmtOption(tried, f, rt.u32Debug)]; @@ -1511,47 +1511,47 @@ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { none[Symbol.dispose](); } else if (_23 === 14) { const _507: Pile.Pile = pile(1, 5); - _733 = false; - const captured5 = c; - const captured6 = id; - const _510: (a0: Guard.Guard) => rt.u32 = rt.closure((g11: Guard.Guard): rt.u32 => { - const _94: rt.u32 = Guard.id(g11); - const _1210: rt.u32 = Guard.id(captured5); - const args56: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_94, f), (f: rt.Formatter) => rt.u32Display(_1210, f)]; - Log.note(log, rt.fmtFormat(["map ", args56[0], " ", args56[1]])); - const _014: rt.u32 = rt.u32Sub(Guard.id(g11), captured6); - g11[Symbol.dispose](); - return _014; + _775 = false; + const captured7 = c; + const captured8 = id; + const _510: (a0: Guard.Guard) => rt.u32 = rt.closure((g13: Guard.Guard): rt.u32 => { + const _910: rt.u32 = Guard.id(g13); + const _1211: rt.u32 = Guard.id(captured7); + const args58: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_910, f), (f: rt.Formatter) => rt.u32Display(_1211, f)]; + Log.note(log, rt.fmtFormat(["map ", args58[0], " ", args58[1]])); + const _016: rt.u32 = rt.u32Sub(Guard.id(g13), captured8); + g13[Symbol.dispose](); + return _016; }, (): void => { - captured5[Symbol.dispose](); + captured7[Symbol.dispose](); }); - const part2 = rt.iterFold(rt.iterMap(rt.iterFrom(_507, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), _510), 0, (n14: rt.u32, k2: rt.u32): rt.u32 => { - return rt.u32Add(rt.u32Mul(n14, 10), k2); + const part2 = rt.iterFold(rt.iterMap(rt.iterFrom(_507, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), _510), 0, (n17: rt.u32, k3: rt.u32): rt.u32 => { + return rt.u32Add(rt.u32Mul(n17, 10), k3); }, true); const args40: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part2, f)]; Log.note(log, rt.fmtFormat(["fold ", args40[0]])); const _522: Pile.Pile = pile(5, 8); - _732 = false; - const captured7 = d; - const _525: (a0: Guard.Guard) => undefined = rt.closure((g12: Guard.Guard): undefined => { - const _84: rt.u32 = Guard.id(g12); - const _1110: rt.u32 = Guard.id(captured7); - const args58: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_84, f), (f: rt.Formatter) => rt.u32Display(_1110, f)]; - Log.note(log, rt.fmtFormat(["each ", args58[0], " ", args58[1]])); - g12[Symbol.dispose](); + _774 = false; + const captured9 = d; + const _525: (a0: Guard.Guard) => undefined = rt.closure((g14: Guard.Guard): undefined => { + const _810: rt.u32 = Guard.id(g14); + const _1112: rt.u32 = Guard.id(captured9); + const args60: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_810, f), (f: rt.Formatter) => rt.u32Display(_1112, f)]; + Log.note(log, rt.fmtFormat(["each ", args60[0], " ", args60[1]])); + g14[Symbol.dispose](); }, (): void => { - captured7[Symbol.dispose](); + captured9[Symbol.dispose](); }); rt.iterForEach(rt.iterFrom(_522, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), _525, true, true); const _528: Pile.Pile = pile(1, 4); - _731 = false; - const captured8 = e; - const _531: (a0: Guard.Guard) => rt.u32 = rt.closure((g13: Guard.Guard): rt.u32 => { - const _016: rt.u32 = rt.u32Add(Guard.id(g13), Guard.id(captured8)); - g13[Symbol.dispose](); - return _016; + _773 = false; + const captured10 = e; + const _531: (a0: Guard.Guard) => rt.u32 = rt.closure((g15: Guard.Guard): rt.u32 => { + const _018: rt.u32 = rt.u32Add(Guard.id(g15), Guard.id(captured10)); + g15[Symbol.dispose](); + return _018; }, (): void => { - captured8[Symbol.dispose](); + captured10[Symbol.dispose](); }); const m5: rt.usize = rt.ownedCount(rt.iterMap(rt.iterFrom(_528, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), _531)); const _538: rt.usize = Pile.count$iter_Iterator(pile(4, 6)); @@ -1561,38 +1561,38 @@ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { const last2: Guard.Guard | undefined = Pile.last$iter_Iterator(pile(1, 4)); const back: Guard.Guard | undefined = rt.ownedLast(rt.iterRev(rt.iterFrom(pile(4, 7), Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 })), rt.drop); const skipped: Guard.Guard | undefined = rt.ownedLast(rt.iterSkip(rt.iterFrom(pile(7, 9), Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), 1, rt.drop), rt.drop); - const _568: rt.u32 | undefined = option_map$1raha9y(last2, (g5: Guard.Guard): rt.u32 => { - const _08: rt.u32 = Guard.id(g5); - g5[Symbol.dispose](); - return _08; - }); - const _570: rt.u32 | undefined = option_map$1raha9y(back, (g6: Guard.Guard): rt.u32 => { - const _09: rt.u32 = Guard.id(g6); - g6[Symbol.dispose](); - return _09; - }); - const _572: rt.u32 | undefined = option_map$1raha9y(skipped, (g7: Guard.Guard): rt.u32 => { + const _568: rt.u32 | undefined = option_map$1raha9y(last2, (g7: Guard.Guard): rt.u32 => { const _010: rt.u32 = Guard.id(g7); g7[Symbol.dispose](); return _010; }); + const _570: rt.u32 | undefined = option_map$1raha9y(back, (g8: Guard.Guard): rt.u32 => { + const _011: rt.u32 = Guard.id(g8); + g8[Symbol.dispose](); + return _011; + }); + const _572: rt.u32 | undefined = option_map$1raha9y(skipped, (g9: Guard.Guard): rt.u32 => { + const _012: rt.u32 = Guard.id(g9); + g9[Symbol.dispose](); + return _012; + }); const args44: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_568, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtOption(_570, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtOption(_572, f, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["last ", args44[0], " ", args44[1], " ", args44[2]])); const _581: rt.Iter = rt.iterRev(rt.iterFrom(pile(1, 6), Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 })); - _733 = false; - const captured4 = c; - const _593: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_581, rt.closure((g8: Guard.Guard): [Guard.Guard, rt.u32] => { - return [g8, Guard.id(captured4)] as [Guard.Guard, rt.u32]; + _775 = false; + const captured6 = c; + const _593: rt.u32 | undefined = option_map$1raha9y(rt.iterFold(rt.iterMap(_581, rt.closure((g10: Guard.Guard): [Guard.Guard, rt.u32] => { + return [g10, Guard.id(captured6)] as [Guard.Guard, rt.u32]; }, (): void => { - captured4[Symbol.dispose](); + captured6[Symbol.dispose](); })), undefined as Guard.Guard | undefined, (_2: Guard.Guard | undefined, _312: [Guard.Guard, rt.u32]): Guard.Guard | undefined => { - const _012: Guard.Guard | undefined = _312[0]; + const _014: Guard.Guard | undefined = _312[0]; rt.drop(_2); - return _012; - }, true), (g10: Guard.Guard): rt.u32 => { - const _013: rt.u32 = Guard.id(g10); - g10[Symbol.dispose](); - return _013; + return _014; + }, true), (g12: Guard.Guard): rt.u32 => { + const _015: rt.u32 = Guard.id(g12); + g12[Symbol.dispose](); + return _015; }); const _595: rt.u32 = Guard.id(d); const _598: rt.u32 = Guard.id(e); @@ -1607,7 +1607,7 @@ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { }); const args48: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part, f, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["nth ", args48[0]])); - _733 = false; + _775 = false; const captured3 = c; const n10: rt.u32 = rt.iterFold(rt.iterMap(rt.iterFrom(held2, Pile.next$iter_Iterator, undefined, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)) }), rt.closure((g4: Guard.Guard): rt.u32 => { const _06: rt.u32 = rt.u32Sub(rt.u32Add(Guard.id(g4), Guard.id(captured3)), Guard.id(captured3)); @@ -1615,8 +1615,8 @@ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { return _06; }, (): void => { captured3[Symbol.dispose](); - })), 0, (n13: rt.u32, k: rt.u32): rt.u32 => { - return rt.u32Add(n13, k); + })), 0, (n14: rt.u32, k2: rt.u32): rt.u32 => { + return rt.u32Add(n14, k2); }, true); const _635: rt.usize = held2.held.length; const args50: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n10, f), (f: rt.Formatter) => rt.usizeDisplay(_635, f)]; @@ -1628,41 +1628,66 @@ export function rfolded(log: Log.Log, id: rt.u32, arg: rt.u8): void { const _660: rt.u32 = Guard.id(e); const args52: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(m6, f), (f: rt.Formatter) => rt.u32Display(_657, f), (f: rt.Formatter) => rt.u32Display(_660, f)]; Log.note(log, rt.fmtFormat(["chain ", args52[0], " ", args52[1], " ", args52[2]])); + const _671: [Guard.Guard, Guard.Guard] = [guard(30), guard(31)]; + const k: Guard.Guard = _671[0]; + const l: Guard.Guard = _671[1]; + const _680: Pile.Pile = pile(1, 4); + const _683: Guard.Guard[] = guards(4, 6); + const _679: rt.Iter = rt.iterChain(rt.iterFrom(_680, Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 }), rt.iterSlice(_683, rt.drop)); + const captured4 = k; + const n11: rt.u32 = rt.iterFold(_679, 0, rt.closure((n15: rt.u32, g5: Guard.Guard): rt.u32 => { + const _08: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Add(n15, Guard.id(g5)), Guard.id(captured4)), Guard.id(captured4)); + g5[Symbol.dispose](); + return _08; + }, (): void => { + captured4[Symbol.dispose](); + }), true, true); + const _688: rt.Iter = rt.iterChain(rt.iterSlice(guards(1, 3), rt.drop), rt.iterFrom(pile(3, 6), Pile.next$iter_Iterator, rt.drop, { hint: Pile.sizeHint$iter_Iterator, nth: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nth$iter_Iterator(it, n)), fold: Pile.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32, count: Pile.count$iter_Iterator, last: (it: Pile.Pile) => rt.iterFromOption(Pile.last$iter_Iterator(it)), back: (it: Pile.Pile) => rt.iterFromOption(Pile.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Pile.Pile, n) => rt.iterFromOption(Pile.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Pile.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_model_Guard_Option_u32 })); + const captured5 = l; + const r3: rt.u32 = rt.iterRfold(_688, 0, rt.closure((n16: rt.u32, g6: Guard.Guard): rt.u32 => { + const _09: rt.u32 = rt.u32Sub(rt.u32Add(rt.u32Add(n16, Guard.id(g6)), Guard.id(captured5)), Guard.id(captured5)); + g6[Symbol.dispose](); + return _09; + }, (): void => { + captured5[Symbol.dispose](); + }), true, true); + const args54: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n11, f), (f: rt.Formatter) => rt.u32Display(r3, f)]; + Log.note(log, rt.fmtFormat(["lent ", args54[0], " ", args54[1]])); held2[Symbol.dispose](); } else { const a: Guard.Guard = guard(20); - const _674: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + const _714: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); const captured = id; const captured2 = a; - rt.iterTryRfold(_674, 0, rt.closure((n12: rt.u32, g2: Guard.Guard): rt.u32 | undefined => { + rt.iterTryRfold(_714, 0, rt.closure((n13: rt.u32, g2: Guard.Guard): rt.u32 | undefined => { if (!(Guard.id(g2) !== rt.u32Add(captured, 3))) { const _145: rt.u32 = Guard.id(g2); const _172: rt.u32 = Guard.id(captured2); const _202: string = rt.resultUnwrap(rt.stringFromUtf8(Log.text(log)), rt.fmtFromUtf8ErrorDebug); - const args54: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_145, f), (f: rt.Formatter) => rt.u32Display(_172, f), (f: rt.Formatter) => rt.fmtPad(f, _202)]; - rt.panicFmt(["try_rfold of g", args54[0], " with g", args54[1], " after\n", args54[2]]); + const args56: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_145, f), (f: rt.Formatter) => rt.u32Display(_172, f), (f: rt.Formatter) => rt.fmtPad(f, _202)]; + rt.panicFmt(["try_rfold of g", args56[0], " with g", args56[1], " after\n", args56[2]]); } else { - const _04: rt.u32 | undefined = rt.u32Add(n12, Guard.id(g2)); + const _04: rt.u32 | undefined = rt.u32Add(n13, Guard.id(g2)); g2[Symbol.dispose](); return _04; } }, (): void => { captured2[Symbol.dispose](); }), true, true); - rt.drop(_674); + rt.drop(_714); } - if (_731) { + if (_773) { e[Symbol.dispose](); } - _731 = false; - if (_732) { + _773 = false; + if (_774) { d[Symbol.dispose](); } - _732 = false; - if (_733) { + _774 = false; + if (_775) { c[Symbol.dispose](); } - _733 = false; + _775 = false; } /** `last` and `min` of `Option`s, by what drops: a `None` item apart from no items. */ diff --git a/ts/fixtures/task/src/drops/folds.rs b/ts/fixtures/task/src/drops/folds.rs index 64b8f5487..1749ecb1a 100644 --- a/ts/fixtures/task/src/drops/folds.rs +++ b/ts/fixtures/task/src/drops/folds.rs @@ -670,6 +670,14 @@ pub(super) fn rfolded(log: &Log, id: u32, arg: u8) { log.note(format!("borrowed {n} {}", held.held.len())); let m = pile(6, 8).chain(guards(8, 10)).count(); log.note(format!("chain {m} {} {}", d.id(), e.id())); + // Its folds through a chain, which lends them its closure: theirs drop the loan. + let (k, l) = (guard(30), guard(31)); + let n = pile(1, 4).chain(guards(4, 6)).fold(0, move |n, g| n + g.id() + k.id() - k.id()); + let r = guards(1, 3) + .into_iter() + .chain(pile(3, 6)) + .rfold(0, move |n, g| n + g.id() + l.id() - l.id()); + log.note(format!("lent {n} {r}")); } _ => { let a = guard(20); diff --git a/ts/runtime/rt/iter.ts b/ts/runtime/rt/iter.ts index 9e850e074..b65622851 100644 --- a/ts/runtime/rt/iter.ts +++ b/ts/runtime/rt/iter.ts @@ -2031,12 +2031,13 @@ class FromNext extends Iter implements Disposable { /** * Its own `fold` or `rfold`, which takes it by value: given `f` as a closure that drops - * what it owns by `release`, as the crate's drops the closure std gives it. + * what it owns by `release`, as the crate's drops the closure std gives it, and nothing + * without it, as a loan of `f` does. */ private folds
(fold: (source: S, acc: never, f: never) => unknown, acc: A, f: (acc: A, item: T) => A, release: (() => void) | undefined): A { this.drop = undefined; - const g = release === undefined ? f : closure((acc: A, item: T) => f(acc, item), release); - return (fold as (source: S, acc: A, f: (acc: A, item: T) => A) => A)(this.source, acc, g); + const g = (acc: A, item: T) => f(acc, item); + return (fold as (source: S, acc: A, f: (acc: A, item: T) => A) => A)(this.source, acc, release === undefined ? g : closure(g, release)); } /** Its own `count` or `last`, which takes it by value. */ diff --git a/ts/src/lower/iter.rs b/ts/src/lower/iter.rs index 6adae80c2..c181c001c 100644 --- a/ts/src/lower/iter.rs +++ b/ts/src/lower/iter.rs @@ -81,9 +81,8 @@ const BY_VALUE: [(&str, &str); 4] = [ /// Refuse an `impl Iterator` of the crate, whose `next` is `next_fn`, that std's adaptors /// would read other than through the methods in `OWN`: one whose `Iterator` or /// `DoubleEndedIterator` impl overrides another, such as `find`, which they call in its -/// place, or whose own `fold` or `rfold` holds its accumulator in an `Option` or a `Poll`, -/// as `fold_args` translates it for one that can't tell an `rt.None` or `rt.Pending` -/// accumulator apart. +/// place, or whose own `fold` or `rfold` tells its accumulator or closure apart from the +/// ones `fold_args` translates it for. pub fn check_impl(t: &mut Translator<'_, '_>, next_fn: DefId) { let tcx = t.tcx; let Some(imp) = tcx.impl_of_assoc(next_fn) else { @@ -112,45 +111,155 @@ pub fn check_impl(t: &mut Translator<'_, '_>, next_fn: DefId) { tcx.def_span(item.def_id), format!("overriding `{tr}::{name}`, which std's adaptors call in place of `next` or beside it"), ); - } else if matches!(name.as_str(), "fold" | "rfold") && wraps_acc(tcx, item.def_id) { - t.err( - tcx.def_span(item.def_id), - format!( - "overriding `{tr}::{name}` with its accumulator in an `Option` or a `Poll`, which is not supported yet" - ), - ); + } else if matches!(name.as_str(), "fold" | "rfold") + && let Some((span, what)) = erases(tcx, item.def_id) + { + t.err(span, format!("overriding `{tr}::{name}` with {what}, which is not supported yet")); } } } } -/// Whether the crate's own `fold` or `rfold`, `def_id`, holds its accumulator, its first type -/// parameter, in an `Option` or a `Poll`. -fn wraps_acc(tcx: TyCtxt<'_>, def_id: DefId) -> bool { +/// Where the crate's own `fold` or `rfold`, `def_id`, or a closure in it, tells its +/// accumulator `B` or closure `F` apart from the others it is generic over, and how: by an +/// `Option` or a `Poll` of `B`, whose `None` or `Pending` is the one of whichever `B` it is +/// translated for; a call generic over either, but `F`'s, a `drop` of `F`, and std's +/// iterators', which take any; a constant generic over either, such as its size; or a drop of +/// `B`, which drops as the one it is translated for does. +fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { + use rustc_middle::mir::visit::Visitor; + use rustc_middle::mir::{self, AggregateKind, BasicBlock, BasicBlockData, ConstOperand, Location, Rvalue, TerminatorKind}; + + struct Erases<'a, 'tcx> { + tcx: TyCtxt<'tcx>, + mir: &'a mir::Body<'tcx>, + /// The indices of `B` and `F`. + params: [u32; 2], + closures: Vec, + found: Option<(Span, &'static str)>, + } + impl<'tcx> Erases<'_, 'tcx> { + fn mentions(&self, arg: ty::GenericArg<'tcx>) -> bool { + arg.walk().any(|a| matches!(a.as_type().map(Ty::kind), Some(ty::Param(p)) if self.params.contains(&p.index))) + } + + /// Whether `ty` is `F`. + fn is_f(&self, ty: Ty<'tcx>) -> bool { + matches!(ty.kind(), ty::Param(p) if p.index == self.params[1]) + } + + /// Whether a call of `def_id` for `args` takes any `B` and `F`. + fn takes_any(&self, def_id: DefId, args: ty::GenericArgsRef<'tcx>) -> bool { + let tcx = self.tcx; + if tcx.is_diagnostic_item(rustc_span::sym::mem_drop, def_id) { + return self.is_f(args.type_at(0)); + } + tcx.trait_of_assoc(def_id).is_some_and(|tr| { + tcx.is_fn_trait(tr) || [core_trait(tcx, "Iterator"), core_trait(tcx, "DoubleEndedIterator")].contains(&Some(tr)) + }) + } + + fn find(&mut self, span: Span, what: &'static str) { + self.found.get_or_insert((span, what)); + } + } + impl<'tcx> Visitor<'tcx> for Erases<'_, 'tcx> { + fn visit_basic_block_data(&mut self, bb: BasicBlock, data: &BasicBlockData<'tcx>) { + // A panic aborts on wasm32 before its cleanup runs. + if !data.is_cleanup { + self.super_basic_block_data(bb, data); + } + } + + fn visit_rvalue(&mut self, rvalue: &Rvalue<'tcx>, loc: Location) { + if let Rvalue::Aggregate(kind, _) = rvalue + && let AggregateKind::Closure(closure, _) = **kind + { + self.closures.push(closure); + } + self.super_rvalue(rvalue, loc); + } + + fn visit_terminator(&mut self, term: &mir::Terminator<'tcx>, loc: Location) { + let span = term.source_info.span; + match &term.kind { + TerminatorKind::Call { func, args, .. } => { + if let Some((callee, callee_args)) = func.const_fn_def() + && !self.takes_any(callee, callee_args) + && callee_args.iter().any(|a| self.mentions(a)) + { + self.find(span, "a call generic over its accumulator or closure"); + } + for arg in args { + self.visit_operand(&arg.node, loc); + } + return; + } + TerminatorKind::Drop { place, .. } => { + let ty = place.ty(self.mir, self.tcx).ty; + if !self.is_f(ty) && self.mentions(ty.into()) { + self.find(span, "a drop of its accumulator"); + } + } + _ => {} + } + self.super_terminator(term, loc); + } + + fn visit_const_operand(&mut self, c: &ConstOperand<'tcx>, _: Location) { + let args = match c.const_ { + mir::Const::Unevaluated(uv, _) => uv.args, + _ => ty::List::empty(), + }; + if self.mentions(c.const_.ty().into()) || args.iter().any(|a| self.mentions(a)) { + self.find(c.span, "a constant generic over its accumulator or closure"); + } + } + } + let generics = tcx.generics_of(def_id); - let Some(acc) = generics + let mut params = generics .own_params .iter() - .find(|p| matches!(p.kind, ty::GenericParamDefKind::Type { .. })) - else { - return false; - }; - tcx.optimized_mir(def_id).local_decls.iter().any(|local| { - local.ty.walk().filter_map(|arg| arg.as_type()).any(|t| match t.kind() { - ty::Adt(adt, args) => { - matches!(Std::of(tcx, adt.did()), Some(Std::Option | Std::Poll)) - && matches!(args.type_at(0).kind(), ty::Param(p) if p.index == acc.index) + .filter(|p| matches!(p.kind, ty::GenericParamDefKind::Type { .. })) + .map(|p| p.index); + let params = [params.next()?, params.next()?]; + let mut bodies = vec![def_id]; + while let Some(def_id) = bodies.pop() { + let mir = tcx.optimized_mir(def_id); + for local in &mir.local_decls { + let wraps = local.ty.walk().filter_map(|arg| arg.as_type()).any(|t| match t.kind() { + ty::Adt(adt, args) => { + matches!(Std::of(tcx, adt.did()), Some(Std::Option | Std::Poll)) + && matches!(args.type_at(0).kind(), ty::Param(p) if p.index == params[0]) + } + _ => false, + }); + if wraps { + return Some((local.source_info.span, "its accumulator in an `Option` or a `Poll`")); } - _ => false, - }) - }) + } + let mut erases = Erases { + tcx, + mir, + params, + closures: Vec::new(), + found: None, + }; + erases.visit_body(mir); + if erases.found.is_some() { + return erases.found; + } + bodies.extend(erases.closures); + } + None } -/// The generic arguments the crate's own `fold` or `rfold` of `item`s is translated for: -/// the accumulator, as an `Option`, whose `None` in an `Option` of it is `rt.None` -/// and which nothing else tells apart from any other value, as a body generic over it -/// can't, and the closure, as a `Box acc>`, whose JS value is the -/// function `rt.iterFrom` gives it and which drops what std's closure owns as it drops. +/// The generic arguments the crate's own `fold` or `rfold` of `item`s is translated for, +/// which a body `erases` doesn't refuse can't tell apart from any others: the accumulator, +/// as an `Option`, and the closure, as a `Box acc>`, whose JS +/// value is the function `rt.iterFrom` gives it and which drops what std's closure owns as +/// it drops. fn fold_args<'tcx>(tcx: TyCtxt<'tcx>, item: Ty<'tcx>) -> Option<[Ty<'tcx>; 2]> { let lang = tcx.lang_items(); let acc = Ty::new_option(tcx, tcx.types.u32); From f718af8a9fbae3b5aa4fd803a3491aadfe1f6c5b Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 17:53:30 -0800 Subject: [PATCH 07/23] fix(ts): check the closures in a crate's own fold, and refuse its drop of the accumulator Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/reject/census.md | 35 +++++++++--------- ts/fixtures/reject/expected.txt | 7 ++-- ts/fixtures/reject/src/lib.rs | 28 +++++++++++++-- ts/fixtures/reject/ts.toml | 1 + ts/src/lower/iter.rs | 63 ++++++++++++++++++--------------- 5 files changed, 84 insertions(+), 50 deletions(-) diff --git a/ts/fixtures/reject/census.md b/ts/fixtures/reject/census.md index f188634a3..d3bd3c1ec 100644 --- a/ts/fixtures/reject/census.md +++ b/ts/fixtures/reject/census.md @@ -1,7 +1,7 @@ # Census of `reject-fixture` -- Refusals: 263 -- Function instances: 306 +- Refusals: 264 +- Function instances: 309 - Generic functions no instance reached, lowered over their type parameters: 13 ## By construct @@ -38,6 +38,7 @@ | 2 | a raw pointer to a place of `()`, which has no address of its own | fixtures/reject/src/lib.rs:676:15 | | 2 | an upcast from `_` to `_`, which is not supported yet | fixtures/reject/src/lib.rs:474:32 | | 2 | comparing pointers to `_`, each a place JS makes of its own | fixtures/reject/src/lib.rs:544:2 | +| 2 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | fixtures/reject/src/lib.rs:2423:18 | | 2 | passing `_`, which drops, to `_`, which is not supported yet | fixtures/reject/src/lib.rs:275:4 | | 2 | unsupported type `_` from another crate | fixtures/reject/src/lib.rs:387:32 | | 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | fixtures/reject/src/lib.rs:709:2 | @@ -95,9 +96,8 @@ | 1 | hashing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:206:75 | | 1 | hashing `_` by its address, which JS has no counterpart of | fixtures/reject/src/lib.rs:1664:5 | | 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | fixtures/reject/src/lib.rs:266:16 | -| 1 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | fixtures/reject/src/lib.rs:2422:3 | -| 1 | overriding `_` with a constant generic over its accumulator or closure, which is not supported yet | fixtures/reject/src/lib.rs:2446:11 | -| 1 | overriding `_` with a drop of its accumulator, which is not supported yet | fixtures/reject/src/lib.rs:2469:3 | +| 1 | overriding `_` with a constant generic over its accumulator or closure, which is not supported yet | fixtures/reject/src/lib.rs:2448:11 | +| 1 | overriding `_` with a drop of its accumulator, which is not supported yet | fixtures/reject/src/lib.rs:2471:3 | | 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | fixtures/reject/src/lib.rs:126:3 | | 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | fixtures/reject/src/lib.rs:150:2 | | 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | fixtures/reject/src/lib.rs:530:1 | @@ -114,7 +114,7 @@ The type or module each refused type or path belongs to. | 11 | `(u8, u8)` | fixtures/reject/src/lib.rs:1220:31 | | 9 | `[u8; 4]` | fixtures/reject/src/lib.rs:423:26 | | 8 | `u8` | fixtures/reject/src/lib.rs:224:6 | -| 6 | `Iterator` | fixtures/reject/src/lib.rs:37:4 | +| 7 | `Iterator` | fixtures/reject/src/lib.rs:37:4 | | 6 | `f16` | fixtures/reject/src/lib.rs:7:14 | | 6 | `std::borrow::Cow` | fixtures/reject/src/lib.rs:280:2 | | 5 | `Gap` | fixtures/reject/src/lib.rs:856:10 | @@ -300,6 +300,7 @@ The type or module each refused type or path belongs to. | 2 | an upcast from `_` to `_`, which is not supported yet | `dyn Keyed`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:474:32 | | 2 | comparing pointers to `_`, each a place JS makes of its own | `u32` | fixtures/reject/src/lib.rs:544:2 | | 2 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | `u32`, `i32` | fixtures/reject/src/lib.rs:2294:7 | +| 2 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2423:18 | | 2 | replacing the value behind a reference to `_` | `std::pin::Pin` | fixtures/reject/src/lib.rs:91:2 | | 2 | unsupported call to `_` | `::sum` | fixtures/reject/src/lib.rs:383:17 | | 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | `Blank` | fixtures/reject/src/lib.rs:709:2 | @@ -432,9 +433,8 @@ The type or module each refused type or path belongs to. | 1 | hashing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:206:75 | | 1 | hashing `_` by its address, which JS has no counterpart of | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1664:5 | | 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | `std::vec::Vec`, `Batched` | fixtures/reject/src/lib.rs:266:16 | -| 1 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2422:3 | -| 1 | overriding `_` with a constant generic over its accumulator or closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2446:11 | -| 1 | overriding `_` with a drop of its accumulator, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2469:3 | +| 1 | overriding `_` with a constant generic over its accumulator or closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2448:11 | +| 1 | overriding `_` with a drop of its accumulator, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2471:3 | | 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:126:3 | | 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | `DoubleEndedIterator::rfind` | fixtures/reject/src/lib.rs:150:2 | | 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `String::retain` | fixtures/reject/src/lib.rs:732:4 | @@ -812,6 +812,13 @@ The type or module each refused type or path belongs to.
+
overriding `_` with a call generic over its accumulator or closure, which is not supported yet (2) + +- fixtures/reject/src/lib.rs:2423:18: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet +- fixtures/reject/src/lib.rs:2493:3: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet + +
+
passing `_`, which drops, to `_`, which is not supported yet (2) - fixtures/reject/src/lib.rs:275:4: passing `{closure@fixtures/reject/src/lib.rs:275:13: 275:27}`, which drops, to `str::contains`, which is not supported yet @@ -1156,21 +1163,15 @@ The type or module each refused type or path belongs to.
-
overriding `_` with a call generic over its accumulator or closure, which is not supported yet (1) - -- fixtures/reject/src/lib.rs:2422:3: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet - -
-
overriding `_` with a constant generic over its accumulator or closure, which is not supported yet (1) -- fixtures/reject/src/lib.rs:2446:11: overriding `Iterator::fold` with a constant generic over its accumulator or closure, which is not supported yet +- fixtures/reject/src/lib.rs:2448:11: overriding `Iterator::fold` with a constant generic over its accumulator or closure, which is not supported yet
overriding `_` with a drop of its accumulator, which is not supported yet (1) -- fixtures/reject/src/lib.rs:2469:3: overriding `Iterator::fold` with a drop of its accumulator, which is not supported yet +- fixtures/reject/src/lib.rs:2471:3: overriding `Iterator::fold` with a drop of its accumulator, which is not supported yet
diff --git a/ts/fixtures/reject/expected.txt b/ts/fixtures/reject/expected.txt index 9356beb68..ba62f675f 100644 --- a/ts/fixtures/reject/expected.txt +++ b/ts/fixtures/reject/expected.txt @@ -258,6 +258,7 @@ a raw pointer to `(u8, u8)` in `([Cloned; 2], (u8, u8))`, which the crate may pu a raw pointer to `(u8, u8)` in `(Dropped, (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2321:23 a raw pointer to `(u8, u8)` in `([Greatest; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2377:13 a raw pointer to `(u8, u8)` in `([Touched; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2321:23 -overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2422:3 -overriding `Iterator::fold` with a constant generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2446:11 -overriding `Iterator::fold` with a drop of its accumulator, which is not supported yet at fixtures/reject/src/lib.rs:2469:3 +overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2423:18 +overriding `Iterator::fold` with a constant generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2448:11 +overriding `Iterator::fold` with a drop of its accumulator, which is not supported yet at fixtures/reject/src/lib.rs:2471:3 +overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2493:3 diff --git a/ts/fixtures/reject/src/lib.rs b/ts/fixtures/reject/src/lib.rs index d149ebfc0..0a433f360 100644 --- a/ts/fixtures/reject/src/lib.rs +++ b/ts/fixtures/reject/src/lib.rs @@ -2408,7 +2408,8 @@ fn given_slots(fill: [T; 2]) -> u8 { tagged_slots!(slots) } -/// An iterator whose own `fold` tells its accumulator apart by a helper generic over it. +/// An iterator whose own `fold` tells its accumulator apart by a helper generic over it, +/// in a closure. pub struct Keeps; impl Iterator for Keeps { @@ -2419,7 +2420,8 @@ impl Iterator for Keeps { } fn fold B>(self, init: B, _f: F) -> B { - keep(init) + let kept = |x| keep(x); + kept(init) } } @@ -2474,3 +2476,25 @@ impl Iterator for Discards { pub fn discards() -> usize { Discards.map(|b| b + 1).count() } + +/// An iterator whose own `fold` drops its accumulator by `drop`, which only its closure can be. +pub struct Disposes; + +impl Iterator for Disposes { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + #[allow(clippy::empty_loop)] + fn fold B>(self, init: B, f: F) -> B { + drop(f); + drop(init); + loop {} + } +} + +pub fn disposes() -> usize { + Disposes.map(|b| b + 1).count() +} diff --git a/ts/fixtures/reject/ts.toml b/ts/fixtures/reject/ts.toml index 0668d51fb..6cb475cc1 100644 --- a/ts/fixtures/reject/ts.toml +++ b/ts/fixtures/reject/ts.toml @@ -190,5 +190,6 @@ roots = [ "keeps", "sizes", "discards", + "disposes", ] printable = ["Meters"] diff --git a/ts/src/lower/iter.rs b/ts/src/lower/iter.rs index c181c001c..a2ceb2a5d 100644 --- a/ts/src/lower/iter.rs +++ b/ts/src/lower/iter.rs @@ -128,7 +128,7 @@ pub fn check_impl(t: &mut Translator<'_, '_>, next_fn: DefId) { /// `B`, which drops as the one it is translated for does. fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { use rustc_middle::mir::visit::Visitor; - use rustc_middle::mir::{self, AggregateKind, BasicBlock, BasicBlockData, ConstOperand, Location, Rvalue, TerminatorKind}; + use rustc_middle::mir::{self, ConstOperand, Location, TerminatorKind}; struct Erases<'a, 'tcx> { tcx: TyCtxt<'tcx>, @@ -139,8 +139,25 @@ fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { found: Option<(Span, &'static str)>, } impl<'tcx> Erases<'_, 'tcx> { - fn mentions(&self, arg: ty::GenericArg<'tcx>) -> bool { - arg.walk().any(|a| matches!(a.as_type().map(Ty::kind), Some(ty::Param(p)) if self.params.contains(&p.index))) + /// Whether `arg` is over `B` or `F` other than through a closure, whose own body is + /// checked in its place, as one in this body is over both. + fn mentions(&mut self, arg: ty::GenericArg<'tcx>) -> bool { + let mut walk = arg.walk(); + let mut mentions = false; + while let Some(a) = walk.next() { + let Some(t) = a.as_type() else { + continue; + }; + match *t.kind() { + ty::Closure(closure, _) => { + self.closures.push(closure); + walk.skip_current_subtree(); + } + ty::Param(p) if self.params.contains(&p.index) => mentions = true, + _ => {} + } + } + mentions } /// Whether `ty` is `F`. @@ -164,22 +181,6 @@ fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { } } impl<'tcx> Visitor<'tcx> for Erases<'_, 'tcx> { - fn visit_basic_block_data(&mut self, bb: BasicBlock, data: &BasicBlockData<'tcx>) { - // A panic aborts on wasm32 before its cleanup runs. - if !data.is_cleanup { - self.super_basic_block_data(bb, data); - } - } - - fn visit_rvalue(&mut self, rvalue: &Rvalue<'tcx>, loc: Location) { - if let Rvalue::Aggregate(kind, _) = rvalue - && let AggregateKind::Closure(closure, _) = **kind - { - self.closures.push(closure); - } - self.super_rvalue(rvalue, loc); - } - fn visit_terminator(&mut self, term: &mir::Terminator<'tcx>, loc: Location) { let span = term.source_info.span; match &term.kind { @@ -206,13 +207,13 @@ fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { self.super_terminator(term, loc); } - fn visit_const_operand(&mut self, c: &ConstOperand<'tcx>, _: Location) { + fn visit_const_operand(&mut self, c: &ConstOperand<'tcx>, loc: Location) { let args = match c.const_ { mir::Const::Unevaluated(uv, _) => uv.args, _ => ty::List::empty(), }; if self.mentions(c.const_.ty().into()) || args.iter().any(|a| self.mentions(a)) { - self.find(c.span, "a constant generic over its accumulator or closure"); + self.find(self.mir.source_info(loc).span, "a constant generic over its accumulator or closure"); } } } @@ -225,8 +226,20 @@ fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { .map(|p| p.index); let params = [params.next()?, params.next()?]; let mut bodies = vec![def_id]; + let mut seen = Vec::new(); while let Some(def_id) = bodies.pop() { + if seen.contains(&def_id) { + continue; + } + seen.push(def_id); let mir = tcx.optimized_mir(def_id); + let mut erases = Erases { + tcx, + mir, + params, + closures: Vec::new(), + found: None, + }; for local in &mir.local_decls { let wraps = local.ty.walk().filter_map(|arg| arg.as_type()).any(|t| match t.kind() { ty::Adt(adt, args) => { @@ -238,14 +251,8 @@ fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { if wraps { return Some((local.source_info.span, "its accumulator in an `Option` or a `Poll`")); } + erases.mentions(local.ty.into()); } - let mut erases = Erases { - tcx, - mir, - params, - closures: Vec::new(), - found: None, - }; erases.visit_body(mir); if erases.found.is_some() { return erases.found; From 87285d7872448a2604a29ec556c3a8ef8fe6bd87 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 17:54:39 -0800 Subject: [PATCH 08/23] style(ts): format Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/task/src/drops/folds.rs | 4 +++- ts/src/lower/iter.rs | 13 ++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ts/fixtures/task/src/drops/folds.rs b/ts/fixtures/task/src/drops/folds.rs index 1749ecb1a..1aad78296 100644 --- a/ts/fixtures/task/src/drops/folds.rs +++ b/ts/fixtures/task/src/drops/folds.rs @@ -672,7 +672,9 @@ pub(super) fn rfolded(log: &Log, id: u32, arg: u8) { log.note(format!("chain {m} {} {}", d.id(), e.id())); // Its folds through a chain, which lends them its closure: theirs drop the loan. let (k, l) = (guard(30), guard(31)); - let n = pile(1, 4).chain(guards(4, 6)).fold(0, move |n, g| n + g.id() + k.id() - k.id()); + let n = pile(1, 4) + .chain(guards(4, 6)) + .fold(0, move |n, g| n + g.id() + k.id() - k.id()); let r = guards(1, 3) .into_iter() .chain(pile(3, 6)) diff --git a/ts/src/lower/iter.rs b/ts/src/lower/iter.rs index a2ceb2a5d..56dd97279 100644 --- a/ts/src/lower/iter.rs +++ b/ts/src/lower/iter.rs @@ -114,7 +114,10 @@ pub fn check_impl(t: &mut Translator<'_, '_>, next_fn: DefId) { } else if matches!(name.as_str(), "fold" | "rfold") && let Some((span, what)) = erases(tcx, item.def_id) { - t.err(span, format!("overriding `{tr}::{name}` with {what}, which is not supported yet")); + t.err( + span, + format!("overriding `{tr}::{name}` with {what}, which is not supported yet"), + ); } } } @@ -172,7 +175,8 @@ fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { return self.is_f(args.type_at(0)); } tcx.trait_of_assoc(def_id).is_some_and(|tr| { - tcx.is_fn_trait(tr) || [core_trait(tcx, "Iterator"), core_trait(tcx, "DoubleEndedIterator")].contains(&Some(tr)) + tcx.is_fn_trait(tr) + || [core_trait(tcx, "Iterator"), core_trait(tcx, "DoubleEndedIterator")].contains(&Some(tr)) }) } @@ -213,7 +217,10 @@ fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { _ => ty::List::empty(), }; if self.mentions(c.const_.ty().into()) || args.iter().any(|a| self.mentions(a)) { - self.find(self.mir.source_info(loc).span, "a constant generic over its accumulator or closure"); + self.find( + self.mir.source_info(loc).span, + "a constant generic over its accumulator or closure", + ); } } } From 6c6d137841ef2a390b27fa6bc5acce7074013483 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 18:14:34 -0800 Subject: [PATCH 09/23] fix(ts): refuse a crate's own fold that tells its accumulator or closure apart through a closure or a type of the crate A closure is over what it captures, and std's iterators take any accumulator and closure only outside the crate's own types. Co-Authored-By: Claude Opus 5.5 --- ts/README.md | 4 +- ts/fixtures/lang/expected/ends.Overrides.ts | 36 +++++----- ts/fixtures/lang/src/ends.rs | 7 +- ts/fixtures/reject/expected.txt | 6 +- ts/fixtures/reject/src/lib.rs | 63 +++++++++++++++++ ts/fixtures/reject/ts.toml | 2 + ts/src/lower/iter.rs | 75 +++++++++++++-------- 7 files changed, 135 insertions(+), 58 deletions(-) diff --git a/ts/README.md b/ts/README.md index e05fe33f7..628e36bbd 100644 --- a/ts/README.md +++ b/ts/README.md @@ -894,8 +894,8 @@ without a mapping in `src/lower/iter.rs` (such as `partition`), an own `impl Iterator` or `DoubleEndedIterator` that overrides a provided method other than those, such as `find` or `for_each`, or whose own `fold` or `rfold` tells its accumulator or closure apart from another, by an `Option` or a `Poll` of it, a call or constant generic over it -other than calling or dropping the closure or passing them to std's iterators, or a drop of the -accumulator, +other than calling or dropping the closure or passing them to std's iterators outside the crate's +own types, or a drop of the accumulator, a pointer's address (`{:p}`), `write!` with a placeholder into the crate's own `fmt::Write`, a `str` pattern other than a `char`, a `&str`, a predicate, or chars, a mutable `str` slice, a copy of a closure that changes diff --git a/ts/fixtures/lang/expected/ends.Overrides.ts b/ts/fixtures/lang/expected/ends.Overrides.ts index 7bea32441..6d63d9043 100644 --- a/ts/fixtures/lang/expected/ends.Overrides.ts +++ b/ts/fixtures/lang/expected/ends.Overrides.ts @@ -88,30 +88,26 @@ export function nthBack$iter_DoubleEndedIterator(self: Overrides, n: rt.usize): export function rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32(self: Overrides, init: rt.u32 | undefined, f: (a0: rt.u32 | undefined, a1: rt.u8) => rt.u32 | undefined): rt.u32 | undefined { ends_Run.logged(self._0, 114); - let acc: rt.u32 | undefined = init; - while (true) { - const _7: rt.u8 | undefined = ends_Run.nextBack$iter_DoubleEndedIterator(self._0); - if (_7 !== undefined) { - acc = f(acc, _7); - } else { - break; - } - } - rt.drop(f); - return acc; + const _6: rt.Iter = rt.iterFromFn((): rt.u8 | undefined => { + return ends_Run.nextBack$iter_DoubleEndedIterator(self._0); + }); + let captured = f; + return rt.iterFold(_6, init, rt.closure((acc: rt.u32 | undefined, b: rt.u8): rt.u32 | undefined => { + return captured(acc, b); + }, (): void => { + rt.drop(captured); + }), undefined, true); } export function rfold$iter_DoubleEndedIterator_u8_ends_folded_closure1_ends_Overrides(self: Overrides, init: rt.u8, f: (a0: rt.u8, a1: rt.u8) => rt.u8): rt.u8 { ends_Run.logged(self._0, 114); - let acc: rt.u8 = init; - while (true) { - const _7: rt.u8 | undefined = ends_Run.nextBack$iter_DoubleEndedIterator(self._0); - if (_7 !== undefined) { - acc = f(acc, _7); - } else { - return acc; - } - } + const _6: rt.Iter = rt.iterFromFn((): rt.u8 | undefined => { + return ends_Run.nextBack$iter_DoubleEndedIterator(self._0); + }); + let captured = f; + return rt.iterFold(_6, init, (acc: rt.u8, b: rt.u8): rt.u8 => { + return captured(acc, b); + }, true); } //# sourceMappingURL=ends.Overrides.ts.map diff --git a/ts/fixtures/lang/src/ends.rs b/ts/fixtures/lang/src/ends.rs index bab5b1e68..75ec51dd9 100644 --- a/ts/fixtures/lang/src/ends.rs +++ b/ts/fixtures/lang/src/ends.rs @@ -147,11 +147,8 @@ impl DoubleEndedIterator for Overrides<'_> { fn rfold B>(mut self, init: B, mut f: F) -> B { self.0.logged(b'r'); - let mut acc = init; - while let Some(b) = self.0.next_back() { - acc = f(acc, b); - } - acc + // Through std's fold, by a closure holding `f`. + std::iter::from_fn(|| self.0.next_back()).fold(init, move |acc, b| f(acc, b)) } } diff --git a/ts/fixtures/reject/expected.txt b/ts/fixtures/reject/expected.txt index ba62f675f..3a5f92973 100644 --- a/ts/fixtures/reject/expected.txt +++ b/ts/fixtures/reject/expected.txt @@ -260,5 +260,7 @@ a raw pointer to `(u8, u8)` in `([Greatest; 2], (u8, u8))`, which the crate may a raw pointer to `(u8, u8)` in `([Touched; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2321:23 overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2423:18 overriding `Iterator::fold` with a constant generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2448:11 -overriding `Iterator::fold` with a drop of its accumulator, which is not supported yet at fixtures/reject/src/lib.rs:2471:3 -overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2493:3 +overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet at fixtures/reject/src/lib.rs:2471:3 +overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet at fixtures/reject/src/lib.rs:2493:3 +overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2513:11 +overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2551:11 diff --git a/ts/fixtures/reject/src/lib.rs b/ts/fixtures/reject/src/lib.rs index 0a433f360..8f1cb7550 100644 --- a/ts/fixtures/reject/src/lib.rs +++ b/ts/fixtures/reject/src/lib.rs @@ -2498,3 +2498,66 @@ impl Iterator for Disposes { pub fn disposes() -> usize { Disposes.map(|b| b + 1).count() } + +/// An iterator whose own `fold` tells its accumulator apart by an iterator of the crate over it. +pub struct Probes; + +impl Iterator for Probes { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + fn fold B>(self, init: B, _f: F) -> B { + assert!(Probe(&init).count() > 0); + init + } +} + +/// Counts its type parameter's size. +pub struct Probe<'a, T>(&'a T); + +impl Iterator for Probe<'_, T> { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + fn count(self) -> usize { + size_of::() + } +} + +pub fn probes() -> usize { + Probes.map(|b| b + 1).count() +} + +/// An iterator whose own `fold` tells its closure apart by the size of a closure holding it. +pub struct Measures; + +impl Iterator for Measures { + type Item = u8; + + fn next(&mut self) -> Option { + None + } + + fn fold B>(self, init: B, f: F) -> B { + let held = move || { + let _held = &f; + }; + assert!(measure(held) > 0); + init + } +} + +#[inline(never)] +fn measure(_x: T) -> usize { + size_of::() +} + +pub fn measures() -> usize { + Measures.map(|b| b + 1).count() +} diff --git a/ts/fixtures/reject/ts.toml b/ts/fixtures/reject/ts.toml index 6cb475cc1..78696e5bc 100644 --- a/ts/fixtures/reject/ts.toml +++ b/ts/fixtures/reject/ts.toml @@ -191,5 +191,7 @@ roots = [ "sizes", "discards", "disposes", + "probes", + "measures", ] printable = ["Meters"] diff --git a/ts/src/lower/iter.rs b/ts/src/lower/iter.rs index 56dd97279..ea8672040 100644 --- a/ts/src/lower/iter.rs +++ b/ts/src/lower/iter.rs @@ -126,9 +126,9 @@ pub fn check_impl(t: &mut Translator<'_, '_>, next_fn: DefId) { /// Where the crate's own `fold` or `rfold`, `def_id`, or a closure in it, tells its /// accumulator `B` or closure `F` apart from the others it is generic over, and how: by an /// `Option` or a `Poll` of `B`, whose `None` or `Pending` is the one of whichever `B` it is -/// translated for; a call generic over either, but `F`'s, a `drop` of `F`, and std's -/// iterators', which take any; a constant generic over either, such as its size; or a drop of -/// `B`, which drops as the one it is translated for does. +/// translated for; a call generic over either, but `F`'s and std's iterators', which take +/// any unless the crate's own type holds one; a constant generic over either, such as its +/// size; or a drop of `B`, which drops as the one it is translated for does. fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { use rustc_middle::mir::visit::Visitor; use rustc_middle::mir::{self, ConstOperand, Location, TerminatorKind}; @@ -142,42 +142,49 @@ fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { found: Option<(Span, &'static str)>, } impl<'tcx> Erases<'_, 'tcx> { - /// Whether `arg` is over `B` or `F` other than through a closure, whose own body is - /// checked in its place, as one in this body is over both. - fn mentions(&mut self, arg: ty::GenericArg<'tcx>) -> bool { + /// Whether `arg` is over one of `params`, a closure through what it captures, as its + /// own body is checked in its place, or only under a type of the crate if `crate_only`. + fn over(&mut self, arg: ty::GenericArg<'tcx>, params: &[u32], crate_only: bool) -> bool { let mut walk = arg.walk(); - let mut mentions = false; + let mut over = false; while let Some(a) = walk.next() { let Some(t) = a.as_type() else { continue; }; match *t.kind() { - ty::Closure(closure, _) => { + ty::Closure(closure, args) => { self.closures.push(closure); walk.skip_current_subtree(); + over |= self.over(args.as_closure().tupled_upvars_ty().into(), params, crate_only); } - ty::Param(p) if self.params.contains(&p.index) => mentions = true, + ty::Adt(adt, args) if crate_only && !library::is_std(self.tcx, adt.did()) => { + walk.skip_current_subtree(); + over |= args.iter().any(|a| self.over(a, params, false)); + } + ty::Param(p) if !crate_only && params.contains(&p.index) => over = true, _ => {} } } - mentions + over } - /// Whether `ty` is `F`. - fn is_f(&self, ty: Ty<'tcx>) -> bool { - matches!(ty.kind(), ty::Param(p) if p.index == self.params[1]) + /// Whether a drop of `ty` drops a `B`, or runs the crate's code over `B` or `F`. + fn drops(&mut self, ty: Ty<'tcx>) -> bool { + let params = self.params; + self.over(ty.into(), ¶ms[..1], false) || self.over(ty.into(), ¶ms, true) } - /// Whether a call of `def_id` for `args` takes any `B` and `F`. - fn takes_any(&self, def_id: DefId, args: ty::GenericArgsRef<'tcx>) -> bool { + /// Whether a call of `def_id` for `args` runs the crate's code over `B` or `F`, or code + /// that can tell them apart: anything but `F`'s calls and std's iterators', which take + /// any `B` and `F`. + fn tells(&mut self, def_id: DefId, args: ty::GenericArgsRef<'tcx>) -> bool { let tcx = self.tcx; - if tcx.is_diagnostic_item(rustc_span::sym::mem_drop, def_id) { - return self.is_f(args.type_at(0)); - } - tcx.trait_of_assoc(def_id).is_some_and(|tr| { + let any = tcx.trait_of_assoc(def_id).is_some_and(|tr| { tcx.is_fn_trait(tr) || [core_trait(tcx, "Iterator"), core_trait(tcx, "DoubleEndedIterator")].contains(&Some(tr)) - }) + }); + let params = self.params; + args.iter().any(|a| self.over(a, ¶ms, any)) } fn find(&mut self, span: Span, what: &'static str) { @@ -189,11 +196,17 @@ fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { let span = term.source_info.span; match &term.kind { TerminatorKind::Call { func, args, .. } => { - if let Some((callee, callee_args)) = func.const_fn_def() - && !self.takes_any(callee, callee_args) - && callee_args.iter().any(|a| self.mentions(a)) - { - self.find(span, "a call generic over its accumulator or closure"); + if let Some((callee, callee_args)) = func.const_fn_def() { + if self.tcx.is_diagnostic_item(rustc_span::sym::mem_drop, callee) { + if self.drops(callee_args.type_at(0)) { + self.find( + span, + "a drop of its accumulator, or of the crate's type over it or its closure", + ); + } + } else if self.tells(callee, callee_args) { + self.find(span, "a call generic over its accumulator or closure"); + } } for arg in args { self.visit_operand(&arg.node, loc); @@ -202,8 +215,11 @@ fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { } TerminatorKind::Drop { place, .. } => { let ty = place.ty(self.mir, self.tcx).ty; - if !self.is_f(ty) && self.mentions(ty.into()) { - self.find(span, "a drop of its accumulator"); + if self.drops(ty) { + self.find( + span, + "a drop of its accumulator, or of the crate's type over it or its closure", + ); } } _ => {} @@ -216,7 +232,8 @@ fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { mir::Const::Unevaluated(uv, _) => uv.args, _ => ty::List::empty(), }; - if self.mentions(c.const_.ty().into()) || args.iter().any(|a| self.mentions(a)) { + let params = self.params; + if self.over(c.const_.ty().into(), ¶ms, false) || args.iter().any(|a| self.over(a, ¶ms, false)) { self.find( self.mir.source_info(loc).span, "a constant generic over its accumulator or closure", @@ -258,7 +275,7 @@ fn erases(tcx: TyCtxt<'_>, def_id: DefId) -> Option<(Span, &'static str)> { if wraps { return Some((local.source_info.span, "its accumulator in an `Option` or a `Poll`")); } - erases.mentions(local.ty.into()); + erases.over(local.ty.into(), &[], false); } erases.visit_body(mir); if erases.found.is_some() { From 3d36f72738d9e3c4ab72c12f7c5ab09febfee016 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 18:21:27 -0800 Subject: [PATCH 10/23] test(ts): refresh the reject census Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/reject/census.md | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/ts/fixtures/reject/census.md b/ts/fixtures/reject/census.md index d3bd3c1ec..72cc7af7b 100644 --- a/ts/fixtures/reject/census.md +++ b/ts/fixtures/reject/census.md @@ -1,8 +1,8 @@ # Census of `reject-fixture` -- Refusals: 264 -- Function instances: 309 -- Generic functions no instance reached, lowered over their type parameters: 13 +- Refusals: 266 +- Function instances: 318 +- Generic functions no instance reached, lowered over their type parameters: 14 ## By construct @@ -25,6 +25,7 @@ | 3 | a copy of a closure that changes what it captured | fixtures/reject/src/lib.rs:195:14 | | 3 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | fixtures/reject/src/lib.rs:2214:2 | | 3 | an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:1661:56 | +| 3 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | fixtures/reject/src/lib.rs:2423:18 | | 3 | replacing the value behind a reference to `_` | fixtures/reject/src/lib.rs:91:2 | | 3 | unsupported type `_` | fixtures/reject/src/lib.rs:7:14 | | 2 | `_` is not supported: its `None` and `Some` would both be `rt.None` | fixtures/reject/src/lib.rs:16:15 | @@ -38,7 +39,7 @@ | 2 | a raw pointer to a place of `()`, which has no address of its own | fixtures/reject/src/lib.rs:676:15 | | 2 | an upcast from `_` to `_`, which is not supported yet | fixtures/reject/src/lib.rs:474:32 | | 2 | comparing pointers to `_`, each a place JS makes of its own | fixtures/reject/src/lib.rs:544:2 | -| 2 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | fixtures/reject/src/lib.rs:2423:18 | +| 2 | overriding `_` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet | fixtures/reject/src/lib.rs:2471:3 | | 2 | passing `_`, which drops, to `_`, which is not supported yet | fixtures/reject/src/lib.rs:275:4 | | 2 | unsupported type `_` from another crate | fixtures/reject/src/lib.rs:387:32 | | 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | fixtures/reject/src/lib.rs:709:2 | @@ -97,7 +98,6 @@ | 1 | hashing `_` by its address, which JS has no counterpart of | fixtures/reject/src/lib.rs:1664:5 | | 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | fixtures/reject/src/lib.rs:266:16 | | 1 | overriding `_` with a constant generic over its accumulator or closure, which is not supported yet | fixtures/reject/src/lib.rs:2448:11 | -| 1 | overriding `_` with a drop of its accumulator, which is not supported yet | fixtures/reject/src/lib.rs:2471:3 | | 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | fixtures/reject/src/lib.rs:126:3 | | 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | fixtures/reject/src/lib.rs:150:2 | | 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | fixtures/reject/src/lib.rs:530:1 | @@ -112,9 +112,9 @@ The type or module each refused type or path belongs to. | 27 | `(u32, u32)` | fixtures/reject/src/lib.rs:556:10 | | 15 | `u32` | fixtures/reject/src/lib.rs:503:27 | | 11 | `(u8, u8)` | fixtures/reject/src/lib.rs:1220:31 | +| 9 | `Iterator` | fixtures/reject/src/lib.rs:37:4 | | 9 | `[u8; 4]` | fixtures/reject/src/lib.rs:423:26 | | 8 | `u8` | fixtures/reject/src/lib.rs:224:6 | -| 7 | `Iterator` | fixtures/reject/src/lib.rs:37:4 | | 6 | `f16` | fixtures/reject/src/lib.rs:7:14 | | 6 | `std::borrow::Cow` | fixtures/reject/src/lib.rs:280:2 | | 5 | `Gap` | fixtures/reject/src/lib.rs:856:10 | @@ -280,6 +280,7 @@ The type or module each refused type or path belongs to. | 3 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Gap` | fixtures/reject/src/lib.rs:856:10 | | 3 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `Mid`, `Outer` | fixtures/reject/src/lib.rs:1303:34 | | 3 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | `i32`, `u32` | fixtures/reject/src/lib.rs:2295:11 | +| 3 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2423:18 | | 3 | unsupported type `_` | `f16` | fixtures/reject/src/lib.rs:7:14 | | 2 | `_` is not supported: its `None` and `Some` would both be `rt.None` | `Option` | fixtures/reject/src/lib.rs:16:15 | | 2 | `_` of `_`, whose `None` is `rt.None`, which is not supported yet | `Iterator::scan`, `Option` | fixtures/reject/src/lib.rs:37:4 | @@ -300,7 +301,7 @@ The type or module each refused type or path belongs to. | 2 | an upcast from `_` to `_`, which is not supported yet | `dyn Keyed`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:474:32 | | 2 | comparing pointers to `_`, each a place JS makes of its own | `u32` | fixtures/reject/src/lib.rs:544:2 | | 2 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | `u32`, `i32` | fixtures/reject/src/lib.rs:2294:7 | -| 2 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2423:18 | +| 2 | overriding `_` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2471:3 | | 2 | replacing the value behind a reference to `_` | `std::pin::Pin` | fixtures/reject/src/lib.rs:91:2 | | 2 | unsupported call to `_` | `::sum` | fixtures/reject/src/lib.rs:383:17 | | 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | `Blank` | fixtures/reject/src/lib.rs:709:2 | @@ -434,7 +435,6 @@ The type or module each refused type or path belongs to. | 1 | hashing `_` by its address, which JS has no counterpart of | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1664:5 | | 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | `std::vec::Vec`, `Batched` | fixtures/reject/src/lib.rs:266:16 | | 1 | overriding `_` with a constant generic over its accumulator or closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2448:11 | -| 1 | overriding `_` with a drop of its accumulator, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2471:3 | | 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:126:3 | | 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | `DoubleEndedIterator::rfind` | fixtures/reject/src/lib.rs:150:2 | | 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `String::retain` | fixtures/reject/src/lib.rs:732:4 | @@ -719,6 +719,14 @@ The type or module each refused type or path belongs to. +
overriding `_` with a call generic over its accumulator or closure, which is not supported yet (3) + +- fixtures/reject/src/lib.rs:2423:18: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet +- fixtures/reject/src/lib.rs:2513:11: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet +- fixtures/reject/src/lib.rs:2551:11: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet + +
+
replacing the value behind a reference to `_` (3) - fixtures/reject/src/lib.rs:91:2: replacing the value behind a reference to `std::pin::Pin fn(&'a mut std::task::Context<'b>) -> std::task::Poll>>>` @@ -812,10 +820,10 @@ The type or module each refused type or path belongs to.
-
overriding `_` with a call generic over its accumulator or closure, which is not supported yet (2) +
overriding `_` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet (2) -- fixtures/reject/src/lib.rs:2423:18: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet -- fixtures/reject/src/lib.rs:2493:3: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet +- fixtures/reject/src/lib.rs:2471:3: overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet +- fixtures/reject/src/lib.rs:2493:3: overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet
@@ -1169,12 +1177,6 @@ The type or module each refused type or path belongs to.
-
overriding `_` with a drop of its accumulator, which is not supported yet (1) - -- fixtures/reject/src/lib.rs:2471:3: overriding `Iterator::fold` with a drop of its accumulator, which is not supported yet - -
-
overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet (1) - fixtures/reject/src/lib.rs:126:3: overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet From c38d5660bdfc5a4b5a446ae54df861a8b04fb7d8 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 18:47:57 -0800 Subject: [PATCH 11/23] chore(quest): claim quest/m3/ts-closure-calls.md Quest-Claim: f9fbc00244f82e14 From c590947ea9a57486ca356f59e61fb8e110c9ad57 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 19:11:36 -0800 Subject: [PATCH 12/23] feat(ts): translate try_fold, try_for_each, partition, scan, repeat_with, sort_by_cached_key, LazyCell::new, Cell::update, and RefCell::replace_with Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/lang/expected/core/bool.ts | 8 + ts/fixtures/lang/expected/ends.ts | 689 ++++++++++++++-------- ts/fixtures/lang/src/ends.rs | 53 +- ts/fixtures/task/expected/core/bool.ts | 7 + ts/fixtures/task/expected/drops.ts | 9 + ts/fixtures/task/expected/drops/called.ts | 489 +++++++++++++++ ts/fixtures/task/src/drops.rs | 7 + ts/fixtures/task/src/drops/called.rs | 197 +++++++ ts/fixtures/task/src/harness.rs | 3 + ts/fixtures/task/ts.toml | 1 + ts/runtime/rt/collections.ts | 17 +- ts/runtime/rt/iter.ts | 103 +++- ts/runtime/rt/sort.ts | 31 + ts/runtime/rt/task.ts | 26 + ts/src/lower/collections.rs | 23 + ts/src/lower/iter.rs | 29 +- ts/src/lower/library.rs | 39 +- ts/src/lower/mir/call.rs | 3 +- ts/src/lower/task.rs | 11 + ts/tests/task.ts | 3 + 20 files changed, 1490 insertions(+), 258 deletions(-) create mode 100644 ts/fixtures/task/expected/drops/called.ts create mode 100644 ts/fixtures/task/src/drops/called.rs diff --git a/ts/fixtures/lang/expected/core/bool.ts b/ts/fixtures/lang/expected/core/bool.ts index 579a88bd3..271248e07 100644 --- a/ts/fixtures/lang/expected/core/bool.ts +++ b/ts/fixtures/lang/expected/core/bool.ts @@ -308,4 +308,12 @@ export function then$1btzga3(self: boolean, f: () => rt.u8): rt.u8 | undefined { return f(); } +export function then$19svsql(self: boolean, f: () => undefined): undefined | rt.None { + if (!self) { + return rt.None; + } + f(); + return undefined; +} + //# sourceMappingURL=bool.ts.map diff --git a/ts/fixtures/lang/expected/ends.ts b/ts/fixtures/lang/expected/ends.ts index 531dd54d8..3c11ce1b8 100644 --- a/ts/fixtures/lang/expected/ends.ts +++ b/ts/fixtures/lang/expected/ends.ts @@ -1,7 +1,7 @@ // Generated by rust2-ts. Do not edit. import * as rt from "./rt.ts"; -import { thenSome$0d5am30 } from "./core/bool.ts"; +import { thenSome$0d5am30, then$19svsql } from "./core/bool.ts"; import { unwrapOr$0r2bmpr as option_unwrapOr$0r2bmpr, map$05nbzug as option_map$05nbzug, map$1sj2ls1 as option_map$1sj2ls1, mapOr$02k4ito as option_mapOr$02k4ito, or$1loyskh as option_or$1loyskh } from "./core/option.ts"; import * as ends_Counted from "./ends.Counted.ts"; import * as Flicker from "./ends.Flicker.ts"; @@ -413,86 +413,133 @@ export function consumed$ends_Run(it: ends_Run.Run, pick: rt.u8, k: rt.usize, ou * fold panics past `k` items, with what was logged so far. */ export function folded$ends_Counted(it: ends_Counted.Counted, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; })); } else if (pick === 1) { const _10: ends_Counted.Counted = it; - const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; }; rt.byteVecPush(out, rt.iterRfold(rt.iterFrom(_10, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), 1, _11)); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), 0, _19, true)); rt.iterExtendBytes(out, rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), 0, _60); } else { - _38 = Uint8Array.of(1, r2.error); + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), 0, _63); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); + } else { + _66 = Uint8Array.of(1, r3.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(ends_Counted.next$iter_Iterator(it))); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, ends_Counted.len$iter_ExactSizeIterator(it) & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, ends_Counted.len$iter_ExactSizeIterator(it) & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, ends_Counted.len$iter_ExactSizeIterator(it) & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, rt.iterCount(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })) & 0xff); @@ -504,10 +551,22 @@ export function folded$ends_Counted(it: ends_Counted.Counted, pick: rt.u8, k: rt put(out, rt.iterLast(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }))); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: ends_Counted.Counted = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterFrom(_140, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart()); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -515,8 +574,8 @@ export function folded$ends_Counted(it: ends_Counted.Counted, pick: rt.u8, k: rt } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt)); } else { put(out, rt.iterMax(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), rt.lt)); @@ -529,39 +588,53 @@ export function folded$ends_Counted(it: ends_Counted.Counted, pick: rt.u8, k: rt } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: ends_Counted.Counted = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_118, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _119))); + const _175: ends_Counted.Counted = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_175, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _176))); } else { - const _113: ends_Counted.Counted = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_113, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _114)) & 0xff); + const _170: ends_Counted.Counted = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_170, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; })); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; })); } } else if (pick === 12) { - const _139: ends_Counted.Counted = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _140); + const _196: ends_Counted.Counted = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_196, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: ends_Counted.Counted = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: ends_Counted.Counted = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterFrom(_216, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + })); + } else { + const _210: ends_Counted.Counted = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_210, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })); @@ -571,9 +644,9 @@ export function folded$ends_Counted(it: ends_Counted.Counted, pick: rt.u8, k: rt put(out, rt.iterLast(rt.iterFuse(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator })))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterFrom(it, ends_Counted.next$iter_Iterator, undefined, { hint: ends_Counted.sizeHint$iter_Iterator, back: (it: ends_Counted.Counted) => rt.iterFromOption(ends_Counted.nextBack$iter_DoubleEndedIterator(it)), len: ends_Counted.len$iter_ExactSizeIterator }))); rt.byteVecPush(out, ends_Counted.len$iter_ExactSizeIterator(it) & 0xff); @@ -586,84 +659,131 @@ export function folded$ends_Counted(it: ends_Counted.Counted, pick: rt.u8, k: rt * fold panics past `k` items, with what was logged so far. */ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, Overrides.fold$iter_Iterator_u8_ends_folded_closure0_ends_Overrides(it, 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, Overrides.fold$iter_Iterator_u8_ends_folded_closure0_ends_Overrides(it, 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; })); } else if (pick === 1) { - rt.byteVecPush(out, Overrides.rfold$iter_DoubleEndedIterator_u8_ends_folded_closure1_ends_Overrides(it, 1, (a11: rt.u8, b12: rt.u8): rt.u8 => { + rt.byteVecPush(out, Overrides.rfold$iter_DoubleEndedIterator_u8_ends_folded_closure1_ends_Overrides(it, 1, (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; })); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _19, true)); rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _60); } else { - _38 = Uint8Array.of(1, r2.error); + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _63); + } + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); + } else { + _66 = Uint8Array.of(1, r3.error); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(Overrides.next$iter_Iterator(it))); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, Overrides.count$iter_Iterator(it) & 0xff); @@ -675,10 +795,22 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r put(out, Overrides.last$iter_Iterator(it)); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }, true); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: Overrides.Overrides = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterFrom(_140, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart(), true); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }, true); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -686,8 +818,8 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt, true)); } else { put(out, rt.iterMax(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), rt.lt, true)); @@ -700,39 +832,53 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: Overrides.Overrides = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.ownedLast(rt.iterSkip(rt.iterFrom(_118, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _119))); + const _175: Overrides.Overrides = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterFrom(_175, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _176))); } else { - const _113: Overrides.Overrides = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterFrom(_113, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _114)) & 0xff); + const _170: Overrides.Overrides = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterFrom(_170, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; }, true)); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; }, true)); } } else if (pick === 12) { - const _139: Overrides.Overrides = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _140); + const _196: Overrides.Overrides = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_196, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: Overrides.Overrides = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: Overrides.Overrides = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterFrom(_216, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + }, true)); + } else { + const _210: Overrides.Overrides = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_210, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })); @@ -742,9 +888,9 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r put(out, rt.ownedLast(rt.iterFuse(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))); rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); @@ -757,86 +903,133 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r * fold panics past `k` items, with what was logged so far. */ export function folded$ends_Run(it: ends_Run.Run, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; })); } else if (pick === 1) { const _10: ends_Run.Run = it; - const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; }; rt.byteVecPush(out, rt.iterRfold(rt.iterFrom(_10, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), 1, _11)); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _19, true)); rt.iterExtendBytes(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _60); + } else { + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _63); + } + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); } else { - _38 = Uint8Array.of(1, r2.error); + _66 = Uint8Array.of(1, r3.error); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(ends_Run.next$iter_Iterator(it))); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, rt.iterCount(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })) & 0xff); @@ -848,10 +1041,22 @@ export function folded$ends_Run(it: ends_Run.Run, pick: rt.u8, k: rt.usize, log: put(out, rt.iterLast(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }))); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: ends_Run.Run = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterFrom(_140, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart()); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -859,8 +1064,8 @@ export function folded$ends_Run(it: ends_Run.Run, pick: rt.u8, k: rt.usize, log: } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt)); } else { put(out, rt.iterMax(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), rt.lt)); @@ -873,39 +1078,53 @@ export function folded$ends_Run(it: ends_Run.Run, pick: rt.u8, k: rt.usize, log: } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: ends_Run.Run = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_118, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _119))); + const _175: ends_Run.Run = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_175, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _176))); } else { - const _113: ends_Run.Run = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_113, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _114)) & 0xff); + const _170: ends_Run.Run = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_170, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; })); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; })); } } else if (pick === 12) { - const _139: ends_Run.Run = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _140); + const _196: ends_Run.Run = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_196, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: ends_Run.Run = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: ends_Run.Run = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterFrom(_216, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + })); + } else { + const _210: ends_Run.Run = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_210, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })); @@ -915,9 +1134,9 @@ export function folded$ends_Run(it: ends_Run.Run, pick: rt.u8, k: rt.usize, log: put(out, rt.iterLast(rt.iterFuse(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) })))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }))); rt.byteVecPush(out, rt.iterFrom(it, ends_Run.next$iter_Iterator, undefined, { hint: ends_Run.sizeHint$iter_Iterator, back: (it: ends_Run.Run) => rt.iterFromOption(ends_Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); diff --git a/ts/fixtures/lang/src/ends.rs b/ts/fixtures/lang/src/ends.rs index 75ec51dd9..02d7d22ee 100644 --- a/ts/fixtures/lang/src/ends.rs +++ b/ts/fixtures/lang/src/ends.rs @@ -339,11 +339,21 @@ fn folded + ExactSizeIterator>( assert!(k < 15 || b != 2, "rfold at {b} after {:?}", log.borrow().as_slice()); a.wrapping_mul(3) ^ b })), - // Each `try_rfold` breaks at an item, then the rest are read on by `next`. - 2 if k % 2 == 0 => { + // Each `try_rfold`, `try_fold`, or `try_for_each` breaks at an item, then the rest are + // read on by `next`. + 2 if k % 4 == 0 => { put(out, it.try_rfold(0u8, |a, b| (b != k8).then_some(a ^ b))); out.extend(it); } + 2 if k % 4 == 2 => { + put(out, it.try_fold(0u8, |a, b| (b != k8 / 4).then_some(a ^ b))); + out.extend(it); + } + 2 if k % 4 == 3 => { + let r = it.try_for_each(|b| (b != k8 / 4).then(|| out.push(b))); + out.push(r.is_some() as u8); + out.extend(it); + } // Of an `Option` accumulator, whose `Some(None)` goes on and whose `None` breaks. 2 => { let r = it.try_rfold(None, |a: Option, b| match b % 3 { @@ -358,13 +368,28 @@ fn folded + ExactSizeIterator>( out.extend(it); } 3 => { - let r: Result = it.try_rfold(0u8, |a, b| if b % 4 == k8 % 4 { Err(b) } else { Ok(a ^ b) }); + let r: Result = match k % 2 { + 0 => it.try_rfold(0u8, |a, b| if b % 4 == k8 % 4 { Err(b) } else { Ok(a ^ b) }), + _ => it.try_fold(0u8, |a, b| if b % 4 == k8 % 4 { Err(b) } else { Ok(a ^ b) }), + }; out.extend(match r { Ok(a) => [0, a], Err(b) => [1, b], }); put(out, it.next()); } + 4 if k % 2 == 1 => { + use std::ops::ControlFlow; + let r = it.by_ref().rev().try_for_each(|b| match b > k8 / 2 { + true => ControlFlow::Break(b), + false => ControlFlow::Continue(out.push(b)), + }); + put(out, match r { + ControlFlow::Break(b) => Some(b), + ControlFlow::Continue(()) => None, + }); + out.push(it.len() as u8); + } 4 => { use std::ops::ControlFlow; let r = it.by_ref().rev().try_rfold(0u8, |a, b| match b > k8 { @@ -381,8 +406,14 @@ fn folded + ExactSizeIterator>( 5 => out.push(it.map(|b| b ^ 1).count() as u8), 6 if k % 2 == 0 => put(out, it.last()), 6 => put(out, it.rev().last()), - 7 if k % 2 == 0 => out.push(it.map(u32::from).sum::() as u8), - 7 => it.for_each(|b| out.push(b)), + 7 if k % 4 == 0 => out.push(it.map(u32::from).sum::() as u8), + 7 if k % 4 == 1 => it.for_each(|b| out.push(b)), + // `partition`, which folds it into two `Vec`s. + 7 => { + let (a, b): (Vec, Vec) = it.partition(|b| b % 3 == k8 % 3); + put_vec(out, a); + put_vec(out, b); + } 8 if k % 2 == 0 => put(out, it.max()), 8 => put(out, it.min_by_key(|b| b % 3)), 9 if k % 2 == 0 => out.push(it.chain([7, 8]).count() as u8), @@ -400,7 +431,17 @@ fn folded + ExactSizeIterator>( put(out, skip.next()); put(out, skip.next_back()); } - 13 => put_vec(out, it.step_by(k / 4 + 1).collect()), + 13 if k % 2 == 0 => put_vec(out, it.step_by(k / 4 + 1).collect()), + // `scan`, whose `None` ends the collect, and which `next` reads on past. + 13 => { + let mut scan = it.scan(0u8, |s, b| { + *s ^= b; + (*s != k8 / 2).then_some(*s) + }); + put_vec(out, scan.by_ref().collect()); + put(out, scan.next()); + out.push(scan.fold(0, |a, b| a ^ b)); + } 14 if k % 2 == 0 => put(out, it.fuse().last()), 14 => { let mut peek = it.peekable(); diff --git a/ts/fixtures/task/expected/core/bool.ts b/ts/fixtures/task/expected/core/bool.ts index 954fd4e8a..91ede7538 100644 --- a/ts/fixtures/task/expected/core/bool.ts +++ b/ts/fixtures/task/expected/core/bool.ts @@ -27,6 +27,13 @@ export function thenSome$1af3oea(self: boolean, t: rt.u32): rt.u32 | undefined { return t; } +export function thenSome$1j8foe9(self: boolean, _: undefined): undefined | rt.None { + if (!self) { + return rt.None; + } + return undefined; +} + export function then$06wuxll(self: boolean, f: () => Guard.Guard | undefined): Guard.Guard | undefined | rt.None { if (!self) { return rt.None; diff --git a/ts/fixtures/task/expected/drops.ts b/ts/fixtures/task/expected/drops.ts index 979029109..77d14f312 100644 --- a/ts/fixtures/task/expected/drops.ts +++ b/ts/fixtures/task/expected/drops.ts @@ -5,6 +5,7 @@ import { drop$Option_Result_model_Guard_u8 as lib_drop$Option_Result_model_Guard import { thenSome$0zvoczk } from "./core/bool.ts"; import { isSomeAnd$17cacqw, unwrapOr$0v6ziq2 as option_unwrapOr$0v6ziq2, unwrapOr$1tvry1i as option_unwrapOr$1tvry1i, map$0hegtde as option_map$0hegtde, map$0ccnsmq as option_map$0ccnsmq, map$0782hf5 as option_map$0782hf5, map$0lq7mno as option_map$0lq7mno, mapOr$1w10sgd as option_mapOr$1w10sgd, mapOr$0ey19f0 as option_mapOr$0ey19f0, okOr$1alhe7b as option_okOr$1alhe7b, filter$1vqc90z, orElse$02wco5t as option_orElse$02wco5t, zip$1rr0evn, clone$1sxxxkp as option_clone$1sxxxkp } from "./core/option.ts"; import { ok$0rngk0g, err$126l6wy, asRef$01pd5k9, mapOr$1hlk3iq as result_mapOr$1hlk3iq, mapOrElse$196aho3 as result_mapOrElse$196aho3, andThen$0r804hk as result_andThen$0r804hk, unwrapOr$0urixfm as result_unwrapOr$0urixfm } from "./core/result.ts"; +import { called as called_called } from "./drops/called.ts"; import { scoped, discarded, iterated } from "./drops/closures.ts"; import { flattened as flattened_flattened } from "./drops/flattened.ts"; import { folded as folds_folded, rfolded as folds_rfolded } from "./drops/folds.ts"; @@ -1273,6 +1274,14 @@ export function folded(log: Log.Log, id: rt.u32, arg: rt.u8): void { folds_folded(log, id, arg); } +/** + * Run scenario `arg % 12` of std's calls of a closure that owns a guard. The last panics + * in a `try_fold`. + */ +export function called(log: Log.Log, id: rt.u32, arg: rt.u8): void { + called_called(log, id, arg); +} + /** * Run scenario `arg % 18` of what folds back to front, through what wraps a closure beside * another, and through a crate's iterator with folds of its own. The last panics in a fold. diff --git a/ts/fixtures/task/expected/drops/called.ts b/ts/fixtures/task/expected/drops/called.ts new file mode 100644 index 000000000..40c07697f --- /dev/null +++ b/ts/fixtures/task/expected/drops/called.ts @@ -0,0 +1,489 @@ +// Generated by rust2-ts. Do not edit. + +import * as rt from "../rt.ts"; +import { thenSome$1af3oea, thenSome$1j8foe9 } from "../core/bool.ts"; +import { map$1raha9y as option_map$1raha9y } from "../core/option.ts"; +import { mapErr$0nvqjog as result_mapErr$0nvqjog } from "../core/result.ts"; +import * as Key from "../drops.Key.ts"; +import * as Log from "../log.Log.ts"; +import * as Guard from "../model.Guard.ts"; + +/** Run scenario `arg % 12`. The last panics in a `try_fold`, with the log so far. */ +export function called(log: Log.Log, id: rt.u32, arg: rt.u8): void { + let broke!: rt.u32 | undefined; + let f!: Guard.Guard; + const _449: () => rt.Iter = (): rt.Iter => { + const _2: Guard.Guard[] = []; + return rt.iterSlice(_2, rt.drop); + }; + let _573: boolean = false; + let _572: boolean = false; + const guard: (a0: rt.u32) => Guard.Guard = (n2: rt.u32): Guard.Guard => { + return Guard.new(rt.u32Add(id, n2), Log.clone$Clone(log)); + }; + const guards: (a0: rt.u32, a1: rt.u32) => Guard.Guard[] = (from: rt.u32, to: rt.u32): Guard.Guard[] => { + return rt.iterToArray(rt.iterMap(new rt.Range(from, to), guard), undefined, 8, true); + }; + const _10: [Guard.Guard, Guard.Guard] = [guard(20), guard(21)]; + _573 = true; + const c: Guard.Guard = _10[0]; + _572 = true; + const d: Guard.Guard = _10[1]; + const _17: rt.u8 = rt.u8Rem(arg, 12); + if (_17 === 0) { + const it: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + _573 = false; + const captured26 = c; + const captured27 = id; + const n: rt.u32 | undefined = rt.iterTryFold(it, 0, rt.closure((n15: rt.u32, g20: Guard.Guard): rt.u32 | undefined => { + const _1013: rt.u32 = Guard.id(g20); + const _1315: rt.u32 = Guard.id(captured26); + const args72: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_1013, f), (f: rt.Formatter) => rt.u32Display(_1315, f)]; + Log.note(log, rt.fmtFormat(["try ", args72[0], " ", args72[1]])); + const _033: rt.u32 | undefined = thenSome$1af3oea(Guard.id(g20) !== rt.u32Add(captured27, 3), rt.u32Sub(rt.u32Add(n15, Guard.id(g20)), captured27)); + g20[Symbol.dispose](); + return _033; + }, (): void => { + captured26[Symbol.dispose](); + }), true, true); + const _32: rt.u32 | undefined = option_map$1raha9y(rt.iterToOption(it.next()), (g21: Guard.Guard): rt.u32 => { + const _034: rt.u32 = Guard.id(g21); + g21[Symbol.dispose](); + return _034; + }); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(n, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtOption(_32, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["broke ", args2[0], " ", args2[1]])); + const m: rt.u32 | undefined = rt.iterTryFold(it, 0, (n16: rt.u32, g22: Guard.Guard): rt.u32 | undefined => { + const _035: rt.u32 | undefined = rt.u32Sub(rt.u32Add(n16, Guard.id(g22)), id); + g22[Symbol.dispose](); + return _035; + }, true); + const _51: rt.u32 = Guard.id(d); + const args4: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(m, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_51, f)]; + Log.note(log, rt.fmtFormat(["ended ", args4[0], " ", args4[1]])); + rt.drop(it); + } else if (_17 === 1) { + const _60: rt.Iter = rt.iterChain(rt.iterSlice(guards(1, 3), rt.drop), rt.iterSlice(guards(3, 6), rt.drop)); + _573 = false; + const captured25 = c; + const it2: rt.Iter<[Guard.Guard, rt.u32]> = rt.iterMap(_60, rt.closure((g16: Guard.Guard): [Guard.Guard, rt.u32] => { + return [g16, Guard.id(captured25)] as [Guard.Guard, rt.u32]; + }, (): void => { + captured25[Symbol.dispose](); + })); + const part13 = result_mapErr$0nvqjog(rt.iterTryFold(it2, 0, (n13: rt.u32, _331: [Guard.Guard, rt.u32]): rt.Result => { + let _030!: rt.Result; + let _2110: boolean = false; + _2110 = true; + const g17: Guard.Guard = _331[0]; + if (!(Guard.id(g17) === rt.u32Add(id, 4))) { + _030 = rt.Ok(rt.u32Sub(rt.u32Add(n13, Guard.id(g17)), id)); + } else { + _2110 = false; + _030 = rt.Err(g17); + } + if (_2110) { + g17[Symbol.dispose](); + } + _2110 = false; + return _030; + }), (g18: Guard.Guard): rt.u32 => { + const _031: rt.u32 = Guard.id(g18); + g18[Symbol.dispose](); + return _031; + }); + const args6: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(part13, f, rt.u32Debug, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["err ", args6[0]])); + const r2: rt.Result = rt.iterTryFold(it2, 0, (n14: rt.u32, _333: [Guard.Guard, rt.u32]): rt.Result => { + const g19: Guard.Guard = _333[0]; + const _032: rt.Result = rt.Ok(rt.u32Sub(rt.u32Add(n14, Guard.id(g19)), id)); + g19[Symbol.dispose](); + return _032; + }); + const _94: rt.u32 = Guard.id(d); + const args8: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(r2, f, rt.u32Debug, rt.fmtUnit), (f: rt.Formatter) => rt.u32Display(_94, f)]; + Log.note(log, rt.fmtFormat(["ok ", args8[0], " ", args8[1]])); + rt.drop(it2); + } else if (_17 === 2) { + const _103: rt.Iter = rt.iterRev(rt.iterSlice(guards(1, 6), rt.drop)); + _573 = false; + const captured23 = c; + const it3: rt.Iter = rt.iterFilter(_103, rt.closure((g13: Guard.Guard): boolean => { + return Guard.id(g13) !== rt.u32Sub(Guard.id(captured23), 18); + }, (): void => { + captured23[Symbol.dispose](); + }), rt.drop); + const r3: rt.Result = rt.iterTryFold(it3, 0, (n11: rt.u32, g14: Guard.Guard): rt.Result => { + let _027!: rt.Result; + let _2011: boolean = false; + _2011 = true; + if (!(Guard.id(g14) === rt.u32Add(id, 3))) { + _027 = rt.Ok(rt.u32Sub(rt.u32Add(n11, Guard.id(g14)), id)); + } else { + _2011 = false; + _027 = rt.Err(g14); + } + if (_2011) { + g14[Symbol.dispose](); + return _027; + } + return _027; + }); + if (r3.ok) { + broke = undefined; + } else { + const g: Guard.Guard = r3.error; + broke = Guard.id(g); + g[Symbol.dispose](); + } + const args10: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(broke, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["break ", args10[0]])); + const _131: Guard.Guard[] = []; + const _130: rt.Iter = rt.iterSlice(_131, rt.drop); + _572 = false; + const captured24 = d; + const none: rt.u32 | undefined = rt.iterTryFold(_130, 0, rt.closure((n12: rt.u32, g15: Guard.Guard): rt.u32 | undefined => { + const _028: rt.u32 | undefined = rt.u32Add(rt.u32Add(n12, Guard.id(g15)), Guard.id(captured24)); + g15[Symbol.dispose](); + return _028; + }, (): void => { + captured24[Symbol.dispose](); + }), true, true); + rt.drop(_130); + const args12: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(none, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["none ", args12[0]])); + rt.drop(it3); + } else if (_17 === 3) { + const it4: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + _573 = false; + const captured20 = id; + const captured21 = c; + const part10 = rt.iterTryForEach(it4, rt.closure((g10: Guard.Guard): rt.Result => { + let _023!: rt.Result; + if (!(Guard.id(g10) === rt.u32Add(captured20, 2))) { + const part9 = Guard.id(g10); + const args70: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part9, f)]; + Log.note(log, rt.fmtFormat(["each ", args70[0]])); + _023 = rt.OK; + } else { + _023 = rt.Err(rt.u32Sub(rt.u32Add(Guard.id(g10), Guard.id(captured21)), Guard.id(captured21))); + } + g10[Symbol.dispose](); + return _023; + }, (): void => { + captured21[Symbol.dispose](); + }), undefined, true); + const args14: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(part10, f, rt.fmtUnit, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["each ", args14[0]])); + const part11 = rt.iterTryForEach(it4, (g11: Guard.Guard): rt.Result => { + let _024!: rt.Result; + if (!(Guard.id(g11) === rt.u32Add(id, 4))) { + _024 = rt.OK; + } else { + _024 = rt.Err(Guard.id(g11)); + } + g11[Symbol.dispose](); + return _024; + }); + const args16: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtControlFlow(part11, f, rt.fmtUnit, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["flow ", args16[0]])); + _572 = false; + const captured22 = d; + const part12 = rt.iterTryForEach(it4, rt.closure((g12: Guard.Guard): undefined | rt.None => { + const _025: undefined | rt.None = thenSome$1j8foe9(Guard.id(g12) !== Guard.id(captured22), undefined); + g12[Symbol.dispose](); + return _025; + }, (): void => { + captured22[Symbol.dispose](); + }), true, true, rt.None); + const args18: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part12, f, rt.fmtUnit, rt.None)]; + Log.note(log, rt.fmtFormat(["some ", args18[0]])); + rt.drop(it4); + } else if (_17 === 4) { + const _190: rt.Iter = rt.iterSlice(guards(1, 7), rt.drop); + _573 = false; + const captured19 = c; + const _189: [Guard.Guard[], Guard.Guard[]] = rt.iterPartition(_190, rt.closure((g9: Guard.Guard): boolean => { + const _912: rt.u32 = Guard.id(g9); + const _1114: rt.u32 = Guard.id(captured19); + const args68: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_912, f), (f: rt.Formatter) => rt.u32Display(_1114, f)]; + Log.note(log, rt.fmtFormat(["side ", args68[0], " ", args68[1]])); + return rt.u32Rem(Guard.id(g9), 2) === 1; + }, (): void => { + captured19[Symbol.dispose](); + }), [[] as Guard.Guard[], [] as Guard.Guard[]], rt.vecPart(8), true, true); + const odd: Guard.Guard[] = _189[0]; + const even: Guard.Guard[] = _189[1]; + const part8 = rt.iterToArray(rt.iterMap(rt.iterSlice(odd), Guard.id), undefined, 4, true); + const args20: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part8, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["odd ", args20[0]])); + rt.dropAll(even); + const _213: [rt.u32[], rt.u32[]] = rt.iterPartition(new rt.Range(1, 4), (_215: rt.u32): boolean => { + return true; + }, [[] as rt.u32[], [] as rt.u32[]], rt.vecPart(4)); + const all: rt.u32[] = _213[0]; + const none2: rt.u32[] = _213[1]; + const _221: rt.u32 = Guard.id(d); + const args22: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(all, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtList(none2, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_221, f)]; + Log.note(log, rt.fmtFormat(["all ", args22[0], " ", args22[1], " ", args22[2]])); + rt.dropAll(odd); + } else if (_17 === 5) { + _573 = false; + let captured15: rt.u32 = 0; + const captured16 = c; + const captured17 = guard; + const made: Guard.Guard[] = rt.iterToArray(rt.iterTake(rt.iterRepeatWith(rt.closure((): Guard.Guard => { + captured15 = rt.u32Add(captured15, 1); + const _911: rt.u32 = Guard.id(captured16); + const args66: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(captured15, f), (f: rt.Formatter) => rt.u32Display(_911, f)]; + Log.note(log, rt.fmtFormat(["make ", args66[0], " ", args66[1]])); + return captured17(captured15); + }, (): void => { + captured16[Symbol.dispose](); + })), 3, rt.drop), "fold", 8, true); + const part6 = made.length; + const args24: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(part6, f)]; + Log.note(log, rt.fmtFormat(["made ", args24[0]])); + _572 = false; + const captured18 = d; + const it5: rt.Iter = rt.iterRepeatWith(rt.closure((): rt.u32 => { + return Guard.id(captured18); + }, (): void => { + captured18[Symbol.dispose](); + })); + const part7 = rt.iterToOption(it5.next()); + const args26: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part7, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["first ", args26[0]])); + rt.drop(it5); + Log.note(log, "dropped"); + rt.dropAll(made); + } else if (_17 === 6) { + const _267: rt.Iter = rt.iterSlice(guards(1, 7), rt.drop); + _573 = false; + const captured13 = id; + const captured14 = c; + const it6: rt.Iter = rt.iterScan(_267, 0, rt.closure((sum: rt.Place, g8: Guard.Guard): rt.u32 | undefined => { + const _427: rt.u32 = rt.u32Sub(Guard.id(g8), captured13); + sum.v = rt.u32Add(sum.v, _427); + const _168: rt.u32 = Guard.id(g8); + const _195: rt.u32 = Guard.id(captured14); + const args64: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_168, f), (f: rt.Formatter) => rt.u32Display(sum.v, f), (f: rt.Formatter) => rt.u32Display(_195, f)]; + Log.note(log, rt.fmtFormat(["scan ", args64[0], " ", args64[1], " ", args64[2]])); + const _018: rt.u32 | undefined = thenSome$1af3oea(sum.v < 10, sum.v); + g8[Symbol.dispose](); + return _018; + }, (): void => { + captured14[Symbol.dispose](); + }), true); + const sums: rt.u32[] = rt.iterToArray(rt.iterBorrow(it6), "next", 4); + const _281: rt.u32 | undefined = rt.iterToOption(it6.next()); + const args28: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(sums, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtOption(_281, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["sums ", args28[0], " ", args28[1]])); + rt.drop(it6); + const total: rt.u32 = rt.iterSum(rt.iterScan(new rt.Range(1, 4), 1, (n10: rt.Place, k2: rt.u32): rt.u32 | undefined => { + n10.v = rt.u32Mul(n10.v, k2); + return n10.v; + }, true), rt.u32Add, 0); + const _300: rt.u32 = Guard.id(d); + const args30: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(total, f), (f: rt.Formatter) => rt.u32Display(_300, f)]; + Log.note(log, rt.fmtFormat(["total ", args30[0], " ", args30[1]])); + } else if (_17 === 7) { + const v: Guard.Guard[] = rt.iterToArray(rt.iterSlice(rt.arrayMap([3, 1, 4, 5, 2], guard), rt.drop), "fold", 8, true); + const _313: Guard.Guard[] = v; + _573 = false; + const captured12 = c; + rt.sliceSortByCachedKey(_313, rt.closure((g7: Guard.Guard): Key.Key => { + const _97: rt.u32 = Guard.id(g7); + const _1112: rt.u32 = Guard.id(captured12); + const args62: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_97, f), (f: rt.Formatter) => rt.u32Display(_1112, f)]; + Log.note(log, rt.fmtFormat(["key ", args62[0], " ", args62[1]])); + return Key.new(rt.u32Rem(rt.u32Mul(Guard.id(g7), 7), 5), Log.clone$Clone(log)); + }, (): void => { + captured12[Symbol.dispose](); + }), rt.cmpLt(rt.cmpTuple<[Key.Key, rt.usize], rt.Ordering | undefined>([Key.partialCmp$cmp_PartialOrd, rt.cmp])), [16, 16, 16, 16], true, false, true, rt.drop); + const part5 = rt.iterToArray(rt.iterMap(rt.iterSlice(v), Guard.id), undefined, 4, true); + const args32: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part5, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["sorted ", args32[0]])); + const w: rt.u32[] = [3, 1, 2]; + rt.sliceSortByCachedKey(w, (_210: rt.u32): rt.u32 => { + return rt.u32Add(_210, Guard.id(d)); + }, rt.cmpLt(rt.cmpTuple<[rt.u32, rt.usize], rt.Ordering | undefined>([rt.cmpReverse(rt.cmp), rt.cmp])), [8, 8, 8, 8], true, true); + const args34: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(w, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["rev ", args34[0]])); + rt.dropAll(v); + } else if (_17 === 8) { + _573 = false; + const captured9 = c; + const lazy: rt.LazyCell = new rt.LazyCell(rt.closure((): rt.u32 => { + const part3 = Guard.id(captured9); + const args60: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part3, f)]; + Log.note(log, rt.fmtFormat(["force ", args60[0]])); + const _013: rt.u32 = rt.u32Add(Guard.id(captured9), 1); + captured9[Symbol.dispose](); + return _013; + }, (): void => { + captured9[Symbol.dispose](); + })); + Log.note(log, "made"); + const _358: rt.u32 = lazy.force(); + const _360: rt.u32 = lazy.force(); + const args36: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_358, f), (f: rt.Formatter) => rt.u32Display(_360, f)]; + Log.note(log, rt.fmtFormat(["forced ", args36[0], " ", args36[1]])); + _572 = false; + const captured10 = d; + rt.lazyDrop(new rt.LazyCell(rt.closure((): rt.u32 => { + const _014: rt.u32 = Guard.id(captured10); + captured10[Symbol.dispose](); + return _014; + }, (): void => { + captured10[Symbol.dispose](); + })), undefined, rt.drop); + Log.note(log, "unused"); + const captured11 = guard(22); + const lazy2: rt.LazyCell = new rt.LazyCell(rt.once(rt.closure((): rt.u32 => { + return Guard.id(captured11); + }, (): void => { + captured11[Symbol.dispose](); + }))); + const part4 = lazy2.force(); + const args38: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part4, f)]; + Log.note(log, rt.fmtFormat(["by Fn ", args38[0]])); + rt.lazyDrop(lazy2, undefined, rt.drop); + rt.lazyDrop(lazy, undefined, rt.drop); + } else if (_17 === 9) { + const cell: rt.Cell = new rt.Cell(1); + _573 = false; + const captured5 = c; + rt.cellUpdate(cell, rt.closure((n6: rt.u32): rt.u32 => { + const _93: rt.u32 = Guard.id(captured5); + const args56: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n6, f), (f: rt.Formatter) => rt.u32Display(_93, f)]; + Log.note(log, rt.fmtFormat(["update ", args56[0], " ", args56[1]])); + const _09: rt.u32 = rt.u32Add(n6, 1); + captured5[Symbol.dispose](); + return _09; + }, (): void => { + captured5[Symbol.dispose](); + })); + const part = cell.v; + const args40: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part, f)]; + Log.note(log, rt.fmtFormat(["updated ", args40[0]])); + const cell2: rt.RefCell = new rt.RefCell(5); + _572 = false; + const captured6 = d; + const old: rt.u32 = rt.refCellReplaceWith(cell2, rt.closure((n7: rt.Place): rt.u32 => { + const _95: rt.u32 = Guard.id(captured6); + const args58: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n7.v, f), (f: rt.Formatter) => rt.u32Display(_95, f)]; + Log.note(log, rt.fmtFormat(["replace ", args58[0], " ", args58[1]])); + const _010: rt.u32 = rt.u32Mul(n7.v, 2); + captured6[Symbol.dispose](); + return _010; + }, (): void => { + captured6[Symbol.dispose](); + }), true); + const _415: rt.RefCell = rt.refCellBorrow(cell2); + const args42: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(old, f), (f: rt.Formatter) => rt.u32Display(_415.value, f)]; + const _411: string = rt.fmtFormat(["replaced ", args42[0], " ", args42[1]]); + rt.refRelease(_415); + Log.note(log, _411); + const _425: [Guard.Guard, Guard.Guard] = [guard(22), guard(23)]; + const e2: Guard.Guard = _425[0]; + f = _425[1]; + const captured7 = e2; + const captured8 = f; + const add: (a0: rt.u32) => rt.u32 = rt.closure((n8: rt.u32): rt.u32 => { + return rt.u32Add(rt.u32Sub(rt.u32Add(n8, Guard.id(captured7)), Guard.id(captured7)), 1); + }, (): void => { + captured7[Symbol.dispose](); + }); + const doubled: (a0: rt.Place) => rt.u32 = rt.closure((n9: rt.Place): rt.u32 => { + return rt.u32Sub(rt.u32Add(rt.u32Mul(n9.v, 2), Guard.id(captured8)), Guard.id(captured8)); + }, (): void => { + captured8[Symbol.dispose](); + }); + rt.cellUpdate(new rt.Cell(1), rt.once(add)); + const part2 = rt.refCellReplaceWith(cell2, rt.once(doubled), true); + const args44: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part2, f)]; + Log.note(log, rt.fmtFormat(["by Fn ", args44[0]])); + } else if (_17 === 10) { + const _452: rt.Iter = _449(); + _573 = false; + const captured3 = c; + const r7: rt.Result = rt.iterTryFold(_452, 0, rt.closure((n4: rt.u32, g3: Guard.Guard): rt.Result => { + const _05: rt.Result = rt.Ok(rt.u32Add(rt.u32Add(n4, Guard.id(g3)), Guard.id(captured3))); + g3[Symbol.dispose](); + return _05; + }, (): void => { + captured3[Symbol.dispose](); + }), undefined, true); + rt.drop(_452); + const args46: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(r7, f, rt.u32Debug, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["fold ", args46[0]])); + const _467: rt.Iter = _449(); + _572 = false; + const captured4 = d; + const r8: undefined | rt.None = rt.iterTryForEach(_467, rt.closure((g4: Guard.Guard): undefined | rt.None => { + const _06: undefined | rt.None = thenSome$1j8foe9(Guard.id(g4) !== Guard.id(captured4), undefined); + g4[Symbol.dispose](); + return _06; + }, (): void => { + captured4[Symbol.dispose](); + }), true, true, rt.None); + rt.drop(_467); + const args48: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(r8, f, rt.fmtUnit, rt.None)]; + Log.note(log, rt.fmtFormat(["each ", args48[0]])); + const _482: [Guard.Guard[], Guard.Guard[]] = rt.iterPartition(_449(), (g5: Guard.Guard): boolean => { + return Guard.id(g5) > 0; + }, [[] as Guard.Guard[], [] as Guard.Guard[]], rt.vecPart(8), true); + const a: Guard.Guard[] = _482[0]; + const b: Guard.Guard[] = _482[1]; + const _491: rt.usize = a.length; + const _494: rt.usize = b.length; + const args50: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(_491, f), (f: rt.Formatter) => rt.usizeDisplay(_494, f)]; + Log.note(log, rt.fmtFormat(["sides ", args50[0], " ", args50[1]])); + const scanned: rt.u32[] = rt.iterToArray(rt.iterScan(_449(), 0, (n5: rt.Place, g6: Guard.Guard): rt.u32 | undefined => { + const _08: rt.u32 | undefined = rt.u32Add(n5.v, Guard.id(g6)); + g6[Symbol.dispose](); + return _08; + }, true), "next", 4, false, 8); + const empty: Guard.Guard[] = []; + rt.sliceSortByCachedKey(empty, Guard.id, rt.cmpLt(rt.cmpTuple<[rt.u32, rt.usize], rt.Ordering | undefined>([rt.cmp, rt.cmp])), [8, 8, 8, 8], true, true); + const _515: rt.usize = scanned.length; + const _518: rt.usize = empty.length; + const args52: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(_515, f), (f: rt.Formatter) => rt.usizeDisplay(_518, f)]; + Log.note(log, rt.fmtFormat(["scanned ", args52[0], " ", args52[1]])); + rt.dropAll(empty); + rt.dropAll(b); + rt.dropAll(a); + } else { + const a2: Guard.Guard = guard(30); + const _530: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + const captured = id; + const captured2 = a2; + rt.iterTryFold(_530, 0, rt.closure((n3: rt.u32, g2: Guard.Guard): rt.u32 | undefined => { + if (!(Guard.id(g2) !== rt.u32Add(captured, 3))) { + const _142: rt.u32 = Guard.id(g2); + const _173: rt.u32 = Guard.id(captured2); + const _205: string = rt.resultUnwrap(rt.stringFromUtf8(Log.text(log)), rt.fmtFromUtf8ErrorDebug); + const args54: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_142, f), (f: rt.Formatter) => rt.u32Display(_173, f), (f: rt.Formatter) => rt.fmtPad(f, _205)]; + rt.panicFmt(["try_fold of g", args54[0], " with g", args54[1], " after\n", args54[2]]); + } else { + const _04: rt.u32 | undefined = rt.u32Add(n3, Guard.id(g2)); + g2[Symbol.dispose](); + return _04; + } + }, (): void => { + captured2[Symbol.dispose](); + }), true, true); + rt.drop(_530); + } + if (_572) { + d[Symbol.dispose](); + } + _572 = false; + if (_573) { + c[Symbol.dispose](); + } + _573 = false; +} + +//# sourceMappingURL=called.ts.map diff --git a/ts/fixtures/task/src/drops.rs b/ts/fixtures/task/src/drops.rs index 700e9d7b1..1f11550d2 100644 --- a/ts/fixtures/task/src/drops.rs +++ b/ts/fixtures/task/src/drops.rs @@ -22,6 +22,7 @@ macro_rules! list { }}; } +mod called; mod closures; mod flattened; mod folds; @@ -724,6 +725,12 @@ pub fn folded(log: &Log, id: u32, arg: u8) { folds::folded(log, id, arg); } +/// Run scenario `arg % 12` of std's calls of a closure that owns a guard. The last panics +/// in a `try_fold`. +pub fn called(log: &Log, id: u32, arg: u8) { + called::called(log, id, arg); +} + /// Run scenario `arg % 18` of what folds back to front, through what wraps a closure beside /// another, and through a crate's iterator with folds of its own. The last panics in a fold. pub fn rfolded(log: &Log, id: u32, arg: u8) { diff --git a/ts/fixtures/task/src/drops/called.rs b/ts/fixtures/task/src/drops/called.rs new file mode 100644 index 000000000..45023c4e7 --- /dev/null +++ b/ts/fixtures/task/src/drops/called.rs @@ -0,0 +1,197 @@ +//! std's calls of a closure that owns a guard: each call logged, and the guard dropped where +//! std drops the closure. + +use std::cell::{Cell, LazyCell, RefCell}; +use std::ops::ControlFlow; + +use crate::log::Log; +use super::Key; +use crate::model::Guard; + +/// Run scenario `arg % 12`. The last panics in a `try_fold`, with the log so far. +pub(super) fn called(log: &Log, id: u32, arg: u8) { + let guard = |n: u32| Guard::new(id + n, log.clone()); + let guards = |from: u32, to: u32| (from..to).map(guard).collect::>(); + let (c, d) = (guard(20), guard(21)); + match arg % 12 { + 0 => { + // `try_fold` by `Option`, which breaks by `None` and reads on after, and drops + // each item it reads. + let mut it = guards(1, 6).into_iter(); + let n = it.try_fold(0u32, move |n, g| { + log.note(format!("try {} {}", g.id(), c.id())); + (g.id() != id + 3).then_some(n + g.id() - id) + }); + log.note(format!("broke {n:?} {:?}", it.next().map(|g| g.id()))); + let m = it.try_fold(0u32, |n, g| Some(n + g.id() - id)); + log.note(format!("ended {m:?} {}", d.id())); + } + 1 => { + // By `Result`, through `map` and `chain`, which drop each half as it ends. + let mut it = guards(1, 3).into_iter().chain(guards(3, 6)).map(move |g| (g, c.id())); + let r = it.try_fold(0u32, |n, (g, _)| match g.id() == id + 4 { + true => Err(g), + false => Ok(n + g.id() - id), + }); + log.note(format!("err {:?}", r.map_err(|g| g.id()))); + let r: Result = it.try_fold(0, |n, (g, _)| Ok(n + g.id() - id)); + log.note(format!("ok {r:?} {}", d.id())); + } + 2 => { + // By `ControlFlow`, through `rev` and `filter`, and over none. + let mut it = guards(1, 6).into_iter().rev().filter(move |g| g.id() != c.id() - 18); + let r = it.try_fold(0u32, |n, g| match g.id() == id + 3 { + true => ControlFlow::Break(g), + false => ControlFlow::Continue(n + g.id() - id), + }); + let broke = match r { + ControlFlow::Break(g) => Some(g.id()), + ControlFlow::Continue(_) => None, + }; + log.note(format!("break {broke:?}")); + let none = Vec::::new().into_iter().try_fold(0u32, move |n, g| Some(n + g.id() + d.id())); + log.note(format!("none {none:?}")); + } + 3 => { + // `try_for_each` by each type, which drops its closure as it returns. + let mut it = guards(1, 6).into_iter(); + let r = it.try_for_each(move |g| match g.id() == id + 2 { + true => Err(g.id() + c.id() - c.id()), + false => Ok(log.note(format!("each {}", g.id()))), + }); + log.note(format!("each {r:?}")); + let r = it.try_for_each(|g| match g.id() == id + 4 { + true => ControlFlow::Break(g.id()), + false => ControlFlow::Continue(()), + }); + log.note(format!("flow {r:?}")); + let r = it.try_for_each(move |g| (g.id() != d.id()).then_some(())); + log.note(format!("some {r:?}")); + } + 4 => { + // `partition`, which moves each item to a side and drops its closure as it ends. + let (odd, even): (Vec, Vec) = guards(1, 7).into_iter().partition(move |g| { + log.note(format!("side {} {}", g.id(), c.id())); + g.id() % 2 == 1 + }); + log.note(format!("odd {:?}", odd.iter().map(Guard::id).collect::>())); + drop(even); + let (all, none): (Vec, Vec) = (1..4).partition(|_| true); + log.note(format!("all {all:?} {none:?} {}", d.id())); + } + 5 => { + // `repeat_with`, which drops its closure with the iterator, each item as it goes. + let mut k = 0; + let made: Vec = std::iter::repeat_with(move || { + k += 1; + log.note(format!("make {k} {}", c.id())); + guard(k) + }) + .take(3) + .collect(); + log.note(format!("made {}", made.len())); + let mut it = std::iter::repeat_with(move || d.id()); + log.note(format!("first {:?}", it.next())); + drop(it); + log.note("dropped".into()); + } + 6 => { + // `scan` of a state JS copies, which stops at the first `None` and drops its + // closure with the iterator. + let mut it = guards(1, 7).into_iter().scan(0u32, move |sum, g| { + *sum += g.id() - id; + log.note(format!("scan {} {sum} {}", g.id(), c.id())); + (*sum < 10).then_some(*sum) + }); + let sums: Vec = it.by_ref().collect(); + log.note(format!("sums {sums:?} {:?}", it.next())); + drop(it); + let total: u32 = (1..4).scan(1u32, |n, k| { + *n *= k; + Some(*n) + }) + .sum(); + log.note(format!("total {total} {}", d.id())); + } + 7 => { + // `sort_by_cached_key`, whose keys drop after the sort, and whose closure drops + // as it returns. + let mut v: Vec = [3, 1, 4, 5, 2].map(guard).into_iter().collect(); + v.sort_by_cached_key(move |g| { + log.note(format!("key {} {}", g.id(), c.id())); + Key::new((g.id() * 7) % 5, log.clone()) + }); + log.note(format!("sorted {:?}", v.iter().map(Guard::id).collect::>())); + let mut w = vec![3u32, 1, 2]; + w.sort_by_cached_key(|&k| std::cmp::Reverse(k + d.id())); + log.note(format!("rev {w:?}")); + } + 8 => { + // `LazyCell::new`, which drops its closure as the first `force` calls it, and + // with the cell if none does. + let lazy = LazyCell::new(move || { + log.note(format!("force {}", c.id())); + c.id() + 1 + }); + log.note("made".into()); + log.note(format!("forced {} {}", *lazy, *lazy)); + let unused = LazyCell::new(move || d.id()); + drop(unused); + log.note("unused".into()); + // One that `Fn` calls, which drops after `force`'s call through `FnOnce`. + let e = guard(22); + let make = move || e.id(); + let lazy = LazyCell::new(make); + log.note(format!("by Fn {}", *lazy)); + } + 9 => { + // `Cell::update` and `RefCell::replace_with` of a value JS copies, each of which + // drops its closure as it returns. + let cell = Cell::new(1u32); + cell.update(move |n| { + log.note(format!("update {n} {}", c.id())); + n + 1 + }); + log.note(format!("updated {}", cell.get())); + let cell = RefCell::new(5u32); + let old = cell.replace_with(move |n| { + log.note(format!("replace {n} {}", d.id())); + *n * 2 + }); + log.note(format!("replaced {old} {}", cell.borrow())); + // Each of one that `Fn` calls, which drops after their call through `FnOnce`. + let (e, f) = (guard(22), guard(23)); + let add = move |n: u32| n + e.id() - e.id() + 1; + let doubled = move |n: &mut u32| *n * 2 + f.id() - f.id(); + Cell::new(1u32).update(add); + log.note(format!("by Fn {}", cell.replace_with(doubled))); + } + 10 => { + // Each over none: the closure never runs, and drops as std's does. + let none = || Vec::::new().into_iter(); + let r: Result = none().try_fold(0, move |n, g| Ok(n + g.id() + c.id())); + log.note(format!("fold {r:?}")); + let r: Option<()> = none().try_for_each(move |g| (g.id() != d.id()).then_some(())); + log.note(format!("each {r:?}")); + let (a, b): (Vec, Vec) = none().partition(|g| g.id() > 0); + log.note(format!("sides {} {}", a.len(), b.len())); + let scanned: Vec = none().scan(0u32, |n, g| Some(*n + g.id())).collect(); + let mut empty: Vec = Vec::new(); + empty.sort_by_cached_key(Guard::id); + log.note(format!("scanned {} {}", scanned.len(), empty.len())); + } + _ => { + let a = guard(30); + let _ = guards(1, 6).into_iter().try_fold(0, move |n, g| { + assert!( + g.id() != id + 3, + "try_fold of g{} with g{} after\n{}", + g.id(), + a.id(), + String::from_utf8(log.text()).unwrap() + ); + Some(n + g.id()) + }); + } + } +} diff --git a/ts/fixtures/task/src/harness.rs b/ts/fixtures/task/src/harness.rs index b1bd329b6..7329e18fa 100644 --- a/ts/fixtures/task/src/harness.rs +++ b/ts/fixtures/task/src/harness.rs @@ -132,6 +132,9 @@ fn steps() -> Vec<(&'static str, Step)> { ("rfolded", |log, exec, _, arg| { drops::rfolded(log, 1000 * exec.len() as u32, arg) }), + ("called", |log, exec, _, arg| { + drops::called(log, 1000 * exec.len() as u32, arg) + }), ("watch", |log, exec, channels, arg| { if let Some(c) = pick(channels.len(), arg) { let guard = Guard::new(exec.len() as u32, log.clone()); diff --git a/ts/fixtures/task/ts.toml b/ts/fixtures/task/ts.toml index ce19dd465..40873bc79 100644 --- a/ts/fixtures/task/ts.toml +++ b/ts/fixtures/task/ts.toml @@ -17,6 +17,7 @@ roots = [ "drops::cells", "drops::folded", "drops::rfolded", + "drops::called", "drops::inside", "drops::flattened", "drops::indexed", diff --git a/ts/runtime/rt/collections.ts b/ts/runtime/rt/collections.ts index d7e85f97c..8f1c22c6d 100644 --- a/ts/runtime/rt/collections.ts +++ b/ts/runtime/rt/collections.ts @@ -28,6 +28,7 @@ import { iterChain, iterEmpty, iterFilter, + iterFold, iterMap, iterOnce, iterSlice, @@ -40,7 +41,7 @@ import { capNext, trustedUpper, } from "./iter.ts"; -import { type Arc, drop as dispose, dropAll, dropRange } from "./task.ts"; +import { type Arc, closure, drop as dispose, dropAll, dropRange } from "./task.ts"; // Ordering @@ -4033,6 +4034,20 @@ export interface Part { one(c: C, item: T): C; } +/** + * `Iterator::partition` into `sides`, the collection's two defaults: each item `f` tests + * true into the first, and the rest into the second, by `part`'s `extend_one`, through + * `fold`, which drops `f` as it ends if it `owns` it. + */ +export function iterPartition(it: Iter, f: (item: T) => boolean, sides: [C, C], part: Part, drops = false, owns = false): [C, C] { + const g = (_: undefined, item: T): undefined => { + const i = f(item) ? 0 : 1; + sides[i] = part.one(sides[i], item); + }; + iterFold(it, undefined, owns ? closure(g, () => dispose(f)) : g, drops, owns); + return sides; +} + /** * `Extend::extend` of `t`, a tuple of collections, by `items`, and `collect` into the * tuple of their defaults: each reserves the lower bound of the size hint, if any, in diff --git a/ts/runtime/rt/iter.ts b/ts/runtime/rt/iter.ts index efe307b88..bdb0a1ee8 100644 --- a/ts/runtime/rt/iter.ts +++ b/ts/runtime/rt/iter.ts @@ -557,6 +557,11 @@ export function iterFromFn(f: () => T | undefined | None, none?: None): Iter< return new FromNext(f, (f) => iterFromOption(f(), none), dispose); } +/** `iter::repeat_with`: `f` called for each item, endlessly, which drops with it. */ +export function iterRepeatWith(f: () => T): Iter { + return new FromNext(f, (f) => f(), dispose, { hint: () => [USIZE_MAX, undefined] }); +} + /** * `iter::successors`: `first`, then `succ` of each item, called as that item is yielded. * The item it holds next drops by `drop`, and then `succ`, as std's fields drop. @@ -800,6 +805,16 @@ export function iterMapWhile(it: Iter, f: (item: T) => U | undefined | return new MapWhileIter(it, f, none); } +/** + * `Iterator::scan`, which hands `f` its state, as its place if `copied`, where JS copies it, + * and drops it by `drop` after `f`, as std's fields drop. + */ +export function iterScan(it: Iter, state: S, f: (state: never, item: T) => U | undefined, copied?: boolean, drop?: Drop): Iter; +export function iterScan(it: Iter, state: S, f: (state: never, item: T) => U | None, copied: boolean | undefined, drop: Drop | undefined, none: None): Iter; +export function iterScan(it: Iter, state: S, f: (state: never, item: T) => U | undefined | None, copied = false, drop?: Drop, none?: None): Iter { + return new ScanIter(it, state, f, copied, drop, none); +} + /** `Iterator::step_by`, panicking on a step of 0, and dropping what it steps over by `drop`. */ export function iterStepBy(it: Iter, step: number, drop?: Drop): Iter { return new StepByIter(it, step, drop); @@ -1052,23 +1067,39 @@ export function iterRfold(it: Iter, init: A, f: (acc: A, item: T) => A, } /** - * `DoubleEndedIterator::try_rfold`, from the back as `try_rfold` steps it, until `f` - * breaks: by an `Option`'s `None`, `none` where that is `rt.None`, if `option`, and else by - * an `rt.Result`'s `Err`, as a `Result` or a `ControlFlow` breaks. It returns what broke, or - * the accumulator as the type continues with it. If it `owns` `f`, `f` drops as it returns. + * `Iterator::try_fold`, as `try_fold` steps it, until `f` breaks: by an `Option`'s `None`, + * `none` where that is `rt.None`, if `option`, and else by an `rt.Result`'s `Err`, as a + * `Result` or a `ControlFlow` breaks. It returns what broke, or the accumulator as the type + * continues with it. If it `owns` `f`, `f` drops as it returns. */ +export function iterTryFold(it: Iter, init: A, f: (acc: A, item: T) => R, option = false, owns = false, none?: None): R { + return tryFold(it, false, init, f, option, none, owns ? () => dispose(f) : undefined); +} + +/** `DoubleEndedIterator::try_rfold`, from the back, as `iterTryFold`. */ export function iterTryRfold(it: Iter, init: A, f: (acc: A, item: T) => R, option = false, owns = false, none?: None): R { + return tryFold(it, true, init, f, option, none, owns ? () => dispose(f) : undefined); +} + +/** `Iterator::try_for_each`, as `iterTryFold` of `()`. */ +export function iterTryForEach(it: Iter, f: (item: T) => R, option = false, owns = false, none?: None): R { + return tryFold(it, false, undefined, (_, item: T) => f(item), option, none, owns ? () => dispose(f) : undefined); +} + +/** `iterTryFold`, or from the back if `back`, which ends by `release`. */ +function tryFold(it: Iter, back: boolean, init: A, f: (acc: A, item: T) => R, option: boolean, none: None | undefined, release: (() => void) | undefined): R { const folded = it.folded(); + const read = back ? () => folded.nextBack() : () => folded.next(); let acc = init; - for (let item = folded.nextBack(); item !== DONE; item = folded.nextBack()) { + for (let item = read(); item !== DONE; item = read()) { const step = f(acc, item); if (option ? step === none : !(step as Result).ok) { - if (owns) dispose(f); + release?.(); return step; } acc = option ? (step as unknown as A) : (step as { value: A }).value; } - if (owns) dispose(f); + release?.(); return (option ? acc : Ok(acc)) as R; } @@ -3360,6 +3391,64 @@ class MapWhileIter extends Calling U | undefined | None } } +/** + * `Scan`, which hands `f` its state, or its place, and yields what `f` returns until it + * returns `None`: its `next` reads on after, but a fold, by `try_fold`, stops there. + */ +class ScanIter extends Calling U | undefined | None> { + private state: S; + private readonly at: S | Place; + private readonly drop: Drop | undefined; + /** The `Option`'s `None` that `f` returns. */ + private readonly none: None | undefined; + private stateDropped = false; + + constructor(inner: Iter, state: S, f: (state: never, item: T) => U | undefined | None, copied: boolean, drop?: Drop, none?: None) { + super(inner, f); + this.state = state; + this.at = copied + ? place( + () => this.state, + (v) => { + this.state = v; + }, + ) + : state; + this.drop = drop; + this.none = none; + } + + next(): U | Done { + return this.scan(this.inner.next()); + } + + /** std's folds read its iterator as its `try_fold` does. */ + override folded(): Iter { + const inner = this.inner.folded(); + if (inner === this.inner) return this; + return new Folded( + () => this.scan(inner.next()), + () => this.nextBack(), + ); + } + + /** What `f` makes of `item`, which ends it at `None`. */ + private scan(item: T | Done): U | Done { + return item === DONE ? DONE : iterFromOption(this.f(this.at as never, item), this.none); + } + + override sizeHint(): SizeHint { + return fewer(this.inner); + } + + override [Symbol.dispose](): void { + super[Symbol.dispose](); + if (this.stateDropped) return; + this.stateDropped = true; + this.drop?.(this.state); + } +} + /** `StepBy`, whose items drop by `drop` as its iterator's own `nth` and `nth_back` step over them. */ class StepByIter extends Adaptor { readonly step: number; diff --git a/ts/runtime/rt/sort.ts b/ts/runtime/rt/sort.ts index bd008efdd..d2919c680 100644 --- a/ts/runtime/rt/sort.ts +++ b/ts/runtime/rt/sort.ts @@ -10,6 +10,7 @@ // panic aborts, never shows. import { panic } from "../rt.ts"; +import { drop as dispose } from "./task.ts"; type Slice = { [i: number]: T; length: number }; type Less = (a: T, b: T) => boolean; @@ -67,6 +68,36 @@ export function sliceSortUnstable(s: Slice, less: Less, size: number, f quicksortUnstable(c, 0, n, false, undefined, 2 * log2(n)); } +/** + * `sort_by_cached_key`: `key` of each element in order, paired with its index, and then + * `key` dropped if the sort `owns` it, the pairs sorted by `sort_unstable` by `lt`, which + * then permute `s`, and drop by `drop`. The + * index is the smallest of `u8`, `u16`, and `u32` whose pair is smaller than the next's + * and counts every element, by `sizes`, each pair's size on wasm32 and then `usize`'s. + */ +export function sliceSortByCachedKey(s: Slice, key: (item: T) => K, lt: Less<[K, number]>, sizes: [number, number, number, number], freeze: boolean, copy: boolean, owns = false, drop?: (key: K) => void): void { + const n = s.length; + if (n < 2) { + if (owns) dispose(key); + return; + } + const [u8, u16, u32, usize] = sizes; + const size = u8 < u16 && n <= 0xff ? u8 : u16 < u32 && n <= 0xffff ? u16 : u32 < usize ? u32 : usize; + const indices: [K, number][] = []; + for (let i = 0; i < n; i++) indices.push([key(s[i]), i]); + if (owns) dispose(key); + sliceSortUnstable(indices, lt, size, freeze, copy); + for (let i = 0; i < n; i++) { + let index = indices[i][1]; + while (index < i) index = indices[index][1]; + indices[i][1] = index; + const t = s[i]; + s[i] = s[index]; + s[index] = t; + } + if (drop !== undefined) for (const [k] of indices) drop(k); +} + /** `sort_by_key`'s test: `lt` of the keys `key` makes of each, the first's first. */ export function keyLt(key: (item: T) => K, lt: Less): Less { return (a, b) => lt(key(a), key(b)); diff --git a/ts/runtime/rt/task.ts b/ts/runtime/rt/task.ts index b7f160aee..b6e4ea6a7 100644 --- a/ts/runtime/rt/task.ts +++ b/ts/runtime/rt/task.ts @@ -466,6 +466,27 @@ export function refCellReplace(cell: RefCell, value: T): T { return old; } +/** + * `RefCell::replace_with`: its value, which what `f` returns of it, or of its place if + * `copied`, where JS copies it, replaces, exclusively borrowed until then. + */ +export function refCellReplaceWith(cell: RefCell, f: (value: never) => T, copied = false): T { + refCellBorrowMut(cell); + const at = copied + ? place( + () => cell.value, + (v) => { + cell.value = v; + }, + ) + : cell.value; + const replacement = f(at as never); + const old = cell.value; + cell.value = replacement; + refMutRelease(cell); + return old; +} + /** `RwLock::read`: a shared guard, which aborts while a write is held, as wasm32's does. */ export function rwLockRead(lock: RefCell): RefCell { if (lock.borrows < 0) throw new Abort("rwlock locked for writing"); @@ -716,6 +737,11 @@ export function cellReplace(cell: Cell, v: T): T { return old; } +/** `Cell::update`: what `f` returns of a copy of its value, by `copy` where JS shares it, in its place. */ +export function cellUpdate(cell: Cell, f: (v: T) => T, copy?: (v: T) => T): void { + cell.v = f(copy === undefined ? cell.v : copy(cell.v)); +} + /** `Cell::set`: `v` in place of the value it held, which `dropOld` drops after. */ export function cellSet(cell: Cell, v: T, dropOld?: (old: T) => void): void { const old = cell.v; diff --git a/ts/src/lower/collections.rs b/ts/src/lower/collections.rs index 41ae0a7b8..409bc7772 100644 --- a/ts/src/lower/collections.rs +++ b/ts/src/lower/collections.rs @@ -1980,6 +1980,29 @@ pub fn tuple_extend<'tcx>( Some(Expr::rt(f, [vec![target], rest].concat())) } +/// `Iterator::partition` of `items`, an iterator of `item`s, by `f`, into two defaults of +/// `coll`, as std's makes them, each extended as a tuple's `Extend` extends it: `flags` say +/// whether the iterator drops and whether `f` drops as its fold ends. +pub fn partition<'tcx>( + b: &mut Body<'_, '_, 'tcx>, + coll: Ty<'tcx>, + item: Ty<'tcx>, + items: Expr, + f: Expr, + flags: Vec, + span: Span, +) -> Option { + let part = part(b, coll, item, span)?; + let left = default(b, coll, span)?; + let left = empty(b, left, coll, span); + let right = default(b, coll, span)?; + let right = empty(b, right, coll, span); + Some(Expr::rt( + "iterPartition", + super::iter::tail(vec![items, f, Expr::Array(vec![left, right]), part], flags), + )) +} + /// The `rt.Part` a tuple's `Extend` adds `item`s to a collection of type `coll` by, or to a /// tuple of them, which is one too: `None` for any other. fn part<'tcx>(b: &mut Body<'_, '_, 'tcx>, coll: Ty<'tcx>, item: Ty<'tcx>, span: Span) -> Option { diff --git a/ts/src/lower/iter.rs b/ts/src/lower/iter.rs index 04b2a9998..212e50c6a 100644 --- a/ts/src/lower/iter.rs +++ b/ts/src/lower/iter.rs @@ -686,6 +686,7 @@ pub fn call<'tcx>( let none = b.t.none_arg(targ(0)?); return Some(Expr::rt("iterFromFn", [args, none.into_iter().collect()].concat())); } + ["iter", "sources", "repeat_with", "repeat_with"] => return Some(Expr::rt("iterRepeatWith", args)), // What drops the item it holds next. ["iter", "sources", "successors", "successors"] => { let droppers = [b.t.dropper(targ(0)?, span)].into_iter().chain(b.t.none_arg(targ(0)?)); @@ -817,16 +818,32 @@ pub fn call<'tcx>( let owns = flag(b.t.drops(targ(gargs.types().count() - 1)?)); method(&camel, tail(rest, vec![drops, owns])) } - // `try_rfold::`, which drops its closure as it returns, but not the - // iterator, which it borrows. - "try_rfold" => { - let (option, none) = try_flow(b, targ(3)?)?; - let owns = flag(b.t.drops(targ(2)?)); + // `try_fold::` and `try_for_each::`, which drop their closure as they + // return, but not the iterator, which they borrow. + "try_fold" | "try_rfold" | "try_for_each" => { + let n = gargs.types().count(); + let (option, none) = try_flow(b, targ(n - 1)?)?; + let owns = flag(b.t.drops(targ(n - 2)?)); method( &camel, tail(rest, [flag(option), owns].into_iter().chain(none).collect()), ) } + // `partition::`, into two of `B`'s defaults. + "partition" => { + let f = rest.into_iter().next()?; + let flags = vec![iter_drops(b, self_ty, span), flag(b.t.drops(targ(2)?))]; + super::collections::partition(b, targ(1)?, item, recv.clone(), f, flags, span) + } + // `scan::`, whose state is lent as its place where JS copies it, and drops + // after the closure. + "scan" => { + let state = targ(1)?; + let copied = flag(b.t.needs_place(state)); + let dropper = b.t.dropper(state, span); + let none = b.t.none_arg(targ(2)?); + method(name, tail(rest, [copied, dropper].into_iter().chain(none).collect())) + } // std's `Sum` and `Product` are of the type or a reference to it: another is the crate's. "sum" | "product" if item.peel_refs() != targ(1)? => None, // `Duration`'s carries its nanoseconds and panics as std's does, not as `+` would. @@ -1404,7 +1421,9 @@ pub(super) fn holds_closure(tcx: ty::TyCtxt<'_>, did: DefId) -> bool { _, "Map" | "Filter" | "FilterMap" | "SkipWhile" | "TakeWhile" | "MapWhile" | "Inspect" ] | ["iter", "adapters", "flatten", "FlatMap"] + | ["iter", "adapters", "scan", "Scan"] | ["iter", "sources", "from_fn", "FromFn"] + | ["iter", "sources", "repeat_with", "RepeatWith"] | ["iter", "sources", "successors", "Successors"] | ["collections", "linked_list", "ExtractIf"] | [ diff --git a/ts/src/lower/library.rs b/ts/src/lower/library.rs index 33f9a4bf5..8bf0ed38c 100644 --- a/ts/src/lower/library.rs +++ b/ts/src/lower/library.rs @@ -935,6 +935,7 @@ fn discards(owner: &str, name: &str) -> Option<&'static [usize]> { // `is_sorted_by::` drops its comparator before the last item, as `all` takes it. ("Iterator", "is_sorted_by") => &[1], ("LocalKey", "with" | "try_with" | "initialize_with" | "with_borrow_mut") => &[1], + ("Cell", "update") | ("RefCell", "replace_with") => &[1], _ => return None, }) } @@ -949,6 +950,9 @@ fn releases(owner: &str, name: &str) -> bool { "Iterator", "for_each" | "fold" + | "try_fold" + | "try_for_each" + | "partition" | "reduce" | "max_by" | "min_by" @@ -960,6 +964,7 @@ fn releases(owner: &str, name: &str) -> bool { | "partial_cmp_by" ) | ("DoubleEndedIterator", "rfold" | "try_rfold") | ("Entry", "or_insert_with" | "or_insert_with_key" | "and_modify") + | ("slice", "sort_by_cached_key") ) } @@ -997,7 +1002,8 @@ fn takes_none(owner: &str, name: &str) -> bool { ) | ( "Iterator", "max_by" | "min_by" | "reduce" | "find_map" | "filter_map" | "map_while" - ) | ("Peekable", "peek" | "next_if" | "next_if_eq") + ) | ("Iterator", "try_fold" | "try_for_each" | "scan") + | ("Peekable", "peek" | "next_if" | "next_if_eq") | ( "OnceCell" | "OnceLock", "get" | "get_mut" | "set" | "get_or_init" | "get_or_try_init" | "take" | "into_inner" @@ -1163,16 +1169,22 @@ fn called_closures<'tcx>( } let mentions = |t: Ty<'tcx>| t.walk().any(|a| a.as_type() == Some(input)); if mentions(output) { - // An `rt.Iter` drops the closure it holds, and an `rt.PollFn` one it owns. + // An `rt.Iter` drops the closure it holds, an `rt.PollFn` one it owns, and an + // `rt.LazyCell` one it never calls, and one it calls through `FnOnce` as it does. let holder = match output.kind() { ty::Adt(adt, args) if args.types().any(|a| a == input) => Some(adt.did()), _ => None, }; let iter = holder.is_some_and(|did| super::iter::holds_closure(tcx, did)); + let holds = holder.and_then(|did| Std::of(tcx, did)); + let lazy = matches!(holds, Some(Std::LazyCell | Std::LazyLock)); if lent && iter && i < args.len() { let f = std::mem::replace(&mut args[i], Expr::undefined()); args[i] = Expr::rt("lent", vec![f]); - } else if !lent && !iter && holder.and_then(|did| Std::of(tcx, did)) != Some(Std::PollFn) { + } else if lazy && !lent && called != ty::ClosureKind::FnOnce && i < args.len() { + let f = std::mem::replace(&mut args[i], Expr::undefined()); + args[i] = Expr::rt("once", vec![f]); + } else if !lent && !iter && !lazy && holds != Some(Std::PollFn) { closures.leaked = closures.leaked.or(Some(ty)); } continue; @@ -2077,6 +2089,27 @@ fn mapping<'tcx>( false => Expr::rt("sliceSort", values), } } + // By `sort_unstable` of each key `f` makes paired with its index, of the smallest + // type std picks by the pairs' sizes, `f` dropped once it made them, and then the + // keys dropped. + ("slice", "sort_by_cached_key") => { + let (elem, key) = (targ(gargs, 0), targ(gargs, 1)); + let mut values = args.into_iter(); + let s = elements(values.next()?, Ty::new_slice(tcx, elem)); + let f = values.next()?; + let types = &tcx.types; + let pair = |index: Ty<'tcx>| Ty::new_tup(tcx, &[key, index]); + let lt = super::collections::test_fn(b, pair(types.usize), "lt", span); + let sizes = [types.u8, types.u16, types.u32, types.usize].map(|i| super::iter::size_of(b, pair(i), span)); + let [_, freeze] = sort_of(b, pair(types.usize), span); + let copy = Expr::lit(b.t.is_copy(key).to_string()); + let owns = Expr::lit(b.t.drops(targ(gargs, 2)).to_string()); + let drop = b.t.dropper(key, span); + Expr::rt( + "sliceSortByCachedKey", + super::iter::tail(vec![s, f, lt, Expr::Array(sizes.into()), freeze, copy], vec![owns, drop]), + ) + } // Whether each element and the next are in order, as `sort` would leave them: by // `PartialOrd::le` in std's chunks, or as the slice's iterator's `is_sorted_by` and // `is_sorted_by_key` test them, which std's are. diff --git a/ts/src/lower/mir/call.rs b/ts/src/lower/mir/call.rs index 02d351d92..4f02299ff 100644 --- a/ts/src/lower/mir/call.rs +++ b/ts/src/lower/mir/call.rs @@ -384,7 +384,8 @@ impl<'m, 'b, 'a, 'tcx> Fx<'m, 'b, 'a, 'tcx> { | ("Arc" | "Rc", "get_mut" | "make_mut") | ("Mutex" | "RwLock" | "RefCell" | "OnceCell" | "OnceLock", "get_mut") | ("RefMut", "leak") - | ("RefCell", "undo_leak") + | ("RefCell", "undo_leak" | "replace_with") + | ("Iterator", "scan") | ( "RefMut" | "MutexGuard" | "MappedMutexGuard" | "RwLockWriteGuard" | "MappedRwLockWriteGuard", "map" | "filter_map" | "try_map" | "map_split", diff --git a/ts/src/lower/task.rs b/ts/src/lower/task.rs index 09a6b7d82..312a86663 100644 --- a/ts/src/lower/task.rs +++ b/ts/src/lower/task.rs @@ -273,6 +273,11 @@ pub fn call<'tcx>( ("MutexGuard" | "MappedMutexGuard", "map" | "filter_map") => guard_map(b, call, name, "mutex", args, out), ("Ref", "clone") => Expr::rt("refClone", args), ("RefCell", "replace") => Expr::rt("refCellReplace", args), + // With the value's place where JS would copy it. + ("RefCell", "replace_with") => { + let copied = b.t.needs_place(call.args.type_at(0)); + Expr::rt("refCellReplaceWith", super::iter::tail(args, vec![Expr::lit(copied.to_string())])) + } ("RefCell", "take") => { let ty = call.args.type_at(0); let f = super::collections::trait_fn(tcx, "Default", "default"); @@ -314,6 +319,7 @@ pub fn call<'tcx>( } ("Atomic", _) => return atomic(b, call, name, args), ("LazyCell" | "LazyLock", "force") => first(args).member("force").call(vec![]), + ("LazyCell" | "LazyLock", "new") => Expr::New(Box::new(Expr::Rt(owner.into())), args), ("OnceCell" | "OnceLock", _) => return once(b, call, name, args), // A `OnceLock` of `true`, which nothing poisons, as a panic aborts. ("Once", "new") => once_unrun(), @@ -513,6 +519,11 @@ fn cell<'tcx>( "get" => b.t.copied(first(args).member("v"), ty, call.span), "into_inner" => first(args).member("v"), "replace" => Expr::rt("cellReplace", args), + // With what copies the value where JS would share it. + "update" => { + let copy = b.t.copy_fn(ty, call.span); + Expr::rt("cellUpdate", args.into_iter().chain(copy).collect()) + } // With what drops the value it replaces. "set" => { let Some(droppers) = b.t.droppers([ty], call.span) else { diff --git a/ts/tests/task.ts b/ts/tests/task.ts index 66f195e66..691c9097e 100644 --- a/ts/tests/task.ts +++ b/ts/tests/task.ts @@ -57,6 +57,7 @@ export interface Fixture { cells(log: Log, id: number, arg: number): void; folded(log: Log, id: number, arg: number): void; rfolded(log: Log, id: number, arg: number): void; + called(log: Log, id: number, arg: number): void; inside(log: Log, id: number, arg: number): void; released(log: Log, id: number, arg: number): void; flattened(log: Log, id: number, arg: number): void; @@ -310,6 +311,7 @@ export const steps: [string, (r: Run, arg: number) => void][] = [ ["cells", (r, arg) => r.f.drops.cells(r.log, 1000 * r.exec.tasks.length, arg)], ["folded", (r, arg) => r.f.drops.folded(r.log, 1000 * r.exec.tasks.length, arg)], ["rfolded", (r, arg) => r.f.drops.rfolded(r.log, 1000 * r.exec.tasks.length, arg)], + ["called", (r, arg) => r.f.drops.called(r.log, 1000 * r.exec.tasks.length, arg)], [ "watch", (r, arg) => { @@ -430,6 +432,7 @@ export const cases: Uint8Array[] = [ // Each scenario of adaptors' closures that drop, folded either way. ...Array.from({ length: 42 }, (_, arg) => script(["folded", arg])), ...Array.from({ length: 18 }, (_, arg) => script(["rfolded", arg])), + ...Array.from({ length: 12 }, (_, arg) => script(["called", arg])), // Where std drops values inside its iterators and formatting. ...[...Array.from({ length: 10 }, (_, arg) => arg), 19, 29].map((arg) => script(["inside", arg])), // Where std drops a closure given to a consumer or an entry. From 85aa1aadb0acc038325343d82cd1501a512c811c Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 19:26:03 -0800 Subject: [PATCH 13/23] test(ts): scan of items whose None is rt.None, now translated, in lang Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/lang/expected/core/bool.ts | 7 + ts/fixtures/lang/expected/iters.ts | 25 +- ts/fixtures/lang/src/iters.rs | 14 + ts/fixtures/reject/census.md | 1341 ++++++++++++------------ ts/fixtures/reject/expected.txt | 500 +++++---- ts/fixtures/reject/src/lib.rs | 12 - ts/fixtures/reject/ts.toml | 2 - 7 files changed, 955 insertions(+), 946 deletions(-) diff --git a/ts/fixtures/lang/expected/core/bool.ts b/ts/fixtures/lang/expected/core/bool.ts index 271248e07..d1891b154 100644 --- a/ts/fixtures/lang/expected/core/bool.ts +++ b/ts/fixtures/lang/expected/core/bool.ts @@ -7,6 +7,13 @@ import type * as Hop from "../keys.Hop.ts"; import type * as Way from "../keys.Way.ts"; import type * as Void from "../shapes.Void.ts"; +export function thenSome$185ufyt(self: boolean, t: rt.u8 | undefined): rt.u8 | undefined | rt.None { + if (!self) { + return rt.None; + } + return t; +} + export function thenSome$0ztng9q(self: boolean, t: rt.Result): rt.Result | undefined { if (!self) { return undefined; diff --git a/ts/fixtures/lang/expected/iters.ts b/ts/fixtures/lang/expected/iters.ts index b58cf3c3b..2c8d8c319 100644 --- a/ts/fixtures/lang/expected/iters.ts +++ b/ts/fixtures/lang/expected/iters.ts @@ -2,7 +2,7 @@ import * as rt from "./rt.ts"; import { copy$iters_Bumped, copy$tuple2_u8_u8 } from "./lib.ts"; -import { thenSome$0d5am30, thenSome$0b23a33 } from "./core/bool.ts"; +import { thenSome$185ufyt, thenSome$0d5am30, thenSome$0b23a33, thenSome$1j8foe9 } from "./core/bool.ts"; import { unwrapOr$0k15iai as option_unwrapOr$0k15iai, unwrapOr$00uis1j as option_unwrapOr$00uis1j, unwrapOr$1tvry1i as option_unwrapOr$1tvry1i, unwrapOr$0r2bmpr as option_unwrapOr$0r2bmpr, unwrapOr$14m5xjm as option_unwrapOr$14m5xjm, unwrapOrDefault$165pyh5 as option_unwrapOrDefault$165pyh5, unwrapOrDefault$0wx44sw as option_unwrapOrDefault$0wx44sw, map$1uo1d4o as option_map$1uo1d4o, map$1httady as option_map$1httady, map$0p22lts as option_map$0p22lts, map$0of9gds as option_map$0of9gds, map$1c7zybz as option_map$1c7zybz, map$0cs071d as option_map$0cs071d, mapOr$0lcrgk1 as option_mapOr$0lcrgk1, mapOr$1kiffmd as option_mapOr$1kiffmd, mapOr$1a3irjf as option_mapOr$1a3irjf, mapOr$0sl5app as option_mapOr$0sl5app, mapOr$0atjiti as option_mapOr$0atjiti, mapOr$0okqj9y as option_mapOr$0okqj9y, mapOr$1e4a1e0 as option_mapOr$1e4a1e0, mapOr$1lznlgz as option_mapOr$1lznlgz, mapOr$0tmtgfi as option_mapOr$0tmtgfi, mapOr$0ev76sb as option_mapOr$0ev76sb, mapOr$1surhce as option_mapOr$1surhce, mapOr$1t0muvr as option_mapOr$1t0muvr, mapOr$02k4ito as option_mapOr$02k4ito, mapOr$0a96v80 as option_mapOr$0a96v80, mapOr$0mmpeqx as option_mapOr$0mmpeqx, mapOr$1vjqo89 as option_mapOr$1vjqo89, mapOr$1h04da8 as option_mapOr$1h04da8, mapOr$0f73bb7 as option_mapOr$0f73bb7, mapOr$06gg5x7 as option_mapOr$06gg5x7, mapOr$1dmz9kd as option_mapOr$1dmz9kd, mapOr$1sxa8ki as option_mapOr$1sxa8ki, asDeref$0w8at8i as option_asDeref$0w8at8i, filter$0v80fk8 } from "./core/option.ts"; import { unwrapOr$01jdcm7 as result_unwrapOr$01jdcm7 } from "./core/result.ts"; import * as Badge from "./iters.Badge.ts"; @@ -1500,8 +1500,8 @@ export function optionItems(data: rt.ByteSlice, out: rt.ByteVec): void { if (_111 === rt.DONE) { break; } - rt.byteVecPush(out, option_mapOr$1sxa8ki(_111, 167, (a4: rt.u32): rt.u8 => { - return a4 & 0xff; + rt.byteVecPush(out, option_mapOr$1sxa8ki(_111, 167, (a5: rt.u32): rt.u8 => { + return a5 & 0xff; })); } rt.byteVecPush(out, present$unit(units)); @@ -1550,11 +1550,24 @@ export function optionItems(data: rt.ByteSlice, out: rt.ByteVec): void { break; } } + let sum: rt.u8 = 0; + for (const _179 of rt.iterToArray(rt.iterScan(rt.iterSlice(rt.byteSliceView(data)), rt.place(() => sum, (value) => sum = value), (n: rt.Place>, _310: rt.u8): rt.u8 | undefined | rt.None => { + const b9: rt.u8 = _310; + const _55: rt.u8 = rt.u8WrappingAdd(n.v.v, b9); + n.v.v = _55; + return thenSome$185ufyt(rt.u8Rem(b9, 5) !== 4, thenSome$0d5am30(rt.u8Rem(b9, 2) === 0, n.v.v)); + }, true, undefined, rt.None), "next", 2)) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(_179, 173)); + } + rt.byteVecPush(out, sum); + rt.byteVecPush(out, rt.iterCount(rt.iterScan(rt.iterSlice(rt.byteSliceView(data)), undefined, (_25: rt.Place, _311: rt.u8): undefined | rt.None => { + return thenSome$1j8foe9(rt.u8Rem(_311, 5) !== 4, undefined); + }, true, undefined, rt.None)) & 0xff); const weighed: Weighed.Weighed = { inner: rt.iterSlice(rt.byteSliceView(data)), weight: 0 }; while (true) { - const _174: rt.u8 | rt.Done = Weighed.next$iter_Iterator(weighed); - if (_174 !== rt.DONE) { - rt.byteVecPush(out, _174); + const _194: rt.u8 | rt.Done = Weighed.next$iter_Iterator(weighed); + if (_194 !== rt.DONE) { + rt.byteVecPush(out, _194); } else { break; } diff --git a/ts/fixtures/lang/src/iters.rs b/ts/fixtures/lang/src/iters.rs index 44e1756a0..9ff453a71 100644 --- a/ts/fixtures/lang/src/iters.rs +++ b/ts/fixtures/lang/src/iters.rs @@ -827,6 +827,20 @@ pub fn option_items(data: &[u8], out: &mut Vec) { while let Some(found) = first_present(&mut it) { out.push(found); } + // `scan` of items whose `None` is `rt.None`, each ending where its closure's `None` is. + let mut sum = 0u8; + let scanned: Vec> = data + .iter() + .scan(&mut sum, |n, &b| { + **n = n.wrapping_add(b); + (b % 5 != 4).then_some((b % 2 == 0).then_some(**n)) + }) + .collect(); + for a in scanned { + out.push(a.unwrap_or(0xad)); + } + out.push(sum); + out.push(data.iter().scan((), |_, &b| (b % 5 != 4).then_some(())).count() as u8); let mut weighed = Weighed { inner: data.iter(), weight: 0, diff --git a/ts/fixtures/reject/census.md b/ts/fixtures/reject/census.md index 3fc3e1b6a..cbef122ef 100644 --- a/ts/fixtures/reject/census.md +++ b/ts/fixtures/reject/census.md @@ -1,104 +1,103 @@ # Census of `reject-fixture` -- Refusals: 264 -- Function instances: 316 +- Refusals: 262 +- Function instances: 313 - Generic functions no instance reached, lowered over their type parameters: 14 ## By construct | Count | Construct | First | | ---: | --- | --- | -| 50 | a raw pointer to `_` in `_`, which the crate may put another object in place of | fixtures/reject/src/lib.rs:543:10 | -| 23 | a raw pointer to `_` in a variable assigned again while it may point there | fixtures/reject/src/lib.rs:551:10 | -| 20 | unsupported call to `_` | fixtures/reject/src/lib.rs:164:8 | -| 15 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | fixtures/reject/src/lib.rs:1272:33 | -| 15 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | fixtures/reject/src/lib.rs:1590:18 | -| 6 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | fixtures/reject/src/lib.rs:490:27 | -| 5 | `_` with a mutable reference to a value JS copies, which its mapping would copy | fixtures/reject/src/lib.rs:1170:22 | -| 5 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | fixtures/reject/src/lib.rs:614:10 | -| 5 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | fixtures/reject/src/lib.rs:2281:7 | -| 4 | a variant of `_`, which is not supported: either is the same JS string | fixtures/reject/src/lib.rs:267:2 | -| 4 | an assignment through a reference to `_` | fixtures/reject/src/lib.rs:83:2 | +| 50 | a raw pointer to `_` in `_`, which the crate may put another object in place of | fixtures/reject/src/lib.rs:531:10 | +| 23 | a raw pointer to `_` in a variable assigned again while it may point there | fixtures/reject/src/lib.rs:539:10 | +| 20 | unsupported call to `_` | fixtures/reject/src/lib.rs:157:8 | +| 15 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | fixtures/reject/src/lib.rs:1260:33 | +| 15 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | fixtures/reject/src/lib.rs:1578:18 | +| 6 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | fixtures/reject/src/lib.rs:478:27 | +| 5 | `_` with a mutable reference to a value JS copies, which its mapping would copy | fixtures/reject/src/lib.rs:1158:22 | +| 5 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | fixtures/reject/src/lib.rs:602:10 | +| 5 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | fixtures/reject/src/lib.rs:2269:7 | +| 4 | a variant of `_`, which is not supported: either is the same JS string | fixtures/reject/src/lib.rs:255:2 | +| 4 | an assignment through a reference to `_` | fixtures/reject/src/lib.rs:76:2 | | 3 | `_` of `_`, whose `clone_from` is its own, which is not supported yet | fixtures/reject/src/lib.rs:21:4 | -| 3 | a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as | fixtures/reject/src/lib.rs:503:3 | -| 3 | a copy between pointers to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:1645:3 | -| 3 | a copy of a closure that changes what it captured | fixtures/reject/src/lib.rs:182:14 | -| 3 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | fixtures/reject/src/lib.rs:2201:2 | -| 3 | an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:1648:56 | -| 3 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | fixtures/reject/src/lib.rs:2410:18 | -| 3 | replacing the value behind a reference to `_` | fixtures/reject/src/lib.rs:91:2 | +| 3 | a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as | fixtures/reject/src/lib.rs:491:3 | +| 3 | a copy between pointers to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:1633:3 | +| 3 | a copy of a closure that changes what it captured | fixtures/reject/src/lib.rs:175:14 | +| 3 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | fixtures/reject/src/lib.rs:2189:2 | +| 3 | an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:1636:56 | +| 3 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | fixtures/reject/src/lib.rs:2398:18 | +| 3 | replacing the value behind a reference to `_` | fixtures/reject/src/lib.rs:84:2 | | 3 | unsupported type `_` | fixtures/reject/src/lib.rs:7:14 | | 2 | `_` is not supported: its `None` and `Some` would both be `rt.None` | fixtures/reject/src/lib.rs:16:15 | -| 2 | `_` of `_`, whose `None` is `rt.None`, which is not supported yet | fixtures/reject/src/lib.rs:37:4 | | 2 | `_`, a trait object of another crate's trait, which is not supported yet | fixtures/reject/src/lib.rs:11:16 | -| 2 | `_`, a trait object of the generic trait `_`, which is not supported yet | fixtures/reject/src/lib.rs:393:23 | -| 2 | `offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2160:5 | -| 2 | `offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2162:24 | -| 2 | a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2185:18 | -| 2 | a raw or mutable slice of a byte in no array of bytes | fixtures/reject/src/lib.rs:2171:12 | -| 2 | a raw pointer to a place of `()`, which has no address of its own | fixtures/reject/src/lib.rs:663:15 | -| 2 | an upcast from `_` to `_`, which is not supported yet | fixtures/reject/src/lib.rs:461:32 | -| 2 | comparing pointers to `_`, each a place JS makes of its own | fixtures/reject/src/lib.rs:531:2 | -| 2 | overriding `_` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet | fixtures/reject/src/lib.rs:2458:3 | -| 2 | passing `_`, which drops, to `_`, which is not supported yet | fixtures/reject/src/lib.rs:262:4 | -| 2 | unsupported type `_` from another crate | fixtures/reject/src/lib.rs:374:32 | -| 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | fixtures/reject/src/lib.rs:696:2 | -| 1 | `BufMut::put` of `_` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported | fixtures/reject/src/lib.rs:330:2 | -| 1 | `BufMut::put` of `_` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported | fixtures/reject/src/lib.rs:325:2 | -| 1 | `Bytes::from_owner` of `_`, which would drop with the last clone of what it makes, which is not supported | fixtures/reject/src/lib.rs:310:2 | -| 1 | `Extend` of `_` by `_`, whose `_` of `_` is not supported yet | fixtures/reject/src/lib.rs:1207:31 | -| 1 | `Pointer` formatting, as in `{:p}`, is not supported | fixtures/reject/src/lib.rs:49:2 | -| 1 | `_` is not supported: its `Pending` and `Ready` would both be `rt.OuterPending` | fixtures/reject/src/lib.rs:72:20 | +| 2 | `_`, a trait object of the generic trait `_`, which is not supported yet | fixtures/reject/src/lib.rs:381:23 | +| 2 | `offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2148:5 | +| 2 | `offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2150:24 | +| 2 | a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2173:18 | +| 2 | a raw or mutable slice of a byte in no array of bytes | fixtures/reject/src/lib.rs:2159:12 | +| 2 | a raw pointer to a place of `()`, which has no address of its own | fixtures/reject/src/lib.rs:651:15 | +| 2 | an upcast from `_` to `_`, which is not supported yet | fixtures/reject/src/lib.rs:449:32 | +| 2 | comparing pointers to `_`, each a place JS makes of its own | fixtures/reject/src/lib.rs:519:2 | +| 2 | overriding `_` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet | fixtures/reject/src/lib.rs:2446:3 | +| 2 | passing `_`, which drops, to `_`, which is not supported yet | fixtures/reject/src/lib.rs:250:4 | +| 2 | unsupported type `_` from another crate | fixtures/reject/src/lib.rs:362:32 | +| 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | fixtures/reject/src/lib.rs:684:2 | +| 1 | `BufMut::put` of `_` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported | fixtures/reject/src/lib.rs:318:2 | +| 1 | `BufMut::put` of `_` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported | fixtures/reject/src/lib.rs:313:2 | +| 1 | `Bytes::from_owner` of `_`, which would drop with the last clone of what it makes, which is not supported | fixtures/reject/src/lib.rs:298:2 | +| 1 | `Extend` of `_` by `_`, whose `_` of `_` is not supported yet | fixtures/reject/src/lib.rs:1195:31 | +| 1 | `Pointer` formatting, as in `{:p}`, is not supported | fixtures/reject/src/lib.rs:42:2 | +| 1 | `_` is not supported: its `Pending` and `Ready` would both be `rt.OuterPending` | fixtures/reject/src/lib.rs:65:20 | | 1 | `_` is not supported: its field `_` is `_`, typed `_`, whose `None` would be `rt.None` as `_` | fixtures/reject/src/lib.rs:31:2 | -| 1 | `_` is not supported: its field `_` is `_`, typed `_`, whose `Pending` would be `rt.OuterPending` as `_` | fixtures/reject/src/lib.rs:431:2 | -| 1 | `_` of `_` by `_`, which is not supported yet | fixtures/reject/src/lib.rs:211:6 | -| 1 | `_` of `_`, which is not supported yet | fixtures/reject/src/lib.rs:473:4 | -| 1 | `_`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported | fixtures/reject/src/lib.rs:319:6 | -| 1 | `clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet | fixtures/reject/src/lib.rs:2053:4 | -| 1 | `collect` of `_`, which sorts by `_`'s own `Ord`, of entries that drop, which is not supported yet | fixtures/reject/src/lib.rs:890:22 | -| 1 | `fmt::Arguments` with a placeholder, or not made in place, written to `_`'s own `fmt::Write`, which is not supported yet: std splits what a placeholder writes into `write_str` calls the runtime does not make | fixtures/reject/src/lib.rs:55:10 | -| 1 | `offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2165:21 | -| 1 | `offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2164:20 | -| 1 | `offset_from` of pointers to `()`, which has no bytes | fixtures/reject/src/lib.rs:2107:13 | -| 1 | `offset_from` of pointers to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2100:36 | -| 1 | a cast from `_` to `_` | fixtures/reject/src/lib.rs:68:2 | -| 1 | a coercion to `_` | fixtures/reject/src/lib.rs:234:2 | -| 1 | a coercion to `_`, which is not supported yet | fixtures/reject/src/lib.rs:420:30 | -| 1 | a constant of type `_` | fixtures/reject/src/lib.rs:2301:34 | -| 1 | a constant of type `_`, a pointer into memory translation can't name | fixtures/reject/src/lib.rs:713:3 | -| 1 | a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2183:3 | -| 1 | a dangling pointer to `_`, a value of no bytes made of more than structs and tuples | fixtures/reject/src/lib.rs:672:11 | -| 1 | a future of `_`, which can be `rt.Pending`, as the future's own `Pending` is | fixtures/reject/src/lib.rs:77:34 | -| 1 | a mapped guard of `_`, which JS can't write in place | fixtures/reject/src/lib.rs:2087:10 | -| 1 | a mutable reference into a `Result`'s payload, passed on or kept | fixtures/reject/src/lib.rs:298:12 | -| 1 | a mutable static, which any code may write | fixtures/reject/src/lib.rs:61:11 | -| 1 | a pointer into `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2094:12 | -| 1 | a pointer into an array of `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2099:30 | -| 1 | a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2187:27 | -| 1 | a pointer's address, which JS has no counterpart of | fixtures/reject/src/lib.rs:495:17 | -| 1 | a printable type must implement `Display` or `Debug` | fixtures/reject/src/lib.rs:64:1 | -| 1 | a raw pointer to `_` behind a reference, which is the object and not where it is kept | fixtures/reject/src/lib.rs:512:10 | -| 1 | a reference through which a raw pointer may be made into `_` in an element, a payload, or a union field, which is not supported yet | fixtures/reject/src/lib.rs:1299:11 | +| 1 | `_` is not supported: its field `_` is `_`, typed `_`, whose `Pending` would be `rt.OuterPending` as `_` | fixtures/reject/src/lib.rs:419:2 | +| 1 | `_` of `_` by `_`, which is not supported yet | fixtures/reject/src/lib.rs:199:6 | +| 1 | `_` of `_`, which is not supported yet | fixtures/reject/src/lib.rs:461:4 | +| 1 | `_`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported | fixtures/reject/src/lib.rs:307:6 | +| 1 | `clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet | fixtures/reject/src/lib.rs:2041:4 | +| 1 | `collect` of `_`, which sorts by `_`'s own `Ord`, of entries that drop, which is not supported yet | fixtures/reject/src/lib.rs:878:22 | +| 1 | `fmt::Arguments` with a placeholder, or not made in place, written to `_`'s own `fmt::Write`, which is not supported yet: std splits what a placeholder writes into `write_str` calls the runtime does not make | fixtures/reject/src/lib.rs:48:10 | +| 1 | `offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2153:21 | +| 1 | `offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays | fixtures/reject/src/lib.rs:2152:20 | +| 1 | `offset_from` of pointers to `()`, which has no bytes | fixtures/reject/src/lib.rs:2095:13 | +| 1 | `offset_from` of pointers to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2088:36 | +| 1 | a cast from `_` to `_` | fixtures/reject/src/lib.rs:61:2 | +| 1 | a coercion to `_` | fixtures/reject/src/lib.rs:222:2 | +| 1 | a coercion to `_`, which is not supported yet | fixtures/reject/src/lib.rs:408:30 | +| 1 | a constant of type `_` | fixtures/reject/src/lib.rs:2289:34 | +| 1 | a constant of type `_`, a pointer into memory translation can't name | fixtures/reject/src/lib.rs:701:3 | +| 1 | a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2171:3 | +| 1 | a dangling pointer to `_`, a value of no bytes made of more than structs and tuples | fixtures/reject/src/lib.rs:660:11 | +| 1 | a future of `_`, which can be `rt.Pending`, as the future's own `Pending` is | fixtures/reject/src/lib.rs:70:34 | +| 1 | a mapped guard of `_`, which JS can't write in place | fixtures/reject/src/lib.rs:2075:10 | +| 1 | a mutable reference into a `Result`'s payload, passed on or kept | fixtures/reject/src/lib.rs:286:12 | +| 1 | a mutable static, which any code may write | fixtures/reject/src/lib.rs:54:11 | +| 1 | a pointer into `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2082:12 | +| 1 | a pointer into an array of `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2087:30 | +| 1 | a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2175:27 | +| 1 | a pointer's address, which JS has no counterpart of | fixtures/reject/src/lib.rs:483:17 | +| 1 | a printable type must implement `Display` or `Debug` | fixtures/reject/src/lib.rs:57:1 | +| 1 | a raw pointer to `_` behind a reference, which is the object and not where it is kept | fixtures/reject/src/lib.rs:500:10 | +| 1 | a reference through which a raw pointer may be made into `_` in an element, a payload, or a union field, which is not supported yet | fixtures/reject/src/lib.rs:1287:11 | | 1 | a scalar constant of type `_` | fixtures/reject/src/lib.rs:8:2 | -| 1 | a slice from a pointer to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2098:11 | -| 1 | a slice of `()`, which has no bytes, from a pointer | fixtures/reject/src/lib.rs:2107:39 | -| 1 | a slice of one byte's place, which a byte slice can view only in an array of bytes | fixtures/reject/src/lib.rs:2195:2 | -| 1 | a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2186:6 | -| 1 | a trait object of `_`, which is not supported yet | fixtures/reject/src/lib.rs:410:26 | +| 1 | a slice from a pointer to `_`, which JS keeps as an object that knows no array it is in | fixtures/reject/src/lib.rs:2086:11 | +| 1 | a slice of `()`, which has no bytes, from a pointer | fixtures/reject/src/lib.rs:2095:39 | +| 1 | a slice of one byte's place, which a byte slice can view only in an array of bytes | fixtures/reject/src/lib.rs:2183:2 | +| 1 | a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust | fixtures/reject/src/lib.rs:2174:6 | +| 1 | a trait object of `_`, which is not supported yet | fixtures/reject/src/lib.rs:398:26 | | 1 | arithmetic on `_` | fixtures/reject/src/lib.rs:8:2 | -| 1 | comparing `_` | fixtures/reject/src/lib.rs:1647:41 | -| 1 | comparing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:193:75 | -| 1 | comparing pointers to `_` in an atomic, which JS has no address of | fixtures/reject/src/lib.rs:712:15 | -| 1 | comparing pointers to `_`, which has no bytes and so no address of its own | fixtures/reject/src/lib.rs:663:70 | -| 1 | const generic types are not supported: `_` | fixtures/reject/src/lib.rs:2032:1 | -| 1 | constructing `_` | fixtures/reject/src/lib.rs:285:53 | -| 1 | hashing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:193:75 | -| 1 | hashing `_` by its address, which JS has no counterpart of | fixtures/reject/src/lib.rs:1651:5 | -| 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | fixtures/reject/src/lib.rs:253:16 | -| 1 | overriding `_` with a constant generic over its accumulator or closure, which is not supported yet | fixtures/reject/src/lib.rs:2435:11 | -| 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | fixtures/reject/src/lib.rs:126:3 | -| 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | fixtures/reject/src/lib.rs:150:2 | -| 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | fixtures/reject/src/lib.rs:517:1 | +| 1 | comparing `_` | fixtures/reject/src/lib.rs:1635:41 | +| 1 | comparing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:181:75 | +| 1 | comparing pointers to `_` in an atomic, which JS has no address of | fixtures/reject/src/lib.rs:700:15 | +| 1 | comparing pointers to `_`, which has no bytes and so no address of its own | fixtures/reject/src/lib.rs:651:70 | +| 1 | const generic types are not supported: `_` | fixtures/reject/src/lib.rs:2020:1 | +| 1 | constructing `_` | fixtures/reject/src/lib.rs:273:53 | +| 1 | hashing `_` as a key, which is not supported yet | fixtures/reject/src/lib.rs:181:75 | +| 1 | hashing `_` by its address, which JS has no counterpart of | fixtures/reject/src/lib.rs:1639:5 | +| 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | fixtures/reject/src/lib.rs:241:16 | +| 1 | overriding `_` with a constant generic over its accumulator or closure, which is not supported yet | fixtures/reject/src/lib.rs:2423:11 | +| 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | fixtures/reject/src/lib.rs:119:3 | +| 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | fixtures/reject/src/lib.rs:143:2 | +| 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | fixtures/reject/src/lib.rs:505:1 | ## By API @@ -106,626 +105,625 @@ The type or module each refused type or path belongs to. | Count | API | First | | ---: | --- | --- | -| 39 | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:622:15 | -| 27 | `(u32, u32)` | fixtures/reject/src/lib.rs:543:10 | -| 15 | `u32` | fixtures/reject/src/lib.rs:490:27 | -| 11 | `(u8, u8)` | fixtures/reject/src/lib.rs:1207:31 | -| 9 | `Iterator` | fixtures/reject/src/lib.rs:37:4 | -| 9 | `[u8; 4]` | fixtures/reject/src/lib.rs:410:26 | -| 8 | `u8` | fixtures/reject/src/lib.rs:211:6 | +| 39 | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:610:15 | +| 27 | `(u32, u32)` | fixtures/reject/src/lib.rs:531:10 | +| 15 | `u32` | fixtures/reject/src/lib.rs:478:27 | +| 11 | `(u8, u8)` | fixtures/reject/src/lib.rs:1195:31 | +| 9 | `[u8; 4]` | fixtures/reject/src/lib.rs:398:26 | +| 8 | `u8` | fixtures/reject/src/lib.rs:199:6 | +| 7 | `Iterator` | fixtures/reject/src/lib.rs:119:3 | | 6 | `f16` | fixtures/reject/src/lib.rs:7:14 | -| 6 | `std::borrow::Cow` | fixtures/reject/src/lib.rs:267:2 | -| 5 | `Gap` | fixtures/reject/src/lib.rs:843:10 | -| 5 | `Option` | fixtures/reject/src/lib.rs:16:15 | -| 5 | `i32` | fixtures/reject/src/lib.rs:2281:7 | -| 4 | `std::pin::Pin` | fixtures/reject/src/lib.rs:91:2 | -| 4 | `std::str` | fixtures/reject/src/lib.rs:375:4 | -| 3 | `Mid` | fixtures/reject/src/lib.rs:1290:34 | -| 3 | `Outer` | fixtures/reject/src/lib.rs:1290:34 | +| 6 | `std::borrow::Cow` | fixtures/reject/src/lib.rs:255:2 | +| 5 | `Gap` | fixtures/reject/src/lib.rs:831:10 | +| 5 | `i32` | fixtures/reject/src/lib.rs:2269:7 | +| 4 | `std::pin::Pin` | fixtures/reject/src/lib.rs:84:2 | +| 4 | `std::str` | fixtures/reject/src/lib.rs:363:4 | +| 3 | `Mid` | fixtures/reject/src/lib.rs:1278:34 | +| 3 | `Option` | fixtures/reject/src/lib.rs:16:15 | +| 3 | `Outer` | fixtures/reject/src/lib.rs:1278:34 | | 3 | `Reused` | fixtures/reject/src/lib.rs:21:4 | -| 3 | `dyn std::any::Any` | fixtures/reject/src/lib.rs:461:32 | -| 3 | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2301:2 | -| 3 | `std::vec::Vec` | fixtures/reject/src/lib.rs:253:16 | -| 3 | `{closure}` | fixtures/reject/src/lib.rs:262:4 | -| 2 | `(u16, u16)` | fixtures/reject/src/lib.rs:1111:31 | -| 2 | `Counted` | fixtures/reject/src/lib.rs:325:2 | -| 2 | `InArray` | fixtures/reject/src/lib.rs:1237:9 | -| 2 | `InPayload` | fixtures/reject/src/lib.rs:1249:9 | -| 2 | `InTuple` | fixtures/reject/src/lib.rs:1241:9 | -| 2 | `InWritten` | fixtures/reject/src/lib.rs:1261:9 | -| 2 | `Inside` | fixtures/reject/src/lib.rs:1780:20 | -| 2 | `Poll` | fixtures/reject/src/lib.rs:72:20 | -| 2 | `Scaled` | fixtures/reject/src/lib.rs:393:23 | -| 2 | `[u32; 3]` | fixtures/reject/src/lib.rs:2125:10 | -| 2 | `[u8; 2]` | fixtures/reject/src/lib.rs:1661:37 | -| 2 | `[u8; 3]` | fixtures/reject/src/lib.rs:1661:15 | -| 2 | `dyn Keyed` | fixtures/reject/src/lib.rs:461:32 | -| 2 | `dyn Scaled` | fixtures/reject/src/lib.rs:393:23 | +| 3 | `dyn std::any::Any` | fixtures/reject/src/lib.rs:449:32 | +| 3 | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2289:2 | +| 3 | `std::vec::Vec` | fixtures/reject/src/lib.rs:241:16 | +| 3 | `{closure}` | fixtures/reject/src/lib.rs:250:4 | +| 2 | `(u16, u16)` | fixtures/reject/src/lib.rs:1099:31 | +| 2 | `Counted` | fixtures/reject/src/lib.rs:313:2 | +| 2 | `InArray` | fixtures/reject/src/lib.rs:1225:9 | +| 2 | `InPayload` | fixtures/reject/src/lib.rs:1237:9 | +| 2 | `InTuple` | fixtures/reject/src/lib.rs:1229:9 | +| 2 | `InWritten` | fixtures/reject/src/lib.rs:1249:9 | +| 2 | `Inside` | fixtures/reject/src/lib.rs:1768:20 | +| 2 | `Poll` | fixtures/reject/src/lib.rs:65:20 | +| 2 | `Scaled` | fixtures/reject/src/lib.rs:381:23 | +| 2 | `[u32; 3]` | fixtures/reject/src/lib.rs:2113:10 | +| 2 | `[u8; 2]` | fixtures/reject/src/lib.rs:1649:37 | +| 2 | `[u8; 3]` | fixtures/reject/src/lib.rs:1649:15 | +| 2 | `dyn Keyed` | fixtures/reject/src/lib.rs:449:32 | +| 2 | `dyn Scaled` | fixtures/reject/src/lib.rs:381:23 | | 2 | `dyn std::iter::Iterator` | fixtures/reject/src/lib.rs:11:16 | | 2 | `slice` | fixtures/reject/src/lib.rs:21:4 | -| 2 | `std::any::TypeId` | fixtures/reject/src/lib.rs:473:2 | -| 2 | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:193:75 | -| 2 | `std::collections::LinkedList` | fixtures/reject/src/lib.rs:2052:4 | -| 2 | `std::mem::MaybeUninit` | fixtures/reject/src/lib.rs:857:19 | -| 2 | `std::ops::Range` | fixtures/reject/src/lib.rs:164:8 | -| 2 | `std::option::Option` | fixtures/reject/src/lib.rs:305:2 | -| 2 | `std::sync::Arc` | fixtures/reject/src/lib.rs:234:2 | -| 2 | `std::sync::MutexGuard` | fixtures/reject/src/lib.rs:83:2 | -| 2 | `std::vec::IntoIter` | fixtures/reject/src/lib.rs:370:17 | -| 1 | `(Dropped, (u8, u8))` | fixtures/reject/src/lib.rs:2346:2 | -| 1 | `([Cloned; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2330:2 | -| 1 | `([Greatest; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2364:13 | -| 1 | `([Touched; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2395:2 | -| 1 | `(std::vec::Vec, Tens)` | fixtures/reject/src/lib.rs:1207:31 | -| 1 | `(u16, ByKeyReplace)` | fixtures/reject/src/lib.rs:1556:55 | -| 1 | `(u16, ByKeySet)` | fixtures/reject/src/lib.rs:1548:51 | -| 1 | `(u16, ByKeyTake)` | fixtures/reject/src/lib.rs:1563:52 | -| 1 | `(u16, ByRefReplace)` | fixtures/reject/src/lib.rs:1532:32 | -| 1 | `(u16, ByRefTake)` | fixtures/reject/src/lib.rs:1540:32 | -| 1 | `(u16, InTuple)` | fixtures/reject/src/lib.rs:1281:33 | -| 1 | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1651:5 | -| 1 | `*mut [u8; 4]` | fixtures/reject/src/lib.rs:1647:41 | -| 1 | `Aliased` | fixtures/reject/src/lib.rs:1055:29 | -| 1 | `Assigned` | fixtures/reject/src/lib.rs:1947:20 | -| 1 | `Bare` | fixtures/reject/src/lib.rs:663:70 | -| 1 | `Batched` | fixtures/reject/src/lib.rs:253:16 | -| 1 | `Behind` | fixtures/reject/src/lib.rs:1686:22 | -| 1 | `Bits` | fixtures/reject/src/lib.rs:517:1 | -| 1 | `Blank` | fixtures/reject/src/lib.rs:696:2 | -| 1 | `Block` | fixtures/reject/src/lib.rs:2032:1 | -| 1 | `ByBox` | fixtures/reject/src/lib.rs:1439:35 | -| 1 | `ByClosure` | fixtures/reject/src/lib.rs:1454:35 | -| 1 | `ByExchanged` | fixtures/reject/src/lib.rs:1500:30 | -| 1 | `ByInstance` | fixtures/reject/src/lib.rs:1480:35 | -| 1 | `ByKeyReplace` | fixtures/reject/src/lib.rs:1556:55 | -| 1 | `ByKeySet` | fixtures/reject/src/lib.rs:1548:51 | -| 1 | `ByKeyTake` | fixtures/reject/src/lib.rs:1563:52 | -| 1 | `ByObject` | fixtures/reject/src/lib.rs:1467:35 | -| 1 | `ByRead` | fixtures/reject/src/lib.rs:1390:35 | -| 1 | `ByRefReplace` | fixtures/reject/src/lib.rs:1532:32 | -| 1 | `ByRefTake` | fixtures/reject/src/lib.rs:1540:32 | -| 1 | `ByReplace` | fixtures/reject/src/lib.rs:1428:35 | -| 1 | `BySwap` | fixtures/reject/src/lib.rs:1416:35 | -| 1 | `BySwapped` | fixtures/reject/src/lib.rs:1489:76 | -| 1 | `ByWrite` | fixtures/reject/src/lib.rs:1403:35 | -| 1 | `BytesMut` | fixtures/reject/src/lib.rs:319:6 | -| 1 | `Called` | fixtures/reject/src/lib.rs:1021:28 | -| 1 | `Chosen` | fixtures/reject/src/lib.rs:1841:17 | -| 1 | `Clone` | fixtures/reject/src/lib.rs:2206:4 | -| 1 | `Closed` | fixtures/reject/src/lib.rs:2013:15 | -| 1 | `Compared` | fixtures/reject/src/lib.rs:1808:22 | -| 1 | `Copied` | fixtures/reject/src/lib.rs:1111:31 | -| 1 | `Deep` | fixtures/reject/src/lib.rs:1722:18 | -| 1 | `Deeper` | fixtures/reject/src/lib.rs:1973:22 | -| 1 | `DoubleEndedIterator` | fixtures/reject/src/lib.rs:150:2 | -| 1 | `Dynamic` | fixtures/reject/src/lib.rs:1997:20 | -| 1 | `Enclosing` | fixtures/reject/src/lib.rs:1825:22 | -| 1 | `Escaped` | fixtures/reject/src/lib.rs:1007:43 | -| 1 | `Halves` | fixtures/reject/src/lib.rs:2268:16 | -| 1 | `HashMap` | fixtures/reject/src/lib.rs:211:6 | -| 1 | `Hits` | fixtures/reject/src/lib.rs:655:21 | -| 1 | `InField` | fixtures/reject/src/lib.rs:1253:9 | -| 1 | `InGeneric` | fixtures/reject/src/lib.rs:1257:9 | -| 1 | `InNested` | fixtures/reject/src/lib.rs:1245:9 | -| 1 | `Lane` | fixtures/reject/src/lib.rs:807:19 | -| 1 | `Lanes` | fixtures/reject/src/lib.rs:2127:10 | -| 1 | `Loaded` | fixtures/reject/src/lib.rs:1077:29 | -| 1 | `Looped` | fixtures/reject/src/lib.rs:1045:26 | -| 1 | `Mapped` | fixtures/reject/src/lib.rs:1122:39 | +| 2 | `std::any::TypeId` | fixtures/reject/src/lib.rs:461:2 | +| 2 | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:181:75 | +| 2 | `std::collections::LinkedList` | fixtures/reject/src/lib.rs:2040:4 | +| 2 | `std::mem::MaybeUninit` | fixtures/reject/src/lib.rs:845:19 | +| 2 | `std::ops::Range` | fixtures/reject/src/lib.rs:157:8 | +| 2 | `std::option::Option` | fixtures/reject/src/lib.rs:293:2 | +| 2 | `std::sync::Arc` | fixtures/reject/src/lib.rs:222:2 | +| 2 | `std::sync::MutexGuard` | fixtures/reject/src/lib.rs:76:2 | +| 2 | `std::vec::IntoIter` | fixtures/reject/src/lib.rs:358:17 | +| 1 | `(Dropped, (u8, u8))` | fixtures/reject/src/lib.rs:2334:2 | +| 1 | `([Cloned; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2318:2 | +| 1 | `([Greatest; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2352:13 | +| 1 | `([Touched; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2383:2 | +| 1 | `(std::vec::Vec, Tens)` | fixtures/reject/src/lib.rs:1195:31 | +| 1 | `(u16, ByKeyReplace)` | fixtures/reject/src/lib.rs:1544:55 | +| 1 | `(u16, ByKeySet)` | fixtures/reject/src/lib.rs:1536:51 | +| 1 | `(u16, ByKeyTake)` | fixtures/reject/src/lib.rs:1551:52 | +| 1 | `(u16, ByRefReplace)` | fixtures/reject/src/lib.rs:1520:32 | +| 1 | `(u16, ByRefTake)` | fixtures/reject/src/lib.rs:1528:32 | +| 1 | `(u16, InTuple)` | fixtures/reject/src/lib.rs:1269:33 | +| 1 | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1639:5 | +| 1 | `*mut [u8; 4]` | fixtures/reject/src/lib.rs:1635:41 | +| 1 | `Aliased` | fixtures/reject/src/lib.rs:1043:29 | +| 1 | `Assigned` | fixtures/reject/src/lib.rs:1935:20 | +| 1 | `Bare` | fixtures/reject/src/lib.rs:651:70 | +| 1 | `Batched` | fixtures/reject/src/lib.rs:241:16 | +| 1 | `Behind` | fixtures/reject/src/lib.rs:1674:22 | +| 1 | `Bits` | fixtures/reject/src/lib.rs:505:1 | +| 1 | `Blank` | fixtures/reject/src/lib.rs:684:2 | +| 1 | `Block` | fixtures/reject/src/lib.rs:2020:1 | +| 1 | `ByBox` | fixtures/reject/src/lib.rs:1427:35 | +| 1 | `ByClosure` | fixtures/reject/src/lib.rs:1442:35 | +| 1 | `ByExchanged` | fixtures/reject/src/lib.rs:1488:30 | +| 1 | `ByInstance` | fixtures/reject/src/lib.rs:1468:35 | +| 1 | `ByKeyReplace` | fixtures/reject/src/lib.rs:1544:55 | +| 1 | `ByKeySet` | fixtures/reject/src/lib.rs:1536:51 | +| 1 | `ByKeyTake` | fixtures/reject/src/lib.rs:1551:52 | +| 1 | `ByObject` | fixtures/reject/src/lib.rs:1455:35 | +| 1 | `ByRead` | fixtures/reject/src/lib.rs:1378:35 | +| 1 | `ByRefReplace` | fixtures/reject/src/lib.rs:1520:32 | +| 1 | `ByRefTake` | fixtures/reject/src/lib.rs:1528:32 | +| 1 | `ByReplace` | fixtures/reject/src/lib.rs:1416:35 | +| 1 | `BySwap` | fixtures/reject/src/lib.rs:1404:35 | +| 1 | `BySwapped` | fixtures/reject/src/lib.rs:1477:76 | +| 1 | `ByWrite` | fixtures/reject/src/lib.rs:1391:35 | +| 1 | `BytesMut` | fixtures/reject/src/lib.rs:307:6 | +| 1 | `Called` | fixtures/reject/src/lib.rs:1009:28 | +| 1 | `Chosen` | fixtures/reject/src/lib.rs:1829:17 | +| 1 | `Clone` | fixtures/reject/src/lib.rs:2194:4 | +| 1 | `Closed` | fixtures/reject/src/lib.rs:2001:15 | +| 1 | `Compared` | fixtures/reject/src/lib.rs:1796:22 | +| 1 | `Copied` | fixtures/reject/src/lib.rs:1099:31 | +| 1 | `Deep` | fixtures/reject/src/lib.rs:1710:18 | +| 1 | `Deeper` | fixtures/reject/src/lib.rs:1961:22 | +| 1 | `DoubleEndedIterator` | fixtures/reject/src/lib.rs:143:2 | +| 1 | `Dynamic` | fixtures/reject/src/lib.rs:1985:20 | +| 1 | `Enclosing` | fixtures/reject/src/lib.rs:1813:22 | +| 1 | `Escaped` | fixtures/reject/src/lib.rs:995:43 | +| 1 | `Halves` | fixtures/reject/src/lib.rs:2256:16 | +| 1 | `HashMap` | fixtures/reject/src/lib.rs:199:6 | +| 1 | `Hits` | fixtures/reject/src/lib.rs:643:21 | +| 1 | `InField` | fixtures/reject/src/lib.rs:1241:9 | +| 1 | `InGeneric` | fixtures/reject/src/lib.rs:1245:9 | +| 1 | `InNested` | fixtures/reject/src/lib.rs:1233:9 | +| 1 | `Lane` | fixtures/reject/src/lib.rs:795:19 | +| 1 | `Lanes` | fixtures/reject/src/lib.rs:2115:10 | +| 1 | `Loaded` | fixtures/reject/src/lib.rs:1065:29 | +| 1 | `Looped` | fixtures/reject/src/lib.rs:1033:26 | +| 1 | `Mapped` | fixtures/reject/src/lib.rs:1110:39 | | 1 | `Maybe` | fixtures/reject/src/lib.rs:31:2 | -| 1 | `Onced` | fixtures/reject/src/lib.rs:1168:46 | -| 1 | `Only` | fixtures/reject/src/lib.rs:672:11 | -| 1 | `Parked` | fixtures/reject/src/lib.rs:2072:20 | -| 1 | `Parking` | fixtures/reject/src/lib.rs:2072:20 | -| 1 | `Plain` | fixtures/reject/src/lib.rs:761:10 | -| 1 | `Pushed` | fixtures/reject/src/lib.rs:1183:22 | -| 1 | `Repeated` | fixtures/reject/src/lib.rs:1156:18 | -| 1 | `Replaced` | fixtures/reject/src/lib.rs:1892:20 | -| 1 | `Rewritten` | fixtures/reject/src/lib.rs:1065:47 | -| 1 | `Shared` | fixtures/reject/src/lib.rs:1763:20 | -| 1 | `Sink` | fixtures/reject/src/lib.rs:55:10 | -| 1 | `Slotted` | fixtures/reject/src/lib.rs:1744:21 | -| 1 | `Span2` | fixtures/reject/src/lib.rs:543:10 | -| 1 | `String` | fixtures/reject/src/lib.rs:719:4 | -| 1 | `Swapped` | fixtures/reject/src/lib.rs:1910:20 | +| 1 | `Onced` | fixtures/reject/src/lib.rs:1156:46 | +| 1 | `Only` | fixtures/reject/src/lib.rs:660:11 | +| 1 | `Parked` | fixtures/reject/src/lib.rs:2060:20 | +| 1 | `Parking` | fixtures/reject/src/lib.rs:2060:20 | +| 1 | `Plain` | fixtures/reject/src/lib.rs:749:10 | +| 1 | `Pushed` | fixtures/reject/src/lib.rs:1171:22 | +| 1 | `Repeated` | fixtures/reject/src/lib.rs:1144:18 | +| 1 | `Replaced` | fixtures/reject/src/lib.rs:1880:20 | +| 1 | `Rewritten` | fixtures/reject/src/lib.rs:1053:47 | +| 1 | `Shared` | fixtures/reject/src/lib.rs:1751:20 | +| 1 | `Sink` | fixtures/reject/src/lib.rs:48:10 | +| 1 | `Slotted` | fixtures/reject/src/lib.rs:1732:21 | +| 1 | `Span2` | fixtures/reject/src/lib.rs:531:10 | +| 1 | `String` | fixtures/reject/src/lib.rs:707:4 | +| 1 | `Swapped` | fixtures/reject/src/lib.rs:1898:20 | | 1 | `T \| undefined` | fixtures/reject/src/lib.rs:31:2 | -| 1 | `Tail` | fixtures/reject/src/lib.rs:420:30 | -| 1 | `Taken` | fixtures/reject/src/lib.rs:1928:20 | -| 1 | `Target` | fixtures/reject/src/lib.rs:1604:10 | -| 1 | `Tens` | fixtures/reject/src/lib.rs:1207:31 | -| 1 | `Track` | fixtures/reject/src/lib.rs:787:19 | -| 1 | `Unboxed` | fixtures/reject/src/lib.rs:1701:16 | -| 1 | `Waiting` | fixtures/reject/src/lib.rs:431:2 | -| 1 | `Window` | fixtures/reject/src/lib.rs:604:2 | -| 1 | `Wrapped` | fixtures/reject/src/lib.rs:1869:21 | -| 1 | `[InArray; 2]` | fixtures/reject/src/lib.rs:1272:33 | -| 1 | `[InWritten; 1]` | fixtures/reject/src/lib.rs:1333:35 | -| 1 | `[std::cell::UnsafeCell; 2]` | fixtures/reject/src/lib.rs:2026:20 | -| 1 | `[u32; 2]` | fixtures/reject/src/lib.rs:2112:13 | -| 1 | `poll` | fixtures/reject/src/lib.rs:431:2 | -| 1 | `rt.Poll` | fixtures/reject/src/lib.rs:431:2 | -| 1 | `std::any::Any` | fixtures/reject/src/lib.rs:473:4 | -| 1 | `std::cell::Cell` | fixtures/reject/src/lib.rs:890:22 | -| 1 | `std::cell::LazyCell` | fixtures/reject/src/lib.rs:2243:3 | -| 1 | `std::collections::BTreeMap` | fixtures/reject/src/lib.rs:890:22 | -| 1 | `std::collections::HashMap` | fixtures/reject/src/lib.rs:211:6 | -| 1 | `std::default::Default` | fixtures/reject/src/lib.rs:2054:2 | -| 1 | `std::iter` | fixtures/reject/src/lib.rs:1170:22 | -| 1 | `std::mem` | fixtures/reject/src/lib.rs:2211:2 | -| 1 | `std::net::AddrParseError` | fixtures/reject/src/lib.rs:374:32 | -| 1 | `std::net::Ipv4Addr` | fixtures/reject/src/lib.rs:374:32 | -| 1 | `std::num` | fixtures/reject/src/lib.rs:1212:4 | -| 1 | `std::ops::RangeFrom` | fixtures/reject/src/lib.rs:919:32 | -| 1 | `std::ops::RangeTo` | fixtures/reject/src/lib.rs:919:11 | -| 1 | `std::ptr` | fixtures/reject/src/lib.rs:1647:14 | -| 1 | `std::slice::IterMut` | fixtures/reject/src/lib.rs:701:15 | -| 1 | `std::std` | fixtures/reject/src/lib.rs:2295:13 | -| 1 | `std::sync::LazyLock` | fixtures/reject/src/lib.rs:2248:2 | -| 1 | `std::task::Poll` | fixtures/reject/src/lib.rs:77:34 | -| 1 | `std::thread::LocalKey` | fixtures/reject/src/lib.rs:2254:2 | -| 1 | `str` | fixtures/reject/src/lib.rs:262:4 | -| 1 | `u64` | fixtures/reject/src/lib.rs:68:2 | +| 1 | `Tail` | fixtures/reject/src/lib.rs:408:30 | +| 1 | `Taken` | fixtures/reject/src/lib.rs:1916:20 | +| 1 | `Target` | fixtures/reject/src/lib.rs:1592:10 | +| 1 | `Tens` | fixtures/reject/src/lib.rs:1195:31 | +| 1 | `Track` | fixtures/reject/src/lib.rs:775:19 | +| 1 | `Unboxed` | fixtures/reject/src/lib.rs:1689:16 | +| 1 | `Waiting` | fixtures/reject/src/lib.rs:419:2 | +| 1 | `Window` | fixtures/reject/src/lib.rs:592:2 | +| 1 | `Wrapped` | fixtures/reject/src/lib.rs:1857:21 | +| 1 | `[InArray; 2]` | fixtures/reject/src/lib.rs:1260:33 | +| 1 | `[InWritten; 1]` | fixtures/reject/src/lib.rs:1321:35 | +| 1 | `[std::cell::UnsafeCell; 2]` | fixtures/reject/src/lib.rs:2014:20 | +| 1 | `[u32; 2]` | fixtures/reject/src/lib.rs:2100:13 | +| 1 | `poll` | fixtures/reject/src/lib.rs:419:2 | +| 1 | `rt.Poll` | fixtures/reject/src/lib.rs:419:2 | +| 1 | `std::any::Any` | fixtures/reject/src/lib.rs:461:4 | +| 1 | `std::cell::Cell` | fixtures/reject/src/lib.rs:878:22 | +| 1 | `std::cell::LazyCell` | fixtures/reject/src/lib.rs:2231:3 | +| 1 | `std::collections::BTreeMap` | fixtures/reject/src/lib.rs:878:22 | +| 1 | `std::collections::HashMap` | fixtures/reject/src/lib.rs:199:6 | +| 1 | `std::default::Default` | fixtures/reject/src/lib.rs:2042:2 | +| 1 | `std::iter` | fixtures/reject/src/lib.rs:1158:22 | +| 1 | `std::mem` | fixtures/reject/src/lib.rs:2199:2 | +| 1 | `std::net::AddrParseError` | fixtures/reject/src/lib.rs:362:32 | +| 1 | `std::net::Ipv4Addr` | fixtures/reject/src/lib.rs:362:32 | +| 1 | `std::num` | fixtures/reject/src/lib.rs:1200:4 | +| 1 | `std::ops::RangeFrom` | fixtures/reject/src/lib.rs:907:32 | +| 1 | `std::ops::RangeTo` | fixtures/reject/src/lib.rs:907:11 | +| 1 | `std::ptr` | fixtures/reject/src/lib.rs:1635:14 | +| 1 | `std::slice::IterMut` | fixtures/reject/src/lib.rs:689:15 | +| 1 | `std::std` | fixtures/reject/src/lib.rs:2283:13 | +| 1 | `std::sync::LazyLock` | fixtures/reject/src/lib.rs:2236:2 | +| 1 | `std::task::Poll` | fixtures/reject/src/lib.rs:70:34 | +| 1 | `std::thread::LocalKey` | fixtures/reject/src/lib.rs:2242:2 | +| 1 | `str` | fixtures/reject/src/lib.rs:250:4 | +| 1 | `u64` | fixtures/reject/src/lib.rs:61:2 | | 1 | `value` | fixtures/reject/src/lib.rs:31:2 | ## By type or path | Count | Construct | Type or path | First | | ---: | --- | --- | --- | -| 17 | a raw pointer to `_` in a variable assigned again while it may point there | `(u32, u32)` | fixtures/reject/src/lib.rs:551:10 | -| 4 | a variant of `_`, which is not supported: either is the same JS string | `std::borrow::Cow` | fixtures/reject/src/lib.rs:267:2 | -| 3 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Gap` | fixtures/reject/src/lib.rs:843:10 | -| 3 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `Mid`, `Outer` | fixtures/reject/src/lib.rs:1290:34 | -| 3 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | `i32`, `u32` | fixtures/reject/src/lib.rs:2282:11 | -| 3 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2410:18 | +| 17 | a raw pointer to `_` in a variable assigned again while it may point there | `(u32, u32)` | fixtures/reject/src/lib.rs:539:10 | +| 4 | a variant of `_`, which is not supported: either is the same JS string | `std::borrow::Cow` | fixtures/reject/src/lib.rs:255:2 | +| 3 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Gap` | fixtures/reject/src/lib.rs:831:10 | +| 3 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `Mid`, `Outer` | fixtures/reject/src/lib.rs:1278:34 | +| 3 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | `i32`, `u32` | fixtures/reject/src/lib.rs:2270:11 | +| 3 | overriding `_` with a call generic over its accumulator or closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2398:18 | | 3 | unsupported type `_` | `f16` | fixtures/reject/src/lib.rs:7:14 | | 2 | `_` is not supported: its `None` and `Some` would both be `rt.None` | `Option` | fixtures/reject/src/lib.rs:16:15 | -| 2 | `_` of `_`, whose `None` is `rt.None`, which is not supported yet | `Iterator::scan`, `Option` | fixtures/reject/src/lib.rs:37:4 | | 2 | `_`, a trait object of another crate's trait, which is not supported yet | `dyn std::iter::Iterator` | fixtures/reject/src/lib.rs:11:16 | -| 2 | `_`, a trait object of the generic trait `_`, which is not supported yet | `dyn Scaled`, `Scaled` | fixtures/reject/src/lib.rs:393:23 | -| 2 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u32`, `u8` | fixtures/reject/src/lib.rs:490:27 | -| 2 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u8`, `u32` | fixtures/reject/src/lib.rs:2267:15 | -| 2 | a copy between pointers to `_`, which JS keeps as an object that knows no array it is in | `[u8; 4]` | fixtures/reject/src/lib.rs:1645:3 | -| 2 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::mem::MaybeUninit`, `Gap` | fixtures/reject/src/lib.rs:857:19 | -| 2 | a raw pointer to `_` in a variable assigned again while it may point there | `[u8; 4]` | fixtures/reject/src/lib.rs:1668:26 | -| 2 | a raw pointer to `_` in a variable assigned again while it may point there | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:631:15 | -| 2 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | `[u8; 2]` | fixtures/reject/src/lib.rs:1661:37 | -| 2 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | `[u8; 3]` | fixtures/reject/src/lib.rs:1661:15 | -| 2 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Inside` | fixtures/reject/src/lib.rs:1780:20 | -| 2 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `[u8; 4]` | fixtures/reject/src/lib.rs:1668:26 | -| 2 | an assignment through a reference to `_` | `std::pin::Pin` | fixtures/reject/src/lib.rs:107:2 | -| 2 | an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in | `[u8; 4]` | fixtures/reject/src/lib.rs:1648:56 | -| 2 | an upcast from `_` to `_`, which is not supported yet | `dyn Keyed`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:461:32 | -| 2 | comparing pointers to `_`, each a place JS makes of its own | `u32` | fixtures/reject/src/lib.rs:531:2 | -| 2 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | `u32`, `i32` | fixtures/reject/src/lib.rs:2281:7 | -| 2 | overriding `_` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2458:3 | -| 2 | replacing the value behind a reference to `_` | `std::pin::Pin` | fixtures/reject/src/lib.rs:91:2 | -| 2 | unsupported call to `_` | `::sum` | fixtures/reject/src/lib.rs:370:17 | -| 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | `Blank` | fixtures/reject/src/lib.rs:696:2 | -| 1 | `BufMut::put` of `_` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported | `Counted` | fixtures/reject/src/lib.rs:330:2 | -| 1 | `BufMut::put` of `_` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported | `Counted` | fixtures/reject/src/lib.rs:325:2 | -| 1 | `Bytes::from_owner` of `_`, which would drop with the last clone of what it makes, which is not supported | `std::sync::Arc` | fixtures/reject/src/lib.rs:310:2 | -| 1 | `Extend` of `_` by `_`, whose `_` of `_` is not supported yet | `(std::vec::Vec, Tens)`, `(u8, u8)`, `Tens`, `u8` | fixtures/reject/src/lib.rs:1207:31 | -| 1 | `_` is not supported: its `Pending` and `Ready` would both be `rt.OuterPending` | `Poll` | fixtures/reject/src/lib.rs:72:20 | +| 2 | `_`, a trait object of the generic trait `_`, which is not supported yet | `dyn Scaled`, `Scaled` | fixtures/reject/src/lib.rs:381:23 | +| 2 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u32`, `u8` | fixtures/reject/src/lib.rs:478:27 | +| 2 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u8`, `u32` | fixtures/reject/src/lib.rs:2255:15 | +| 2 | a copy between pointers to `_`, which JS keeps as an object that knows no array it is in | `[u8; 4]` | fixtures/reject/src/lib.rs:1633:3 | +| 2 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::mem::MaybeUninit`, `Gap` | fixtures/reject/src/lib.rs:845:19 | +| 2 | a raw pointer to `_` in a variable assigned again while it may point there | `[u8; 4]` | fixtures/reject/src/lib.rs:1656:26 | +| 2 | a raw pointer to `_` in a variable assigned again while it may point there | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:619:15 | +| 2 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | `[u8; 2]` | fixtures/reject/src/lib.rs:1649:37 | +| 2 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | `[u8; 3]` | fixtures/reject/src/lib.rs:1649:15 | +| 2 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Inside` | fixtures/reject/src/lib.rs:1768:20 | +| 2 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `[u8; 4]` | fixtures/reject/src/lib.rs:1656:26 | +| 2 | an assignment through a reference to `_` | `std::pin::Pin` | fixtures/reject/src/lib.rs:100:2 | +| 2 | an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in | `[u8; 4]` | fixtures/reject/src/lib.rs:1636:56 | +| 2 | an upcast from `_` to `_`, which is not supported yet | `dyn Keyed`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:449:32 | +| 2 | comparing pointers to `_`, each a place JS makes of its own | `u32` | fixtures/reject/src/lib.rs:519:2 | +| 2 | memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another | `u32`, `i32` | fixtures/reject/src/lib.rs:2269:7 | +| 2 | overriding `_` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2446:3 | +| 2 | replacing the value behind a reference to `_` | `std::pin::Pin` | fixtures/reject/src/lib.rs:84:2 | +| 2 | unsupported call to `_` | `::sum` | fixtures/reject/src/lib.rs:358:17 | +| 1 | `Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported | `Blank` | fixtures/reject/src/lib.rs:684:2 | +| 1 | `BufMut::put` of `_` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported | `Counted` | fixtures/reject/src/lib.rs:318:2 | +| 1 | `BufMut::put` of `_` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported | `Counted` | fixtures/reject/src/lib.rs:313:2 | +| 1 | `Bytes::from_owner` of `_`, which would drop with the last clone of what it makes, which is not supported | `std::sync::Arc` | fixtures/reject/src/lib.rs:298:2 | +| 1 | `Extend` of `_` by `_`, whose `_` of `_` is not supported yet | `(std::vec::Vec, Tens)`, `(u8, u8)`, `Tens`, `u8` | fixtures/reject/src/lib.rs:1195:31 | +| 1 | `_` is not supported: its `Pending` and `Ready` would both be `rt.OuterPending` | `Poll` | fixtures/reject/src/lib.rs:65:20 | | 1 | `_` is not supported: its field `_` is `_`, typed `_`, whose `None` would be `rt.None` as `_` | `Maybe`, `value`, `Option`, `T \| undefined`, `Option` | fixtures/reject/src/lib.rs:31:2 | -| 1 | `_` is not supported: its field `_` is `_`, typed `_`, whose `Pending` would be `rt.OuterPending` as `_` | `Waiting`, `poll`, `Poll`, `rt.Poll`, `Poll` | fixtures/reject/src/lib.rs:431:2 | -| 1 | `_` of `_` by `_`, which is not supported yet | `HashMap::contains_key`, `std::collections::HashMap`, `u8` | fixtures/reject/src/lib.rs:211:6 | -| 1 | `_` of `_`, which is not supported yet | `std::any::Any::type_id`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:473:4 | -| 1 | `_` of `_`, whose `clone_from` is its own, which is not supported yet | `Clone::clone_from`, `std::vec::Vec` | fixtures/reject/src/lib.rs:2206:4 | -| 1 | `_` of `_`, whose `clone_from` is its own, which is not supported yet | `slice::clone_from_slice`, `Reused` | fixtures/reject/src/lib.rs:229:4 | +| 1 | `_` is not supported: its field `_` is `_`, typed `_`, whose `Pending` would be `rt.OuterPending` as `_` | `Waiting`, `poll`, `Poll`, `rt.Poll`, `Poll` | fixtures/reject/src/lib.rs:419:2 | +| 1 | `_` of `_` by `_`, which is not supported yet | `HashMap::contains_key`, `std::collections::HashMap`, `u8` | fixtures/reject/src/lib.rs:199:6 | +| 1 | `_` of `_`, which is not supported yet | `std::any::Any::type_id`, `dyn std::any::Any` | fixtures/reject/src/lib.rs:461:4 | +| 1 | `_` of `_`, whose `clone_from` is its own, which is not supported yet | `Clone::clone_from`, `std::vec::Vec` | fixtures/reject/src/lib.rs:2194:4 | +| 1 | `_` of `_`, whose `clone_from` is its own, which is not supported yet | `slice::clone_from_slice`, `Reused` | fixtures/reject/src/lib.rs:217:4 | | 1 | `_` of `_`, whose `clone_from` is its own, which is not supported yet | `slice::fill`, `Reused` | fixtures/reject/src/lib.rs:21:4 | -| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::collections::LinkedList::retain` | fixtures/reject/src/lib.rs:2052:4 | -| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::default::Default::default` | fixtures/reject/src/lib.rs:2054:2 | -| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::iter::once` | fixtures/reject/src/lib.rs:1170:22 | -| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::str::from_utf8_mut` | fixtures/reject/src/lib.rs:1577:20 | -| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::str::get_unchecked_mut` | fixtures/reject/src/lib.rs:1572:13 | -| 1 | `_`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported | `BytesMut::capacity` | fixtures/reject/src/lib.rs:319:6 | -| 1 | `clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet | `std::collections::LinkedList` | fixtures/reject/src/lib.rs:2053:4 | -| 1 | `collect` of `_`, which sorts by `_`'s own `Ord`, of entries that drop, which is not supported yet | `std::collections::BTreeMap`, `std::cell::Cell` | fixtures/reject/src/lib.rs:890:22 | -| 1 | `fmt::Arguments` with a placeholder, or not made in place, written to `_`'s own `fmt::Write`, which is not supported yet: std splits what a placeholder writes into `write_str` calls the runtime does not make | `Sink` | fixtures/reject/src/lib.rs:55:10 | -| 1 | `offset_from` of pointers to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2100:36 | -| 1 | a cast from `_` to `_` | `u64`, `f16` | fixtures/reject/src/lib.rs:68:2 | -| 1 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u32`, `[u32; 2]` | fixtures/reject/src/lib.rs:2112:13 | -| 1 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u8`, `Halves` | fixtures/reject/src/lib.rs:2268:16 | -| 1 | a coercion to `_` | `std::sync::Arc` | fixtures/reject/src/lib.rs:234:2 | -| 1 | a coercion to `_`, which is not supported yet | `&Tail` | fixtures/reject/src/lib.rs:420:30 | -| 1 | a constant of type `_` | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2301:34 | -| 1 | a constant of type `_`, a pointer into memory translation can't name | `&u32` | fixtures/reject/src/lib.rs:713:3 | -| 1 | a copy between pointers to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2097:3 | -| 1 | a dangling pointer to `_`, a value of no bytes made of more than structs and tuples | `Only` | fixtures/reject/src/lib.rs:672:11 | -| 1 | a future of `_`, which can be `rt.Pending`, as the future's own `Pending` is | `std::task::Poll` | fixtures/reject/src/lib.rs:77:34 | -| 1 | a mapped guard of `_`, which JS can't write in place | `{closure}` | fixtures/reject/src/lib.rs:2087:10 | -| 1 | a pointer into `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2094:12 | -| 1 | a pointer into an array of `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2099:30 | -| 1 | a raw pointer to `_` behind a reference, which is the object and not where it is kept | `std::vec::Vec` | fixtures/reject/src/lib.rs:512:10 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u16, u16)`, `Copied` | fixtures/reject/src/lib.rs:1111:31 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u16, u16)`, `Pushed` | fixtures/reject/src/lib.rs:1183:22 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Lane` | fixtures/reject/src/lib.rs:807:19 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Plain` | fixtures/reject/src/lib.rs:761:10 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Span2` | fixtures/reject/src/lib.rs:543:10 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Track` | fixtures/reject/src/lib.rs:787:19 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Window` | fixtures/reject/src/lib.rs:604:2 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:622:15 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `(Dropped, (u8, u8))` | fixtures/reject/src/lib.rs:2346:2 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `([Cloned; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2330:2 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `([Greatest; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2364:13 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `([Touched; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2395:2 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByKeyReplace`, `(u16, ByKeyReplace)` | fixtures/reject/src/lib.rs:1556:55 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByKeySet`, `(u16, ByKeySet)` | fixtures/reject/src/lib.rs:1548:51 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByKeyTake`, `(u16, ByKeyTake)` | fixtures/reject/src/lib.rs:1563:52 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByRefReplace`, `(u16, ByRefReplace)` | fixtures/reject/src/lib.rs:1532:32 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByRefTake`, `(u16, ByRefTake)` | fixtures/reject/src/lib.rs:1540:32 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `[u32; 3]`, `Lanes` | fixtures/reject/src/lib.rs:2127:10 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Aliased` | fixtures/reject/src/lib.rs:1055:29 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByBox` | fixtures/reject/src/lib.rs:1439:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByClosure` | fixtures/reject/src/lib.rs:1454:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByExchanged` | fixtures/reject/src/lib.rs:1500:30 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByInstance` | fixtures/reject/src/lib.rs:1480:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByObject` | fixtures/reject/src/lib.rs:1467:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByRead` | fixtures/reject/src/lib.rs:1390:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByReplace` | fixtures/reject/src/lib.rs:1428:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `BySwap` | fixtures/reject/src/lib.rs:1416:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `BySwapped` | fixtures/reject/src/lib.rs:1489:76 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByWrite` | fixtures/reject/src/lib.rs:1403:35 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Called` | fixtures/reject/src/lib.rs:1021:28 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Escaped` | fixtures/reject/src/lib.rs:1007:43 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Hits` | fixtures/reject/src/lib.rs:655:21 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InArray` | fixtures/reject/src/lib.rs:1237:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InField` | fixtures/reject/src/lib.rs:1253:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InGeneric` | fixtures/reject/src/lib.rs:1257:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InNested` | fixtures/reject/src/lib.rs:1245:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InPayload` | fixtures/reject/src/lib.rs:1249:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InTuple` | fixtures/reject/src/lib.rs:1241:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InWritten` | fixtures/reject/src/lib.rs:1261:9 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Loaded` | fixtures/reject/src/lib.rs:1077:29 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Looped` | fixtures/reject/src/lib.rs:1045:26 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Mapped` | fixtures/reject/src/lib.rs:1122:39 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Onced` | fixtures/reject/src/lib.rs:1168:46 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Repeated` | fixtures/reject/src/lib.rs:1156:18 | -| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Rewritten` | fixtures/reject/src/lib.rs:1065:47 | -| 1 | a raw pointer to `_` in a variable assigned again while it may point there | `Target` | fixtures/reject/src/lib.rs:1604:10 | -| 1 | a raw pointer to `_` in a variable assigned again while it may point there | `[u32; 3]` | fixtures/reject/src/lib.rs:2125:10 | -| 1 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | `(u32, u32)` | fixtures/reject/src/lib.rs:614:10 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `InArray`, `[InArray; 2]` | fixtures/reject/src/lib.rs:1272:33 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `InTuple`, `(u16, InTuple)` | fixtures/reject/src/lib.rs:1281:33 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `InWritten`, `[InWritten; 1]` | fixtures/reject/src/lib.rs:1333:35 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `Parked`, `Parking` | fixtures/reject/src/lib.rs:2072:20 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Assigned` | fixtures/reject/src/lib.rs:1947:20 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Closed` | fixtures/reject/src/lib.rs:2013:15 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Deeper` | fixtures/reject/src/lib.rs:1973:22 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Dynamic` | fixtures/reject/src/lib.rs:1997:20 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Replaced` | fixtures/reject/src/lib.rs:1892:20 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Swapped` | fixtures/reject/src/lib.rs:1910:20 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Taken` | fixtures/reject/src/lib.rs:1928:20 | -| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `[std::cell::UnsafeCell; 2]` | fixtures/reject/src/lib.rs:2026:20 | -| 1 | a reference through which a raw pointer may be made into `_` in an element, a payload, or a union field, which is not supported yet | `InPayload` | fixtures/reject/src/lib.rs:1299:11 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Behind` | fixtures/reject/src/lib.rs:1686:22 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Chosen` | fixtures/reject/src/lib.rs:1841:17 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Compared` | fixtures/reject/src/lib.rs:1808:22 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Deep` | fixtures/reject/src/lib.rs:1722:18 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Enclosing` | fixtures/reject/src/lib.rs:1825:22 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Shared` | fixtures/reject/src/lib.rs:1763:20 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Slotted` | fixtures/reject/src/lib.rs:1744:21 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Unboxed` | fixtures/reject/src/lib.rs:1701:16 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Wrapped` | fixtures/reject/src/lib.rs:1869:21 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:1590:18 | -| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `std::option::Option` | fixtures/reject/src/lib.rs:2043:13 | +| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::collections::LinkedList::retain` | fixtures/reject/src/lib.rs:2040:4 | +| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::default::Default::default` | fixtures/reject/src/lib.rs:2042:2 | +| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::iter::once` | fixtures/reject/src/lib.rs:1158:22 | +| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::str::from_utf8_mut` | fixtures/reject/src/lib.rs:1565:20 | +| 1 | `_` with a mutable reference to a value JS copies, which its mapping would copy | `std::str::get_unchecked_mut` | fixtures/reject/src/lib.rs:1560:13 | +| 1 | `_`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported | `BytesMut::capacity` | fixtures/reject/src/lib.rs:307:6 | +| 1 | `clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet | `std::collections::LinkedList` | fixtures/reject/src/lib.rs:2041:4 | +| 1 | `collect` of `_`, which sorts by `_`'s own `Ord`, of entries that drop, which is not supported yet | `std::collections::BTreeMap`, `std::cell::Cell` | fixtures/reject/src/lib.rs:878:22 | +| 1 | `fmt::Arguments` with a placeholder, or not made in place, written to `_`'s own `fmt::Write`, which is not supported yet: std splits what a placeholder writes into `write_str` calls the runtime does not make | `Sink` | fixtures/reject/src/lib.rs:48:10 | +| 1 | `offset_from` of pointers to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2088:36 | +| 1 | a cast from `_` to `_` | `u64`, `f16` | fixtures/reject/src/lib.rs:61:2 | +| 1 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u32`, `[u32; 2]` | fixtures/reject/src/lib.rs:2100:13 | +| 1 | a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another | `u8`, `Halves` | fixtures/reject/src/lib.rs:2256:16 | +| 1 | a coercion to `_` | `std::sync::Arc` | fixtures/reject/src/lib.rs:222:2 | +| 1 | a coercion to `_`, which is not supported yet | `&Tail` | fixtures/reject/src/lib.rs:408:30 | +| 1 | a constant of type `_` | `std::mem::ManuallyDrop` | fixtures/reject/src/lib.rs:2289:34 | +| 1 | a constant of type `_`, a pointer into memory translation can't name | `&u32` | fixtures/reject/src/lib.rs:701:3 | +| 1 | a copy between pointers to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2085:3 | +| 1 | a dangling pointer to `_`, a value of no bytes made of more than structs and tuples | `Only` | fixtures/reject/src/lib.rs:660:11 | +| 1 | a future of `_`, which can be `rt.Pending`, as the future's own `Pending` is | `std::task::Poll` | fixtures/reject/src/lib.rs:70:34 | +| 1 | a mapped guard of `_`, which JS can't write in place | `{closure}` | fixtures/reject/src/lib.rs:2075:10 | +| 1 | a pointer into `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2082:12 | +| 1 | a pointer into an array of `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2087:30 | +| 1 | a raw pointer to `_` behind a reference, which is the object and not where it is kept | `std::vec::Vec` | fixtures/reject/src/lib.rs:500:10 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u16, u16)`, `Copied` | fixtures/reject/src/lib.rs:1099:31 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u16, u16)`, `Pushed` | fixtures/reject/src/lib.rs:1171:22 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Lane` | fixtures/reject/src/lib.rs:795:19 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Plain` | fixtures/reject/src/lib.rs:749:10 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Span2` | fixtures/reject/src/lib.rs:531:10 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Track` | fixtures/reject/src/lib.rs:775:19 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `Window` | fixtures/reject/src/lib.rs:592:2 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u32, u32)`, `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:610:15 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `(Dropped, (u8, u8))` | fixtures/reject/src/lib.rs:2334:2 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `([Cloned; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2318:2 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `([Greatest; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2352:13 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `(u8, u8)`, `([Touched; 2], (u8, u8))` | fixtures/reject/src/lib.rs:2383:2 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByKeyReplace`, `(u16, ByKeyReplace)` | fixtures/reject/src/lib.rs:1544:55 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByKeySet`, `(u16, ByKeySet)` | fixtures/reject/src/lib.rs:1536:51 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByKeyTake`, `(u16, ByKeyTake)` | fixtures/reject/src/lib.rs:1551:52 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByRefReplace`, `(u16, ByRefReplace)` | fixtures/reject/src/lib.rs:1520:32 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `ByRefTake`, `(u16, ByRefTake)` | fixtures/reject/src/lib.rs:1528:32 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `[u32; 3]`, `Lanes` | fixtures/reject/src/lib.rs:2115:10 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Aliased` | fixtures/reject/src/lib.rs:1043:29 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByBox` | fixtures/reject/src/lib.rs:1427:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByClosure` | fixtures/reject/src/lib.rs:1442:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByExchanged` | fixtures/reject/src/lib.rs:1488:30 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByInstance` | fixtures/reject/src/lib.rs:1468:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByObject` | fixtures/reject/src/lib.rs:1455:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByRead` | fixtures/reject/src/lib.rs:1378:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByReplace` | fixtures/reject/src/lib.rs:1416:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `BySwap` | fixtures/reject/src/lib.rs:1404:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `BySwapped` | fixtures/reject/src/lib.rs:1477:76 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `ByWrite` | fixtures/reject/src/lib.rs:1391:35 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Called` | fixtures/reject/src/lib.rs:1009:28 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Escaped` | fixtures/reject/src/lib.rs:995:43 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Hits` | fixtures/reject/src/lib.rs:643:21 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InArray` | fixtures/reject/src/lib.rs:1225:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InField` | fixtures/reject/src/lib.rs:1241:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InGeneric` | fixtures/reject/src/lib.rs:1245:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InNested` | fixtures/reject/src/lib.rs:1233:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InPayload` | fixtures/reject/src/lib.rs:1237:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InTuple` | fixtures/reject/src/lib.rs:1229:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `InWritten` | fixtures/reject/src/lib.rs:1249:9 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Loaded` | fixtures/reject/src/lib.rs:1065:29 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Looped` | fixtures/reject/src/lib.rs:1033:26 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Mapped` | fixtures/reject/src/lib.rs:1110:39 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Onced` | fixtures/reject/src/lib.rs:1156:46 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Repeated` | fixtures/reject/src/lib.rs:1144:18 | +| 1 | a raw pointer to `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Rewritten` | fixtures/reject/src/lib.rs:1053:47 | +| 1 | a raw pointer to `_` in a variable assigned again while it may point there | `Target` | fixtures/reject/src/lib.rs:1592:10 | +| 1 | a raw pointer to `_` in a variable assigned again while it may point there | `[u32; 3]` | fixtures/reject/src/lib.rs:2113:10 | +| 1 | a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet | `(u32, u32)` | fixtures/reject/src/lib.rs:602:10 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `InArray`, `[InArray; 2]` | fixtures/reject/src/lib.rs:1260:33 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `InTuple`, `(u16, InTuple)` | fixtures/reject/src/lib.rs:1269:33 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `InWritten`, `[InWritten; 1]` | fixtures/reject/src/lib.rs:1321:35 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `Parked`, `Parking` | fixtures/reject/src/lib.rs:2060:20 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Assigned` | fixtures/reject/src/lib.rs:1935:20 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Closed` | fixtures/reject/src/lib.rs:2001:15 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Deeper` | fixtures/reject/src/lib.rs:1961:22 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Dynamic` | fixtures/reject/src/lib.rs:1985:20 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Replaced` | fixtures/reject/src/lib.rs:1880:20 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Swapped` | fixtures/reject/src/lib.rs:1898:20 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `Taken` | fixtures/reject/src/lib.rs:1916:20 | +| 1 | a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of | `std::cell::UnsafeCell`, `[std::cell::UnsafeCell; 2]` | fixtures/reject/src/lib.rs:2014:20 | +| 1 | a reference through which a raw pointer may be made into `_` in an element, a payload, or a union field, which is not supported yet | `InPayload` | fixtures/reject/src/lib.rs:1287:11 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Behind` | fixtures/reject/src/lib.rs:1674:22 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Chosen` | fixtures/reject/src/lib.rs:1829:17 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Compared` | fixtures/reject/src/lib.rs:1796:22 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Deep` | fixtures/reject/src/lib.rs:1710:18 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Enclosing` | fixtures/reject/src/lib.rs:1813:22 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Shared` | fixtures/reject/src/lib.rs:1751:20 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Slotted` | fixtures/reject/src/lib.rs:1732:21 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Unboxed` | fixtures/reject/src/lib.rs:1689:16 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `Wrapped` | fixtures/reject/src/lib.rs:1857:21 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `std::cell::UnsafeCell` | fixtures/reject/src/lib.rs:1578:18 | +| 1 | a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there | `std::option::Option` | fixtures/reject/src/lib.rs:2031:13 | | 1 | a scalar constant of type `_` | `f16` | fixtures/reject/src/lib.rs:8:2 | -| 1 | a slice from a pointer to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2098:11 | -| 1 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | `Reused` | fixtures/reject/src/lib.rs:2201:2 | -| 1 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | `std::cell::LazyCell` | fixtures/reject/src/lib.rs:2243:3 | -| 1 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | `std::thread::LocalKey` | fixtures/reject/src/lib.rs:2254:2 | -| 1 | a trait object of `_`, which is not supported yet | `[u8; 4]` | fixtures/reject/src/lib.rs:410:26 | -| 1 | an assignment through a reference to `_` | `std::sync::LazyLock` | fixtures/reject/src/lib.rs:2248:2 | -| 1 | an assignment through a reference to `_` | `std::sync::MutexGuard` | fixtures/reject/src/lib.rs:83:2 | -| 1 | an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2096:13 | +| 1 | a slice from a pointer to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2086:11 | +| 1 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | `Reused` | fixtures/reject/src/lib.rs:2189:2 | +| 1 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | `std::cell::LazyCell` | fixtures/reject/src/lib.rs:2231:3 | +| 1 | a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there | `std::thread::LocalKey` | fixtures/reject/src/lib.rs:2242:2 | +| 1 | a trait object of `_`, which is not supported yet | `[u8; 4]` | fixtures/reject/src/lib.rs:398:26 | +| 1 | an assignment through a reference to `_` | `std::sync::LazyLock` | fixtures/reject/src/lib.rs:2236:2 | +| 1 | an assignment through a reference to `_` | `std::sync::MutexGuard` | fixtures/reject/src/lib.rs:76:2 | +| 1 | an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in | `(u8, u8)` | fixtures/reject/src/lib.rs:2084:13 | | 1 | arithmetic on `_` | `f16` | fixtures/reject/src/lib.rs:8:2 | -| 1 | comparing `_` | `*mut [u8; 4]` | fixtures/reject/src/lib.rs:1647:41 | -| 1 | comparing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:193:75 | -| 1 | comparing pointers to `_` in an atomic, which JS has no address of | `u32` | fixtures/reject/src/lib.rs:712:15 | -| 1 | comparing pointers to `_`, which has no bytes and so no address of its own | `Bare` | fixtures/reject/src/lib.rs:663:70 | -| 1 | const generic types are not supported: `_` | `Block` | fixtures/reject/src/lib.rs:2032:1 | -| 1 | constructing `_` | `std::borrow::Cow` | fixtures/reject/src/lib.rs:285:53 | -| 1 | hashing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:193:75 | -| 1 | hashing `_` by its address, which JS has no counterpart of | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1651:5 | -| 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | `std::vec::Vec`, `Batched` | fixtures/reject/src/lib.rs:253:16 | -| 1 | overriding `_` with a constant generic over its accumulator or closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2435:11 | -| 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:126:3 | -| 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | `DoubleEndedIterator::rfind` | fixtures/reject/src/lib.rs:150:2 | -| 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `String::retain` | fixtures/reject/src/lib.rs:719:4 | -| 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `str::contains` | fixtures/reject/src/lib.rs:262:4 | -| 1 | replacing the value behind a reference to `_` | `std::sync::MutexGuard` | fixtures/reject/src/lib.rs:112:2 | -| 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | `Bits`, `u32` | fixtures/reject/src/lib.rs:517:1 | -| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:473:2 | -| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:2301:25 | -| 1 | unsupported call to `_` | `::fmt` | fixtures/reject/src/lib.rs:2301:2 | -| 1 | unsupported call to `_` | `::contains` | fixtures/reject/src/lib.rs:919:32 | -| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:305:2 | -| 1 | unsupported call to `_` | `::is_sorted` | fixtures/reject/src/lib.rs:701:15 | -| 1 | unsupported call to `_` | `::hash` | fixtures/reject/src/lib.rs:244:10 | -| 1 | unsupported call to `_` | `std::any::TypeId::of` | fixtures/reject/src/lib.rs:473:17 | -| 1 | unsupported call to `_` | `std::borrow::Cow::is_borrowed` | fixtures/reject/src/lib.rs:279:2 | -| 1 | unsupported call to `_` | `std::mem::size_of_val` | fixtures/reject/src/lib.rs:2211:2 | -| 1 | unsupported call to `_` | `std::num::is_ascii_octdigit` | fixtures/reject/src/lib.rs:1212:4 | -| 1 | unsupported call to `_` | `std::ops::Range::contains` | fixtures/reject/src/lib.rs:164:8 | -| 1 | unsupported call to `_` | `std::ops::Range::is_empty` | fixtures/reject/src/lib.rs:924:9 | -| 1 | unsupported call to `_` | `std::ops::RangeTo::contains` | fixtures/reject/src/lib.rs:919:11 | -| 1 | unsupported call to `_` | `std::ptr::addr_eq` | fixtures/reject/src/lib.rs:1647:14 | -| 1 | unsupported call to `_` | `std::std::alloc_zeroed` | fixtures/reject/src/lib.rs:2295:13 | -| 1 | unsupported call to `_` | `std::str::as_bytes_mut` | fixtures/reject/src/lib.rs:1571:13 | -| 1 | unsupported call to `_` | `std::str::parse` | fixtures/reject/src/lib.rs:375:4 | -| 1 | unsupported type `_` from another crate | `std::net::AddrParseError` | fixtures/reject/src/lib.rs:374:32 | -| 1 | unsupported type `_` from another crate | `std::net::Ipv4Addr` | fixtures/reject/src/lib.rs:374:32 | +| 1 | comparing `_` | `*mut [u8; 4]` | fixtures/reject/src/lib.rs:1635:41 | +| 1 | comparing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:181:75 | +| 1 | comparing pointers to `_` in an atomic, which JS has no address of | `u32` | fixtures/reject/src/lib.rs:700:15 | +| 1 | comparing pointers to `_`, which has no bytes and so no address of its own | `Bare` | fixtures/reject/src/lib.rs:651:70 | +| 1 | const generic types are not supported: `_` | `Block` | fixtures/reject/src/lib.rs:2020:1 | +| 1 | constructing `_` | `std::borrow::Cow` | fixtures/reject/src/lib.rs:273:53 | +| 1 | hashing `_` as a key, which is not supported yet | `std::collections::BTreeSet` | fixtures/reject/src/lib.rs:181:75 | +| 1 | hashing `_` by its address, which JS has no counterpart of | `*const [u8; 4]` | fixtures/reject/src/lib.rs:1639:5 | +| 1 | hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet | `std::vec::Vec`, `Batched` | fixtures/reject/src/lib.rs:241:16 | +| 1 | overriding `_` with a constant generic over its accumulator or closure, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:2423:11 | +| 1 | overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet | `Iterator::fold` | fixtures/reject/src/lib.rs:119:3 | +| 1 | overriding `_`, which std's adaptors call in place of `next` or beside it | `DoubleEndedIterator::rfind` | fixtures/reject/src/lib.rs:143:2 | +| 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `String::retain` | fixtures/reject/src/lib.rs:707:4 | +| 1 | passing `_`, which drops, to `_`, which is not supported yet | `{closure}`, `str::contains` | fixtures/reject/src/lib.rs:250:4 | +| 1 | replacing the value behind a reference to `_` | `std::sync::MutexGuard` | fixtures/reject/src/lib.rs:105:2 | +| 1 | union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart | `Bits`, `u32` | fixtures/reject/src/lib.rs:505:1 | +| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:461:2 | +| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:2289:25 | +| 1 | unsupported call to `_` | `::fmt` | fixtures/reject/src/lib.rs:2289:2 | +| 1 | unsupported call to `_` | `::contains` | fixtures/reject/src/lib.rs:907:32 | +| 1 | unsupported call to `_` | `::eq` | fixtures/reject/src/lib.rs:293:2 | +| 1 | unsupported call to `_` | `::is_sorted` | fixtures/reject/src/lib.rs:689:15 | +| 1 | unsupported call to `_` | `::hash` | fixtures/reject/src/lib.rs:232:10 | +| 1 | unsupported call to `_` | `std::any::TypeId::of` | fixtures/reject/src/lib.rs:461:17 | +| 1 | unsupported call to `_` | `std::borrow::Cow::is_borrowed` | fixtures/reject/src/lib.rs:267:2 | +| 1 | unsupported call to `_` | `std::mem::size_of_val` | fixtures/reject/src/lib.rs:2199:2 | +| 1 | unsupported call to `_` | `std::num::is_ascii_octdigit` | fixtures/reject/src/lib.rs:1200:4 | +| 1 | unsupported call to `_` | `std::ops::Range::contains` | fixtures/reject/src/lib.rs:157:8 | +| 1 | unsupported call to `_` | `std::ops::Range::is_empty` | fixtures/reject/src/lib.rs:912:9 | +| 1 | unsupported call to `_` | `std::ops::RangeTo::contains` | fixtures/reject/src/lib.rs:907:11 | +| 1 | unsupported call to `_` | `std::ptr::addr_eq` | fixtures/reject/src/lib.rs:1635:14 | +| 1 | unsupported call to `_` | `std::std::alloc_zeroed` | fixtures/reject/src/lib.rs:2283:13 | +| 1 | unsupported call to `_` | `std::str::as_bytes_mut` | fixtures/reject/src/lib.rs:1559:13 | +| 1 | unsupported call to `_` | `std::str::parse` | fixtures/reject/src/lib.rs:363:4 | +| 1 | unsupported type `_` from another crate | `std::net::AddrParseError` | fixtures/reject/src/lib.rs:362:32 | +| 1 | unsupported type `_` from another crate | `std::net::Ipv4Addr` | fixtures/reject/src/lib.rs:362:32 | ## Spans
a raw pointer to `_` in `_`, which the crate may put another object in place of (50) -- fixtures/reject/src/lib.rs:543:10: a raw pointer to `(u32, u32)` in `Span2`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:604:2: a raw pointer to `(u32, u32)` in `Window`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:622:15: a raw pointer to `(u32, u32)` in `std::cell::UnsafeCell<(u32, u32)>`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:655:21: a raw pointer to `std::cell::UnsafeCell` in `Hits`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:761:10: a raw pointer to `(u32, u32)` in `Plain`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:787:19: a raw pointer to `(u32, u32)` in `Track`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:807:19: a raw pointer to `(u32, u32)` in `Lane`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:843:10: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:844:10: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:845:58: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:857:19: a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:858:19: a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1007:43: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Escaped`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1021:28: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Called`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1045:26: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Looped`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1055:29: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Aliased`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1065:47: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Rewritten`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1077:29: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Loaded`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1111:31: a raw pointer to `(u16, u16)` in `Copied`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1122:39: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Mapped`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1156:18: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Repeated`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1168:46: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Onced`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1183:22: a raw pointer to `(u16, u16)` in `Pushed`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1237:9: a raw pointer to `std::cell::UnsafeCell` in `InArray`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1241:9: a raw pointer to `std::cell::UnsafeCell` in `InTuple`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1245:9: a raw pointer to `std::cell::UnsafeCell` in `InNested`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1249:9: a raw pointer to `std::cell::UnsafeCell` in `InPayload`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1253:9: a raw pointer to `std::cell::UnsafeCell` in `InField`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1257:9: a raw pointer to `std::cell::UnsafeCell` in `InGeneric`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1261:9: a raw pointer to `std::cell::UnsafeCell` in `InWritten`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1390:35: a raw pointer to `std::cell::UnsafeCell` in `ByRead`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1403:35: a raw pointer to `std::cell::UnsafeCell` in `ByWrite`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1416:35: a raw pointer to `std::cell::UnsafeCell` in `BySwap`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1428:35: a raw pointer to `std::cell::UnsafeCell` in `ByReplace`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1439:35: a raw pointer to `std::cell::UnsafeCell` in `ByBox`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1454:35: a raw pointer to `std::cell::UnsafeCell` in `ByClosure`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1467:35: a raw pointer to `std::cell::UnsafeCell` in `ByObject`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1480:35: a raw pointer to `std::cell::UnsafeCell` in `ByInstance`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1489:76: a raw pointer to `std::cell::UnsafeCell` in `BySwapped`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1500:30: a raw pointer to `std::cell::UnsafeCell` in `ByExchanged`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1532:32: a raw pointer to `ByRefReplace` in `(u16, ByRefReplace)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1540:32: a raw pointer to `ByRefTake` in `(u16, ByRefTake)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1548:51: a raw pointer to `ByKeySet` in `(u16, ByKeySet)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1556:55: a raw pointer to `ByKeyReplace` in `(u16, ByKeyReplace)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1563:52: a raw pointer to `ByKeyTake` in `(u16, ByKeyTake)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2127:10: a raw pointer to `[u32; 3]` in `Lanes`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2330:2: a raw pointer to `(u8, u8)` in `([Cloned; 2], (u8, u8))`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2346:2: a raw pointer to `(u8, u8)` in `(Dropped, (u8, u8))`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2364:13: a raw pointer to `(u8, u8)` in `([Greatest; 2], (u8, u8))`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2395:2: a raw pointer to `(u8, u8)` in `([Touched; 2], (u8, u8))`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:531:10: a raw pointer to `(u32, u32)` in `Span2`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:592:2: a raw pointer to `(u32, u32)` in `Window`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:610:15: a raw pointer to `(u32, u32)` in `std::cell::UnsafeCell<(u32, u32)>`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:643:21: a raw pointer to `std::cell::UnsafeCell` in `Hits`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:749:10: a raw pointer to `(u32, u32)` in `Plain`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:775:19: a raw pointer to `(u32, u32)` in `Track`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:795:19: a raw pointer to `(u32, u32)` in `Lane`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:831:10: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:832:10: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:833:58: a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:845:19: a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:846:19: a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:995:43: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Escaped`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1009:28: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Called`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1033:26: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Looped`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1043:29: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Aliased`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1053:47: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Rewritten`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1065:29: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Loaded`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1099:31: a raw pointer to `(u16, u16)` in `Copied`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1110:39: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Mapped`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1144:18: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Repeated`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1156:46: a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Onced`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1171:22: a raw pointer to `(u16, u16)` in `Pushed`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1225:9: a raw pointer to `std::cell::UnsafeCell` in `InArray`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1229:9: a raw pointer to `std::cell::UnsafeCell` in `InTuple`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1233:9: a raw pointer to `std::cell::UnsafeCell` in `InNested`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1237:9: a raw pointer to `std::cell::UnsafeCell` in `InPayload`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1241:9: a raw pointer to `std::cell::UnsafeCell` in `InField`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1245:9: a raw pointer to `std::cell::UnsafeCell` in `InGeneric`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1249:9: a raw pointer to `std::cell::UnsafeCell` in `InWritten`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1378:35: a raw pointer to `std::cell::UnsafeCell` in `ByRead`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1391:35: a raw pointer to `std::cell::UnsafeCell` in `ByWrite`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1404:35: a raw pointer to `std::cell::UnsafeCell` in `BySwap`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1416:35: a raw pointer to `std::cell::UnsafeCell` in `ByReplace`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1427:35: a raw pointer to `std::cell::UnsafeCell` in `ByBox`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1442:35: a raw pointer to `std::cell::UnsafeCell` in `ByClosure`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1455:35: a raw pointer to `std::cell::UnsafeCell` in `ByObject`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1468:35: a raw pointer to `std::cell::UnsafeCell` in `ByInstance`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1477:76: a raw pointer to `std::cell::UnsafeCell` in `BySwapped`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1488:30: a raw pointer to `std::cell::UnsafeCell` in `ByExchanged`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1520:32: a raw pointer to `ByRefReplace` in `(u16, ByRefReplace)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1528:32: a raw pointer to `ByRefTake` in `(u16, ByRefTake)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1536:51: a raw pointer to `ByKeySet` in `(u16, ByKeySet)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1544:55: a raw pointer to `ByKeyReplace` in `(u16, ByKeyReplace)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1551:52: a raw pointer to `ByKeyTake` in `(u16, ByKeyTake)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2115:10: a raw pointer to `[u32; 3]` in `Lanes`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2318:2: a raw pointer to `(u8, u8)` in `([Cloned; 2], (u8, u8))`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2334:2: a raw pointer to `(u8, u8)` in `(Dropped, (u8, u8))`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2352:13: a raw pointer to `(u8, u8)` in `([Greatest; 2], (u8, u8))`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2383:2: a raw pointer to `(u8, u8)` in `([Touched; 2], (u8, u8))`, which the crate may put another object in place of
a raw pointer to `_` in a variable assigned again while it may point there (23) -- fixtures/reject/src/lib.rs:551:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:559:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:568:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:576:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:585:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:593:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:631:15: a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:644:15: a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:936:26: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:949:22: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:959:12: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:968:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:978:17: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:983:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1604:10: a raw pointer to `Target` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1617:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1632:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1668:26: a raw pointer to `[u8; 4]` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:1669:10: a raw pointer to `[u8; 4]` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:2125:10: a raw pointer to `[u32; 3]` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:2217:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:2225:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there -- fixtures/reject/src/lib.rs:2233:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:539:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:547:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:556:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:564:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:573:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:581:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:619:15: a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:632:15: a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:924:26: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:937:22: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:947:12: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:956:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:966:17: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:971:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1592:10: a raw pointer to `Target` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1605:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1620:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1656:26: a raw pointer to `[u8; 4]` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:1657:10: a raw pointer to `[u8; 4]` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:2113:10: a raw pointer to `[u32; 3]` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:2205:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:2213:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there +- fixtures/reject/src/lib.rs:2221:10: a raw pointer to `(u32, u32)` in a variable assigned again while it may point there
unsupported call to `_` (20) -- fixtures/reject/src/lib.rs:164:8: unsupported call to `std::ops::Range::::contains::` -- fixtures/reject/src/lib.rs:244:10: unsupported call to `::hash::` -- fixtures/reject/src/lib.rs:279:2: unsupported call to `std::borrow::Cow::<'_, [u8]>::is_borrowed` -- fixtures/reject/src/lib.rs:305:2: unsupported call to ` as std::cmp::PartialEq>::eq` -- fixtures/reject/src/lib.rs:370:17: unsupported call to ` as std::iter::Iterator>::sum::` -- fixtures/reject/src/lib.rs:370:38: unsupported call to ` as std::iter::Iterator>::sum::` -- fixtures/reject/src/lib.rs:375:4: unsupported call to `core::str::::parse::` -- fixtures/reject/src/lib.rs:473:2: unsupported call to `::eq` -- fixtures/reject/src/lib.rs:473:17: unsupported call to `std::any::TypeId::of::` -- fixtures/reject/src/lib.rs:701:15: unsupported call to ` as std::iter::Iterator>::is_sorted` -- fixtures/reject/src/lib.rs:919:11: unsupported call to `std::ops::RangeTo::::contains::` -- fixtures/reject/src/lib.rs:919:32: unsupported call to ` as std::ops::RangeBounds>::contains::` -- fixtures/reject/src/lib.rs:924:9: unsupported call to `std::ops::Range::<&mut u8>::is_empty` -- fixtures/reject/src/lib.rs:1212:4: unsupported call to `core::num::::is_ascii_octdigit` -- fixtures/reject/src/lib.rs:1571:13: unsupported call to `core::str::::as_bytes_mut` -- fixtures/reject/src/lib.rs:1647:14: unsupported call to `std::ptr::addr_eq::<[u8; 4], [u8; 4]>` -- fixtures/reject/src/lib.rs:2211:2: unsupported call to `std::mem::size_of_val::` -- fixtures/reject/src/lib.rs:2295:13: unsupported call to `std::alloc::alloc_zeroed` -- fixtures/reject/src/lib.rs:2301:2: unsupported call to ` as std::fmt::Debug>::fmt` -- fixtures/reject/src/lib.rs:2301:25: unsupported call to ` as std::cmp::PartialEq>::eq` +- fixtures/reject/src/lib.rs:157:8: unsupported call to `std::ops::Range::::contains::` +- fixtures/reject/src/lib.rs:232:10: unsupported call to `::hash::` +- fixtures/reject/src/lib.rs:267:2: unsupported call to `std::borrow::Cow::<'_, [u8]>::is_borrowed` +- fixtures/reject/src/lib.rs:293:2: unsupported call to ` as std::cmp::PartialEq>::eq` +- fixtures/reject/src/lib.rs:358:17: unsupported call to ` as std::iter::Iterator>::sum::` +- fixtures/reject/src/lib.rs:358:38: unsupported call to ` as std::iter::Iterator>::sum::` +- fixtures/reject/src/lib.rs:363:4: unsupported call to `core::str::::parse::` +- fixtures/reject/src/lib.rs:461:2: unsupported call to `::eq` +- fixtures/reject/src/lib.rs:461:17: unsupported call to `std::any::TypeId::of::` +- fixtures/reject/src/lib.rs:689:15: unsupported call to ` as std::iter::Iterator>::is_sorted` +- fixtures/reject/src/lib.rs:907:11: unsupported call to `std::ops::RangeTo::::contains::` +- fixtures/reject/src/lib.rs:907:32: unsupported call to ` as std::ops::RangeBounds>::contains::` +- fixtures/reject/src/lib.rs:912:9: unsupported call to `std::ops::Range::<&mut u8>::is_empty` +- fixtures/reject/src/lib.rs:1200:4: unsupported call to `core::num::::is_ascii_octdigit` +- fixtures/reject/src/lib.rs:1559:13: unsupported call to `core::str::::as_bytes_mut` +- fixtures/reject/src/lib.rs:1635:14: unsupported call to `std::ptr::addr_eq::<[u8; 4], [u8; 4]>` +- fixtures/reject/src/lib.rs:2199:2: unsupported call to `std::mem::size_of_val::` +- fixtures/reject/src/lib.rs:2283:13: unsupported call to `std::alloc::alloc_zeroed` +- fixtures/reject/src/lib.rs:2289:2: unsupported call to ` as std::fmt::Debug>::fmt` +- fixtures/reject/src/lib.rs:2289:25: unsupported call to ` as std::cmp::PartialEq>::eq`
a reference through which a raw pointer may be made into `_` in `_`, which the crate may put another object in place of (15) -- fixtures/reject/src/lib.rs:1272:33: a reference through which a raw pointer may be made into `InArray` in `[InArray; 2]`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1281:33: a reference through which a raw pointer may be made into `InTuple` in `(u16, InTuple)`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1290:34: a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1311:33: a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1324:35: a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1333:35: a reference through which a raw pointer may be made into `InWritten` in `[InWritten; 1]`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1892:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Replaced`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1910:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Swapped`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1928:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Taken`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1947:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Assigned`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1973:22: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Deeper`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:1997:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Dynamic`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2013:15: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Closed`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2026:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `[std::cell::UnsafeCell; 2]`, which the crate may put another object in place of -- fixtures/reject/src/lib.rs:2072:20: a reference through which a raw pointer may be made into `Parked` in `Parking`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1260:33: a reference through which a raw pointer may be made into `InArray` in `[InArray; 2]`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1269:33: a reference through which a raw pointer may be made into `InTuple` in `(u16, InTuple)`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1278:34: a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1299:33: a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1312:35: a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1321:35: a reference through which a raw pointer may be made into `InWritten` in `[InWritten; 1]`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1880:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Replaced`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1898:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Swapped`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1916:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Taken`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1935:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Assigned`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1961:22: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Deeper`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:1985:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Dynamic`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2001:15: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Closed`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2014:20: a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `[std::cell::UnsafeCell; 2]`, which the crate may put another object in place of +- fixtures/reject/src/lib.rs:2060:20: a reference through which a raw pointer may be made into `Parked` in `Parking`, which the crate may put another object in place of
a reference to `_`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there (15) -- fixtures/reject/src/lib.rs:1590:18: a reference to `std::cell::UnsafeCell`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1668:26: a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1686:22: a reference to `Behind`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1701:16: a reference to `Unboxed`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1722:18: a reference to `Deep`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1744:21: a reference to `Slotted`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1763:20: a reference to `Shared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1780:20: a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1793:26: a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1808:22: a reference to `Compared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1825:22: a reference to `Enclosing`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1841:17: a reference to `Chosen`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1854:19: a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:1869:21: a reference to `Wrapped>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there -- fixtures/reject/src/lib.rs:2043:13: a reference to `std::option::Option>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1578:18: a reference to `std::cell::UnsafeCell`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1656:26: a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1674:22: a reference to `Behind`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1689:16: a reference to `Unboxed`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1710:18: a reference to `Deep`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1732:21: a reference to `Slotted`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1751:20: a reference to `Shared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1768:20: a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1781:26: a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1796:22: a reference to `Compared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1813:22: a reference to `Enclosing`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1829:17: a reference to `Chosen`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1842:19: a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:1857:21: a reference to `Wrapped>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there +- fixtures/reject/src/lib.rs:2031:13: a reference to `std::option::Option>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there
a cast from a pointer to `_` to one to `_`, which reads the bytes of one type as another (6) -- fixtures/reject/src/lib.rs:490:27: a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2112:13: a cast from a pointer to `u32` to one to `[u32; 2]`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2267:15: a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2268:16: a cast from a pointer to `u8` to one to `Halves`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2270:15: a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2295:12: a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:478:27: a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2100:13: a cast from a pointer to `u32` to one to `[u32; 2]`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2255:15: a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2256:16: a cast from a pointer to `u8` to one to `Halves`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2258:15: a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2283:12: a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another
`_` with a mutable reference to a value JS copies, which its mapping would copy (5) -- fixtures/reject/src/lib.rs:1170:22: `std::iter::once` with a mutable reference to a value JS copies, which its mapping would copy -- fixtures/reject/src/lib.rs:1572:13: `core::str::::get_unchecked_mut` with a mutable reference to a value JS copies, which its mapping would copy -- fixtures/reject/src/lib.rs:1577:20: `std::str::from_utf8_mut` with a mutable reference to a value JS copies, which its mapping would copy -- fixtures/reject/src/lib.rs:2052:4: `std::collections::LinkedList::::retain` with a mutable reference to a value JS copies, which its mapping would copy -- fixtures/reject/src/lib.rs:2054:2: `std::default::Default::default` with a mutable reference to a value JS copies, which its mapping would copy +- fixtures/reject/src/lib.rs:1158:22: `std::iter::once` with a mutable reference to a value JS copies, which its mapping would copy +- fixtures/reject/src/lib.rs:1560:13: `core::str::::get_unchecked_mut` with a mutable reference to a value JS copies, which its mapping would copy +- fixtures/reject/src/lib.rs:1565:20: `std::str::from_utf8_mut` with a mutable reference to a value JS copies, which its mapping would copy +- fixtures/reject/src/lib.rs:2040:4: `std::collections::LinkedList::::retain` with a mutable reference to a value JS copies, which its mapping would copy +- fixtures/reject/src/lib.rs:2042:2: `std::default::Default::default` with a mutable reference to a value JS copies, which its mapping would copy
a raw pointer to `_` in an element, a payload, or a union field, which is not supported yet (5) -- fixtures/reject/src/lib.rs:614:10: a raw pointer to `(u32, u32)` in an element, a payload, or a union field, which is not supported yet -- fixtures/reject/src/lib.rs:1661:15: a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet -- fixtures/reject/src/lib.rs:1661:18: a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet -- fixtures/reject/src/lib.rs:1661:37: a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet -- fixtures/reject/src/lib.rs:1661:44: a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet +- fixtures/reject/src/lib.rs:602:10: a raw pointer to `(u32, u32)` in an element, a payload, or a union field, which is not supported yet +- fixtures/reject/src/lib.rs:1649:15: a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet +- fixtures/reject/src/lib.rs:1649:18: a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet +- fixtures/reject/src/lib.rs:1649:37: a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet +- fixtures/reject/src/lib.rs:1649:44: a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet
memory from `alloc` cast to pointers to `_` and to `_`, which reads the bytes of one type as another (5) -- fixtures/reject/src/lib.rs:2281:7: memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2282:11: memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2284:17: memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2285:21: memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another -- fixtures/reject/src/lib.rs:2287:17: memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2269:7: memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2270:11: memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2272:17: memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2273:21: memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another +- fixtures/reject/src/lib.rs:2275:17: memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another
a variant of `_`, which is not supported: either is the same JS string (4) -- fixtures/reject/src/lib.rs:267:2: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string -- fixtures/reject/src/lib.rs:268:30: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string -- fixtures/reject/src/lib.rs:269:27: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string -- fixtures/reject/src/lib.rs:274:2: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string +- fixtures/reject/src/lib.rs:255:2: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string +- fixtures/reject/src/lib.rs:256:30: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string +- fixtures/reject/src/lib.rs:257:27: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string +- fixtures/reject/src/lib.rs:262:2: a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string
an assignment through a reference to `_` (4) -- fixtures/reject/src/lib.rs:83:2: an assignment through a reference to `std::sync::MutexGuard<'_, u8>` -- fixtures/reject/src/lib.rs:107:2: an assignment through a reference to `std::pin::Pin>>` -- fixtures/reject/src/lib.rs:172:2: an assignment through a reference to `std::pin::Pin<&mut Noisy>` -- fixtures/reject/src/lib.rs:2248:2: an assignment through a reference to `std::sync::LazyLock` +- fixtures/reject/src/lib.rs:76:2: an assignment through a reference to `std::sync::MutexGuard<'_, u8>` +- fixtures/reject/src/lib.rs:100:2: an assignment through a reference to `std::pin::Pin>>` +- fixtures/reject/src/lib.rs:165:2: an assignment through a reference to `std::pin::Pin<&mut Noisy>` +- fixtures/reject/src/lib.rs:2236:2: an assignment through a reference to `std::sync::LazyLock`
`_` of `_`, whose `clone_from` is its own, which is not supported yet (3) - fixtures/reject/src/lib.rs:21:4: `slice::fill` of `Reused`, whose `clone_from` is its own, which is not supported yet -- fixtures/reject/src/lib.rs:229:4: `slice::clone_from_slice` of `Reused`, whose `clone_from` is its own, which is not supported yet -- fixtures/reject/src/lib.rs:2206:4: `Clone::clone_from` of `std::vec::Vec`, whose `clone_from` is its own, which is not supported yet +- fixtures/reject/src/lib.rs:217:4: `slice::clone_from_slice` of `Reused`, whose `clone_from` is its own, which is not supported yet +- fixtures/reject/src/lib.rs:2194:4: `Clone::clone_from` of `std::vec::Vec`, whose `clone_from` is its own, which is not supported yet
a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as (3) -- fixtures/reject/src/lib.rs:503:3: a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as -- fixtures/reject/src/lib.rs:504:11: a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as -- fixtures/reject/src/lib.rs:2266:3: a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as +- fixtures/reject/src/lib.rs:491:3: a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as +- fixtures/reject/src/lib.rs:492:11: a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as +- fixtures/reject/src/lib.rs:2254:3: a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as
a copy between pointers to `_`, which JS keeps as an object that knows no array it is in (3) -- fixtures/reject/src/lib.rs:1645:3: a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in -- fixtures/reject/src/lib.rs:1646:3: a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in -- fixtures/reject/src/lib.rs:2097:3: a copy between pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:1633:3: a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:1634:3: a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:2085:3: a copy between pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in
a copy of a closure that changes what it captured (3) -- fixtures/reject/src/lib.rs:182:14: a copy of a closure that changes what it captured -- fixtures/reject/src/lib.rs:443:14: a copy of a closure that changes what it captured -- fixtures/reject/src/lib.rs:444:14: a copy of a closure that changes what it captured +- fixtures/reject/src/lib.rs:175:14: a copy of a closure that changes what it captured +- fixtures/reject/src/lib.rs:431:14: a copy of a closure that changes what it captured +- fixtures/reject/src/lib.rs:432:14: a copy of a closure that changes what it captured
a slice or a cell of a mutable reference to `_` that names no place, which a whole write would replace only there (3) -- fixtures/reject/src/lib.rs:2201:2: a slice or a cell of a mutable reference to `Reused` that names no place, which a whole write would replace only there -- fixtures/reject/src/lib.rs:2243:3: a slice or a cell of a mutable reference to `std::cell::LazyCell` that names no place, which a whole write would replace only there -- fixtures/reject/src/lib.rs:2254:2: a slice or a cell of a mutable reference to `std::thread::LocalKey` that names no place, which a whole write would replace only there +- fixtures/reject/src/lib.rs:2189:2: a slice or a cell of a mutable reference to `Reused` that names no place, which a whole write would replace only there +- fixtures/reject/src/lib.rs:2231:3: a slice or a cell of a mutable reference to `std::cell::LazyCell` that names no place, which a whole write would replace only there +- fixtures/reject/src/lib.rs:2242:2: a slice or a cell of a mutable reference to `std::thread::LocalKey` that names no place, which a whole write would replace only there
an offset of a pointer to `_`, which JS keeps as an object that knows no array it is in (3) -- fixtures/reject/src/lib.rs:1648:56: an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in -- fixtures/reject/src/lib.rs:1648:73: an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in -- fixtures/reject/src/lib.rs:2096:13: an offset of a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:1636:56: an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:1636:73: an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:2084:13: an offset of a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in
overriding `_` with a call generic over its accumulator or closure, which is not supported yet (3) -- fixtures/reject/src/lib.rs:2410:18: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet -- fixtures/reject/src/lib.rs:2500:11: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet -- fixtures/reject/src/lib.rs:2538:11: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet +- fixtures/reject/src/lib.rs:2398:18: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet +- fixtures/reject/src/lib.rs:2488:11: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet +- fixtures/reject/src/lib.rs:2526:11: overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet
replacing the value behind a reference to `_` (3) -- fixtures/reject/src/lib.rs:91:2: replacing the value behind a reference to `std::pin::Pin fn(&'a mut std::task::Context<'b>) -> std::task::Poll>>>` -- fixtures/reject/src/lib.rs:99:2: replacing the value behind a reference to `std::pin::Pin>` -- fixtures/reject/src/lib.rs:112:2: replacing the value behind a reference to `std::sync::MutexGuard<'_, u8>` +- fixtures/reject/src/lib.rs:84:2: replacing the value behind a reference to `std::pin::Pin fn(&'a mut std::task::Context<'b>) -> std::task::Poll>>>` +- fixtures/reject/src/lib.rs:92:2: replacing the value behind a reference to `std::pin::Pin>` +- fixtures/reject/src/lib.rs:105:2: replacing the value behind a reference to `std::sync::MutexGuard<'_, u8>`
@@ -733,7 +731,7 @@ The type or module each refused type or path belongs to. - fixtures/reject/src/lib.rs:7:14: unsupported type `f16` - fixtures/reject/src/lib.rs:7:25: unsupported type `f16` -- fixtures/reject/src/lib.rs:66:51: unsupported type `f16` +- fixtures/reject/src/lib.rs:59:51: unsupported type `f16`
@@ -744,13 +742,6 @@ The type or module each refused type or path belongs to. -
`_` of `_`, whose `None` is `rt.None`, which is not supported yet (2) - -- fixtures/reject/src/lib.rs:37:4: `Iterator::scan` of `Option>`, whose `None` is `rt.None`, which is not supported yet -- fixtures/reject/src/lib.rs:188:11: `Iterator::scan` of `Option<()>`, whose `None` is `rt.None`, which is not supported yet - -
-
`_`, a trait object of another crate's trait, which is not supported yet (2) - fixtures/reject/src/lib.rs:11:16: `dyn std::iter::Iterator`, a trait object of another crate's trait, which is not supported yet @@ -760,120 +751,120 @@ The type or module each refused type or path belongs to.
`_`, a trait object of the generic trait `_`, which is not supported yet (2) -- fixtures/reject/src/lib.rs:393:23: `dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet -- fixtures/reject/src/lib.rs:394:4: `dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet +- fixtures/reject/src/lib.rs:381:23: `dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet +- fixtures/reject/src/lib.rs:382:4: `dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet
`offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays (2) -- fixtures/reject/src/lib.rs:2160:5: `offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays -- fixtures/reject/src/lib.rs:2161:26: `offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays +- fixtures/reject/src/lib.rs:2148:5: `offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays +- fixtures/reject/src/lib.rs:2149:26: `offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays
`offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays (2) -- fixtures/reject/src/lib.rs:2162:24: `offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays -- fixtures/reject/src/lib.rs:2163:23: `offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays +- fixtures/reject/src/lib.rs:2150:24: `offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays +- fixtures/reject/src/lib.rs:2151:23: `offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays
a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust (2) -- fixtures/reject/src/lib.rs:2185:18: a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust -- fixtures/reject/src/lib.rs:2188:21: a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust +- fixtures/reject/src/lib.rs:2173:18: a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust +- fixtures/reject/src/lib.rs:2176:21: a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust
a raw or mutable slice of a byte in no array of bytes (2) -- fixtures/reject/src/lib.rs:2171:12: a raw or mutable slice of a byte in no array of bytes -- fixtures/reject/src/lib.rs:2172:19: a raw or mutable slice of a byte in no array of bytes +- fixtures/reject/src/lib.rs:2159:12: a raw or mutable slice of a byte in no array of bytes +- fixtures/reject/src/lib.rs:2160:19: a raw or mutable slice of a byte in no array of bytes
a raw pointer to a place of `()`, which has no address of its own (2) -- fixtures/reject/src/lib.rs:663:15: a raw pointer to a place of `()`, which has no address of its own -- fixtures/reject/src/lib.rs:663:29: a raw pointer to a place of `()`, which has no address of its own +- fixtures/reject/src/lib.rs:651:15: a raw pointer to a place of `()`, which has no address of its own +- fixtures/reject/src/lib.rs:651:29: a raw pointer to a place of `()`, which has no address of its own
an upcast from `_` to `_`, which is not supported yet (2) -- fixtures/reject/src/lib.rs:461:32: an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet -- fixtures/reject/src/lib.rs:467:46: an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet +- fixtures/reject/src/lib.rs:449:32: an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet +- fixtures/reject/src/lib.rs:455:46: an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet
comparing pointers to `_`, each a place JS makes of its own (2) -- fixtures/reject/src/lib.rs:531:2: comparing pointers to `u32`, each a place JS makes of its own -- fixtures/reject/src/lib.rs:2080:2: comparing pointers to `u32`, each a place JS makes of its own +- fixtures/reject/src/lib.rs:519:2: comparing pointers to `u32`, each a place JS makes of its own +- fixtures/reject/src/lib.rs:2068:2: comparing pointers to `u32`, each a place JS makes of its own
overriding `_` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet (2) -- fixtures/reject/src/lib.rs:2458:3: overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet -- fixtures/reject/src/lib.rs:2480:3: overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet +- fixtures/reject/src/lib.rs:2446:3: overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet +- fixtures/reject/src/lib.rs:2468:3: overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet
passing `_`, which drops, to `_`, which is not supported yet (2) -- fixtures/reject/src/lib.rs:262:4: passing `{closure@fixtures/reject/src/lib.rs:262:13: 262:27}`, which drops, to `str::contains`, which is not supported yet -- fixtures/reject/src/lib.rs:719:4: passing `{closure@fixtures/reject/src/lib.rs:719:11: 719:19}`, which drops, to `String::retain`, which is not supported yet +- fixtures/reject/src/lib.rs:250:4: passing `{closure@fixtures/reject/src/lib.rs:250:13: 250:27}`, which drops, to `str::contains`, which is not supported yet +- fixtures/reject/src/lib.rs:707:4: passing `{closure@fixtures/reject/src/lib.rs:707:11: 707:19}`, which drops, to `String::retain`, which is not supported yet
unsupported type `_` from another crate (2) -- fixtures/reject/src/lib.rs:374:32: unsupported type `std::net::AddrParseError` from another crate -- fixtures/reject/src/lib.rs:374:32: unsupported type `std::net::Ipv4Addr` from another crate +- fixtures/reject/src/lib.rs:362:32: unsupported type `std::net::AddrParseError` from another crate +- fixtures/reject/src/lib.rs:362:32: unsupported type `std::net::Ipv4Addr` from another crate
`Buf::copy_to_bytes` of `_`, a value JS copies, which is not supported (1) -- fixtures/reject/src/lib.rs:696:2: `Buf::copy_to_bytes` of `Blank`, a value JS copies, which is not supported +- fixtures/reject/src/lib.rs:684:2: `Buf::copy_to_bytes` of `Blank`, a value JS copies, which is not supported
`BufMut::put` of `_` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported (1) -- fixtures/reject/src/lib.rs:330:2: `BufMut::put` of `Counted` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported +- fixtures/reject/src/lib.rs:318:2: `BufMut::put` of `Counted` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported
`BufMut::put` of `_` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported (1) -- fixtures/reject/src/lib.rs:325:2: `BufMut::put` of `Counted` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported +- fixtures/reject/src/lib.rs:313:2: `BufMut::put` of `Counted` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported
`Bytes::from_owner` of `_`, which would drop with the last clone of what it makes, which is not supported (1) -- fixtures/reject/src/lib.rs:310:2: `Bytes::from_owner` of `std::sync::Arc<[u8]>`, which would drop with the last clone of what it makes, which is not supported +- fixtures/reject/src/lib.rs:298:2: `Bytes::from_owner` of `std::sync::Arc<[u8]>`, which would drop with the last clone of what it makes, which is not supported
`Extend` of `_` by `_`, whose `_` of `_` is not supported yet (1) -- fixtures/reject/src/lib.rs:1207:31: `Extend` of `(std::vec::Vec, Tens)` by `(u8, u8)`, whose `Tens` of `u8` is not supported yet +- fixtures/reject/src/lib.rs:1195:31: `Extend` of `(std::vec::Vec, Tens)` by `(u8, u8)`, whose `Tens` of `u8` is not supported yet
`Pointer` formatting, as in `{:p}`, is not supported (1) -- fixtures/reject/src/lib.rs:49:2: `Pointer` formatting, as in `{:p}`, is not supported +- fixtures/reject/src/lib.rs:42:2: `Pointer` formatting, as in `{:p}`, is not supported
`_` is not supported: its `Pending` and `Ready` would both be `rt.OuterPending` (1) -- fixtures/reject/src/lib.rs:72:20: `Poll>>>` is not supported: its `Pending` and `Ready` would both be `rt.OuterPending` +- fixtures/reject/src/lib.rs:65:20: `Poll>>>` is not supported: its `Pending` and `Ready` would both be `rt.OuterPending`
@@ -885,175 +876,175 @@ The type or module each refused type or path belongs to.
`_` is not supported: its field `_` is `_`, typed `_`, whose `Pending` would be `rt.OuterPending` as `_` (1) -- fixtures/reject/src/lib.rs:431:2: `Waiting>` is not supported: its field `poll` is `Poll`, typed `rt.Poll`, whose `Pending` would be `rt.OuterPending` as `Poll>` +- fixtures/reject/src/lib.rs:419:2: `Waiting>` is not supported: its field `poll` is `Poll`, typed `rt.Poll`, whose `Pending` would be `rt.OuterPending` as `Poll>`
`_` of `_` by `_`, which is not supported yet (1) -- fixtures/reject/src/lib.rs:211:6: `HashMap::contains_key` of `std::collections::HashMap` by `u8`, which is not supported yet +- fixtures/reject/src/lib.rs:199:6: `HashMap::contains_key` of `std::collections::HashMap` by `u8`, which is not supported yet
`_` of `_`, which is not supported yet (1) -- fixtures/reject/src/lib.rs:473:4: `std::any::Any::type_id` of `dyn std::any::Any`, which is not supported yet +- fixtures/reject/src/lib.rs:461:4: `std::any::Any::type_id` of `dyn std::any::Any`, which is not supported yet
`_`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported (1) -- fixtures/reject/src/lib.rs:319:6: `BytesMut::capacity`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported +- fixtures/reject/src/lib.rs:307:6: `BytesMut::capacity`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported
`clone_from` of `_`, whose items' `clone_from` is their own, which is not supported yet (1) -- fixtures/reject/src/lib.rs:2053:4: `clone_from` of `std::collections::LinkedList`, whose items' `clone_from` is their own, which is not supported yet +- fixtures/reject/src/lib.rs:2041:4: `clone_from` of `std::collections::LinkedList`, whose items' `clone_from` is their own, which is not supported yet
`collect` of `_`, which sorts by `_`'s own `Ord`, of entries that drop, which is not supported yet (1) -- fixtures/reject/src/lib.rs:890:22: `collect` of `std::collections::BTreeMap, Noisy>`, which sorts by `std::cell::Cell`'s own `Ord`, of entries that drop, which is not supported yet +- fixtures/reject/src/lib.rs:878:22: `collect` of `std::collections::BTreeMap, Noisy>`, which sorts by `std::cell::Cell`'s own `Ord`, of entries that drop, which is not supported yet
`fmt::Arguments` with a placeholder, or not made in place, written to `_`'s own `fmt::Write`, which is not supported yet: std splits what a placeholder writes into `write_str` calls the runtime does not make (1) -- fixtures/reject/src/lib.rs:55:10: `fmt::Arguments` with a placeholder, or not made in place, written to `Sink`'s own `fmt::Write`, which is not supported yet: std splits what a placeholder writes into `write_str` calls the runtime does not make +- fixtures/reject/src/lib.rs:48:10: `fmt::Arguments` with a placeholder, or not made in place, written to `Sink`'s own `fmt::Write`, which is not supported yet: std splits what a placeholder writes into `write_str` calls the runtime does not make
`offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays (1) -- fixtures/reject/src/lib.rs:2165:21: `offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays +- fixtures/reject/src/lib.rs:2153:21: `offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays
`offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays (1) -- fixtures/reject/src/lib.rs:2164:20: `offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays +- fixtures/reject/src/lib.rs:2152:20: `offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays
`offset_from` of pointers to `()`, which has no bytes (1) -- fixtures/reject/src/lib.rs:2107:13: `offset_from` of pointers to `()`, which has no bytes +- fixtures/reject/src/lib.rs:2095:13: `offset_from` of pointers to `()`, which has no bytes
`offset_from` of pointers to `_`, which JS keeps as an object that knows no array it is in (1) -- fixtures/reject/src/lib.rs:2100:36: `offset_from` of pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:2088:36: `offset_from` of pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in
a cast from `_` to `_` (1) -- fixtures/reject/src/lib.rs:68:2: a cast from `u64` to `f16` +- fixtures/reject/src/lib.rs:61:2: a cast from `u64` to `f16`
a coercion to `_` (1) -- fixtures/reject/src/lib.rs:234:2: a coercion to `std::sync::Arc<[u8]>` +- fixtures/reject/src/lib.rs:222:2: a coercion to `std::sync::Arc<[u8]>`
a coercion to `_`, which is not supported yet (1) -- fixtures/reject/src/lib.rs:420:30: a coercion to `&Tail`, which is not supported yet +- fixtures/reject/src/lib.rs:408:30: a coercion to `&Tail`, which is not supported yet
a constant of type `_` (1) -- fixtures/reject/src/lib.rs:2301:34: a constant of type `std::mem::ManuallyDrop` +- fixtures/reject/src/lib.rs:2289:34: a constant of type `std::mem::ManuallyDrop`
a constant of type `_`, a pointer into memory translation can't name (1) -- fixtures/reject/src/lib.rs:713:3: a constant of type `&u32`, a pointer into memory translation can't name +- fixtures/reject/src/lib.rs:701:3: a constant of type `&u32`, a pointer into memory translation can't name
a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust (1) -- fixtures/reject/src/lib.rs:2183:3: a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust +- fixtures/reject/src/lib.rs:2171:3: a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust
a dangling pointer to `_`, a value of no bytes made of more than structs and tuples (1) -- fixtures/reject/src/lib.rs:672:11: a dangling pointer to `Only`, a value of no bytes made of more than structs and tuples +- fixtures/reject/src/lib.rs:660:11: a dangling pointer to `Only`, a value of no bytes made of more than structs and tuples
a future of `_`, which can be `rt.Pending`, as the future's own `Pending` is (1) -- fixtures/reject/src/lib.rs:77:34: a future of `std::task::Poll`, which can be `rt.Pending`, as the future's own `Pending` is +- fixtures/reject/src/lib.rs:70:34: a future of `std::task::Poll`, which can be `rt.Pending`, as the future's own `Pending` is
a mapped guard of `_`, which JS can't write in place (1) -- fixtures/reject/src/lib.rs:2087:10: a mapped guard of `{closure@fixtures/reject/src/lib.rs:2086:38: 2086:50}`, which JS can't write in place +- fixtures/reject/src/lib.rs:2075:10: a mapped guard of `{closure@fixtures/reject/src/lib.rs:2074:38: 2074:50}`, which JS can't write in place
a mutable reference into a `Result`'s payload, passed on or kept (1) -- fixtures/reject/src/lib.rs:298:12: a mutable reference into a `Result`'s payload, passed on or kept +- fixtures/reject/src/lib.rs:286:12: a mutable reference into a `Result`'s payload, passed on or kept
a mutable static, which any code may write (1) -- fixtures/reject/src/lib.rs:61:11: a mutable static, which any code may write +- fixtures/reject/src/lib.rs:54:11: a mutable static, which any code may write
a pointer into `_`, which JS keeps as an object that knows no array it is in (1) -- fixtures/reject/src/lib.rs:2094:12: a pointer into `(u8, u8)`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:2082:12: a pointer into `(u8, u8)`, which JS keeps as an object that knows no array it is in
a pointer into an array of `_`, which JS keeps as an object that knows no array it is in (1) -- fixtures/reject/src/lib.rs:2099:30: a pointer into an array of `(u8, u8)`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:2087:30: a pointer into an array of `(u8, u8)`, which JS keeps as an object that knows no array it is in
a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust (1) -- fixtures/reject/src/lib.rs:2187:27: a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust +- fixtures/reject/src/lib.rs:2175:27: a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust
a pointer's address, which JS has no counterpart of (1) -- fixtures/reject/src/lib.rs:495:17: a pointer's address, which JS has no counterpart of +- fixtures/reject/src/lib.rs:483:17: a pointer's address, which JS has no counterpart of
a printable type must implement `Display` or `Debug` (1) -- fixtures/reject/src/lib.rs:64:1: a printable type must implement `Display` or `Debug` +- fixtures/reject/src/lib.rs:57:1: a printable type must implement `Display` or `Debug`
a raw pointer to `_` behind a reference, which is the object and not where it is kept (1) -- fixtures/reject/src/lib.rs:512:10: a raw pointer to `std::vec::Vec` behind a reference, which is the object and not where it is kept +- fixtures/reject/src/lib.rs:500:10: a raw pointer to `std::vec::Vec` behind a reference, which is the object and not where it is kept
a reference through which a raw pointer may be made into `_` in an element, a payload, or a union field, which is not supported yet (1) -- fixtures/reject/src/lib.rs:1299:11: a reference through which a raw pointer may be made into `InPayload` in an element, a payload, or a union field, which is not supported yet +- fixtures/reject/src/lib.rs:1287:11: a reference through which a raw pointer may be made into `InPayload` in an element, a payload, or a union field, which is not supported yet
@@ -1065,31 +1056,31 @@ The type or module each refused type or path belongs to.
a slice from a pointer to `_`, which JS keeps as an object that knows no array it is in (1) -- fixtures/reject/src/lib.rs:2098:11: a slice from a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in +- fixtures/reject/src/lib.rs:2086:11: a slice from a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in
a slice of `()`, which has no bytes, from a pointer (1) -- fixtures/reject/src/lib.rs:2107:39: a slice of `()`, which has no bytes, from a pointer +- fixtures/reject/src/lib.rs:2095:39: a slice of `()`, which has no bytes, from a pointer
a slice of one byte's place, which a byte slice can view only in an array of bytes (1) -- fixtures/reject/src/lib.rs:2195:2: a slice of one byte's place, which a byte slice can view only in an array of bytes +- fixtures/reject/src/lib.rs:2183:2: a slice of one byte's place, which a byte slice can view only in an array of bytes
a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust (1) -- fixtures/reject/src/lib.rs:2186:6: a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust +- fixtures/reject/src/lib.rs:2174:6: a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust
a trait object of `_`, which is not supported yet (1) -- fixtures/reject/src/lib.rs:410:26: a trait object of `[u8; 4]`, which is not supported yet +- fixtures/reject/src/lib.rs:398:26: a trait object of `[u8; 4]`, which is not supported yet
@@ -1101,78 +1092,78 @@ The type or module each refused type or path belongs to.
comparing `_` (1) -- fixtures/reject/src/lib.rs:1647:41: comparing `*mut [u8; 4]` +- fixtures/reject/src/lib.rs:1635:41: comparing `*mut [u8; 4]`
comparing `_` as a key, which is not supported yet (1) -- fixtures/reject/src/lib.rs:193:75: comparing `std::collections::BTreeSet` as a key, which is not supported yet +- fixtures/reject/src/lib.rs:181:75: comparing `std::collections::BTreeSet` as a key, which is not supported yet
comparing pointers to `_` in an atomic, which JS has no address of (1) -- fixtures/reject/src/lib.rs:712:15: comparing pointers to `u32` in an atomic, which JS has no address of +- fixtures/reject/src/lib.rs:700:15: comparing pointers to `u32` in an atomic, which JS has no address of
comparing pointers to `_`, which has no bytes and so no address of its own (1) -- fixtures/reject/src/lib.rs:663:70: comparing pointers to `Bare`, which has no bytes and so no address of its own +- fixtures/reject/src/lib.rs:651:70: comparing pointers to `Bare`, which has no bytes and so no address of its own
const generic types are not supported: `_` (1) -- fixtures/reject/src/lib.rs:2032:1: const generic types are not supported: `Block` +- fixtures/reject/src/lib.rs:2020:1: const generic types are not supported: `Block`
constructing `_` (1) -- fixtures/reject/src/lib.rs:285:53: constructing `std::borrow::Cow<'_, std::sync::Arc>` +- fixtures/reject/src/lib.rs:273:53: constructing `std::borrow::Cow<'_, std::sync::Arc>`
hashing `_` as a key, which is not supported yet (1) -- fixtures/reject/src/lib.rs:193:75: hashing `std::collections::BTreeSet` as a key, which is not supported yet +- fixtures/reject/src/lib.rs:181:75: hashing `std::collections::BTreeSet` as a key, which is not supported yet
hashing `_` by its address, which JS has no counterpart of (1) -- fixtures/reject/src/lib.rs:1651:5: hashing `*const [u8; 4]` by its address, which JS has no counterpart of +- fixtures/reject/src/lib.rs:1639:5: hashing `*const [u8; 4]` by its address, which JS has no counterpart of
hashing `_` through `_`'s own `Hash::hash_slice`, which is not supported yet (1) -- fixtures/reject/src/lib.rs:253:16: hashing `std::vec::Vec` through `Batched`'s own `Hash::hash_slice`, which is not supported yet +- fixtures/reject/src/lib.rs:241:16: hashing `std::vec::Vec` through `Batched`'s own `Hash::hash_slice`, which is not supported yet
overriding `_` with a constant generic over its accumulator or closure, which is not supported yet (1) -- fixtures/reject/src/lib.rs:2435:11: overriding `Iterator::fold` with a constant generic over its accumulator or closure, which is not supported yet +- fixtures/reject/src/lib.rs:2423:11: overriding `Iterator::fold` with a constant generic over its accumulator or closure, which is not supported yet
overriding `_` with its accumulator in an `Option` or a `Poll`, which is not supported yet (1) -- fixtures/reject/src/lib.rs:126:3: overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet +- fixtures/reject/src/lib.rs:119:3: overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet
overriding `_`, which std's adaptors call in place of `next` or beside it (1) -- fixtures/reject/src/lib.rs:150:2: overriding `DoubleEndedIterator::rfind`, which std's adaptors call in place of `next` or beside it +- fixtures/reject/src/lib.rs:143:2: overriding `DoubleEndedIterator::rfind`, which std's adaptors call in place of `next` or beside it
union `_`, whose fields overlap in `_` and `f64`, which JS keeps apart (1) -- fixtures/reject/src/lib.rs:517:1: union `Bits`, whose fields overlap in `u32` and `f64`, which JS keeps apart +- fixtures/reject/src/lib.rs:505:1: union `Bits`, whose fields overlap in `u32` and `f64`, which JS keeps apart
diff --git a/ts/fixtures/reject/expected.txt b/ts/fixtures/reject/expected.txt index d8ce22f09..0e20faf77 100644 --- a/ts/fixtures/reject/expected.txt +++ b/ts/fixtures/reject/expected.txt @@ -1,8 +1,8 @@ no item `lopsided` in the crate no item `missing` in the crate no item `bound_ranges` in the crate -a root must not be generic at fixtures/reject/src/lib.rs:66:1 -a printable type must implement `Display` or `Debug` at fixtures/reject/src/lib.rs:64:1 +a root must not be generic at fixtures/reject/src/lib.rs:59:1 +a printable type must implement `Display` or `Debug` at fixtures/reject/src/lib.rs:57:1 unsupported type `f16` at fixtures/reject/src/lib.rs:7:14 a scalar constant of type `f16` at fixtures/reject/src/lib.rs:8:2 arithmetic on `f16` at fixtures/reject/src/lib.rs:8:2 @@ -12,253 +12,251 @@ unsupported type `f16` at fixtures/reject/src/lib.rs:7:25 `Option>>` is not supported: its `None` and `Some` would both be `rt.None` at fixtures/reject/src/lib.rs:17:2 `Option>>` is not supported: its `None` and `Some` would both be `rt.None` at fixtures/reject/src/lib.rs:16:15 `slice::fill` of `Reused`, whose `clone_from` is its own, which is not supported yet at fixtures/reject/src/lib.rs:21:4 -`Iterator::scan` of `Option>`, whose `None` is `rt.None`, which is not supported yet at fixtures/reject/src/lib.rs:37:4 `Maybe<()>` is not supported: its field `value` is `Option`, typed `T | undefined`, whose `None` would be `rt.None` as `Option<()>` at fixtures/reject/src/lib.rs:31:2 -`Pointer` formatting, as in `{:p}`, is not supported at fixtures/reject/src/lib.rs:49:11 -`fmt::Arguments` with a placeholder, or not made in place, written to `Sink`'s own `fmt::Write`, which is not supported yet: std splits what a placeholder writes into `write_str` calls the runtime does not make at fixtures/reject/src/lib.rs:55:10 -a mutable static, which any code may write at fixtures/reject/src/lib.rs:61:11 -`Poll>>>` is not supported: its `Pending` and `Ready` would both be `rt.OuterPending` at fixtures/reject/src/lib.rs:72:20 -a future of `std::task::Poll`, which can be `rt.Pending`, as the future's own `Pending` is at fixtures/reject/src/lib.rs:77:34 -an assignment through a reference to `std::sync::MutexGuard<'_, u8>` at fixtures/reject/src/lib.rs:83:2 -replacing the value behind a reference to `std::sync::MutexGuard<'_, u8>` at fixtures/reject/src/lib.rs:112:2 -replacing the value behind a reference to `std::pin::Pin fn(&'a mut std::task::Context<'b>) -> std::task::Poll>>>` at fixtures/reject/src/lib.rs:91:2 -an assignment through a reference to `std::pin::Pin>>` at fixtures/reject/src/lib.rs:107:2 -replacing the value behind a reference to `std::pin::Pin>` at fixtures/reject/src/lib.rs:99:2 -unsupported call to `std::ops::Range::::contains::` at fixtures/reject/src/lib.rs:164:8 -unsupported call to `std::ops::RangeTo::::contains::` at fixtures/reject/src/lib.rs:919:11 -unsupported call to ` as std::ops::RangeBounds>::contains::` at fixtures/reject/src/lib.rs:919:32 -unsupported call to `std::ops::Range::<&mut u8>::is_empty` at fixtures/reject/src/lib.rs:924:9 -an assignment through a reference to `std::pin::Pin<&mut Noisy>` at fixtures/reject/src/lib.rs:172:2 -a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:182:14 -`Iterator::scan` of `Option<()>`, whose `None` is `rt.None`, which is not supported yet at fixtures/reject/src/lib.rs:188:11 -hashing `std::collections::BTreeSet` as a key, which is not supported yet at fixtures/reject/src/lib.rs:193:75 -comparing `std::collections::BTreeSet` as a key, which is not supported yet at fixtures/reject/src/lib.rs:193:75 -`HashMap::contains_key` of `std::collections::HashMap` by `u8`, which is not supported yet at fixtures/reject/src/lib.rs:211:6 -`slice::clone_from_slice` of `Reused`, whose `clone_from` is its own, which is not supported yet at fixtures/reject/src/lib.rs:229:4 -a coercion to `std::sync::Arc<[u8]>` at fixtures/reject/src/lib.rs:234:2 -a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:267:2 -a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:269:27 -a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:268:30 -a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:274:2 -unsupported call to `std::borrow::Cow::<'_, [u8]>::is_borrowed` at fixtures/reject/src/lib.rs:279:2 -constructing `std::borrow::Cow<'_, std::sync::Arc>` at fixtures/reject/src/lib.rs:285:53 -hashing `std::vec::Vec` through `Batched`'s own `Hash::hash_slice`, which is not supported yet at fixtures/reject/src/lib.rs:253:16 -passing `{closure@fixtures/reject/src/lib.rs:262:13: 262:27}`, which drops, to `str::contains`, which is not supported yet at fixtures/reject/src/lib.rs:262:4 -unsupported call to ` as std::iter::Iterator>::sum::` at fixtures/reject/src/lib.rs:370:17 -unsupported call to ` as std::iter::Iterator>::sum::` at fixtures/reject/src/lib.rs:370:38 -a mutable reference into a `Result`'s payload, passed on or kept at fixtures/reject/src/lib.rs:298:12 -unsupported call to ` as std::cmp::PartialEq>::eq` at fixtures/reject/src/lib.rs:305:2 -`Bytes::from_owner` of `std::sync::Arc<[u8]>`, which would drop with the last clone of what it makes, which is not supported at fixtures/reject/src/lib.rs:310:2 -`BytesMut::capacity`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported at fixtures/reject/src/lib.rs:319:6 -`BufMut::put` of `Counted` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported at fixtures/reject/src/lib.rs:325:2 -`BufMut::put` of `Counted` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported at fixtures/reject/src/lib.rs:330:2 -unsupported call to `core::str::::parse::` at fixtures/reject/src/lib.rs:375:4 -unsupported type `std::net::Ipv4Addr` from another crate at fixtures/reject/src/lib.rs:374:32 -unsupported type `std::net::AddrParseError` from another crate at fixtures/reject/src/lib.rs:374:32 -`dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet at fixtures/reject/src/lib.rs:393:23 -`dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet at fixtures/reject/src/lib.rs:394:4 -a trait object of `[u8; 4]`, which is not supported yet at fixtures/reject/src/lib.rs:410:26 -a coercion to `&Tail`, which is not supported yet at fixtures/reject/src/lib.rs:420:30 -`Waiting>` is not supported: its field `poll` is `Poll`, typed `rt.Poll`, whose `Pending` would be `rt.OuterPending` as `Poll>` at fixtures/reject/src/lib.rs:431:2 -a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:443:14 -a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:444:14 -an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:461:32 -an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:467:46 -`std::any::Any::type_id` of `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:473:4 -unsupported call to `std::any::TypeId::of::` at fixtures/reject/src/lib.rs:473:17 -unsupported call to `::eq` at fixtures/reject/src/lib.rs:473:2 -a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:490:27 -a pointer's address, which JS has no counterpart of at fixtures/reject/src/lib.rs:495:17 -a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as at fixtures/reject/src/lib.rs:503:3 -a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as at fixtures/reject/src/lib.rs:504:11 -a raw pointer to `std::vec::Vec` behind a reference, which is the object and not where it is kept at fixtures/reject/src/lib.rs:512:10 -union `Bits`, whose fields overlap in `u32` and `f64`, which JS keeps apart at fixtures/reject/src/lib.rs:523:10 -comparing pointers to `u32`, each a place JS makes of its own at fixtures/reject/src/lib.rs:531:2 -comparing pointers to `u32`, each a place JS makes of its own at fixtures/reject/src/lib.rs:2080:2 -a raw pointer to `(u32, u32)` in `Span2`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:543:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:551:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:559:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:568:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:576:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:585:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:593:10 -a reference to `std::cell::UnsafeCell`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1590:18 -a raw pointer to `Target` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1604:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1617:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1632:10 -a reference to `Behind`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1686:22 -a reference to `Unboxed`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1701:16 -a reference to `Deep`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1722:18 -a reference to `Slotted`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1744:21 -a reference to `Shared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1763:20 -a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1780:20 -a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1793:26 -a reference to `Wrapped>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1869:21 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Replaced`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1892:20 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Swapped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1910:20 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Taken`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1928:20 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Assigned`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1947:20 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Deeper`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1973:22 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Dynamic`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1997:20 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Closed`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2013:15 -a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `[std::cell::UnsafeCell; 2]`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2026:20 -a reference to `Compared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1808:22 -a reference to `Enclosing`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1825:22 -a reference to `Chosen`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1841:17 -a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1854:19 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:936:26 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:949:22 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:959:12 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:968:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:978:17 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:983:10 -a raw pointer to `(u32, u32)` in `Window`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:604:2 -a raw pointer to `(u32, u32)` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:614:10 -a raw pointer to `(u32, u32)` in `std::cell::UnsafeCell<(u32, u32)>`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:622:15 -a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:631:15 -a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:644:15 -a raw pointer to `std::cell::UnsafeCell` in `Hits`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:655:21 -a raw pointer to a place of `()`, which has no address of its own at fixtures/reject/src/lib.rs:663:15 -a raw pointer to a place of `()`, which has no address of its own at fixtures/reject/src/lib.rs:663:29 -comparing pointers to `Bare`, which has no bytes and so no address of its own at fixtures/reject/src/lib.rs:663:70 -a dangling pointer to `Only`, a value of no bytes made of more than structs and tuples at fixtures/reject/src/lib.rs:672:11 -`Buf::copy_to_bytes` of `Blank`, a value JS copies, which is not supported at fixtures/reject/src/lib.rs:696:2 -unsupported call to ` as std::iter::Iterator>::is_sorted` at fixtures/reject/src/lib.rs:701:15 -comparing pointers to `u32` in an atomic, which JS has no address of at fixtures/reject/src/lib.rs:712:15 -a constant of type `&u32`, a pointer into memory translation can't name at fixtures/reject/src/lib.rs:713:3 -passing `{closure@fixtures/reject/src/lib.rs:719:11: 719:19}`, which drops, to `String::retain`, which is not supported yet at fixtures/reject/src/lib.rs:719:4 -a raw pointer to `(u32, u32)` in `Plain`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:761:10 -a raw pointer to `(u32, u32)` in `Track`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:787:19 -a raw pointer to `(u32, u32)` in `Lane`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:807:19 -a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:843:10 -a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:844:10 -a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:845:58 -a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:857:19 -a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:858:19 -`collect` of `std::collections::BTreeMap, Noisy>`, which sorts by `std::cell::Cell`'s own `Ord`, of entries that drop, which is not supported yet at fixtures/reject/src/lib.rs:890:22 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Looped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1045:26 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Aliased`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1055:29 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Rewritten`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1065:47 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Loaded`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1077:29 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Mapped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1122:39 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Repeated`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1156:18 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Onced`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1168:46 -`std::iter::once` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1170:22 -a raw pointer to `(u16, u16)` in `Pushed`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1183:22 -`Extend` of `(std::vec::Vec, Tens)` by `(u8, u8)`, whose `Tens` of `u8` is not supported yet at fixtures/reject/src/lib.rs:1207:31 -unsupported call to `core::num::::is_ascii_octdigit` at fixtures/reject/src/lib.rs:1212:4 -a reference through which a raw pointer may be made into `InArray` in `[InArray; 2]`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1272:33 -a reference through which a raw pointer may be made into `InTuple` in `(u16, InTuple)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1281:33 -a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1290:34 -a reference through which a raw pointer may be made into `InPayload` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1299:11 -a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1311:33 -a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1324:35 -a reference through which a raw pointer may be made into `InWritten` in `[InWritten; 1]`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1333:35 -a raw pointer to `std::cell::UnsafeCell` in `ByRead`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1390:35 -a raw pointer to `std::cell::UnsafeCell` in `ByWrite`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1403:35 -a raw pointer to `std::cell::UnsafeCell` in `BySwap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1416:35 -a raw pointer to `std::cell::UnsafeCell` in `ByReplace`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1428:35 -a raw pointer to `std::cell::UnsafeCell` in `ByBox`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1439:35 -a raw pointer to `std::cell::UnsafeCell` in `ByClosure`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1454:35 -a raw pointer to `std::cell::UnsafeCell` in `ByObject`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1467:35 -a raw pointer to `std::cell::UnsafeCell` in `ByInstance`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1480:35 -a raw pointer to `std::cell::UnsafeCell` in `BySwapped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1489:76 -a raw pointer to `std::cell::UnsafeCell` in `ByExchanged`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1500:30 -a raw pointer to `ByRefReplace` in `(u16, ByRefReplace)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1532:32 -a raw pointer to `ByRefTake` in `(u16, ByRefTake)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1540:32 -a raw pointer to `ByKeySet` in `(u16, ByKeySet)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1548:51 -a raw pointer to `ByKeyReplace` in `(u16, ByKeyReplace)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1556:55 -a raw pointer to `ByKeyTake` in `(u16, ByKeyTake)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1563:52 -unsupported call to `core::str::::as_bytes_mut` at fixtures/reject/src/lib.rs:1571:13 -`core::str::::get_unchecked_mut` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1572:13 -`std::str::from_utf8_mut` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1577:20 -a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1645:3 -a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1646:3 -unsupported call to `std::ptr::addr_eq::<[u8; 4], [u8; 4]>` at fixtures/reject/src/lib.rs:1647:14 -comparing `*mut [u8; 4]` at fixtures/reject/src/lib.rs:1647:41 -an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1648:56 -an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1648:73 -hashing `*const [u8; 4]` by its address, which JS has no counterpart of at fixtures/reject/src/lib.rs:1651:5 -a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1661:15 -a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1661:18 -a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1661:37 -a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1661:44 -a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1668:26 -a raw pointer to `[u8; 4]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1668:26 -a raw pointer to `[u8; 4]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1669:10 -const generic types are not supported: `Block` at fixtures/reject/src/lib.rs:2036:21 -`std::collections::LinkedList::::retain` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:2052:4 -`clone_from` of `std::collections::LinkedList`, whose items' `clone_from` is their own, which is not supported yet at fixtures/reject/src/lib.rs:2053:4 -`std::default::Default::default` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:2054:2 -a mapped guard of `{closure@fixtures/reject/src/lib.rs:2086:38: 2086:50}`, which JS can't write in place at fixtures/reject/src/lib.rs:2087:10 -a pointer into `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2094:12 -an offset of a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2096:13 -a copy between pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2097:3 -a slice from a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2098:11 -a pointer into an array of `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2099:30 -`offset_from` of pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2100:36 -`offset_from` of pointers to `()`, which has no bytes at fixtures/reject/src/lib.rs:2107:13 -a slice of `()`, which has no bytes, from a pointer at fixtures/reject/src/lib.rs:2107:39 -a cast from a pointer to `u32` to one to `[u32; 2]`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2112:13 -a raw pointer to `[u32; 3]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2125:10 -a raw pointer to `[u32; 3]` in `Lanes`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2127:10 -`offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2160:5 -`offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2161:26 -`offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2162:24 -`offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2163:23 -`offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2164:20 -`offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2165:21 -a raw or mutable slice of a byte in no array of bytes at fixtures/reject/src/lib.rs:2171:12 -a raw or mutable slice of a byte in no array of bytes at fixtures/reject/src/lib.rs:2172:19 -a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2183:3 -a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2185:18 -a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2186:6 -a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2187:27 -a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2188:21 -a slice of one byte's place, which a byte slice can view only in an array of bytes at fixtures/reject/src/lib.rs:2195:2 -a slice or a cell of a mutable reference to `Reused` that names no place, which a whole write would replace only there at fixtures/reject/src/lib.rs:2201:2 -`Clone::clone_from` of `std::vec::Vec`, whose `clone_from` is its own, which is not supported yet at fixtures/reject/src/lib.rs:2206:4 -unsupported call to `std::mem::size_of_val::` at fixtures/reject/src/lib.rs:2211:2 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2217:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2225:10 -a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2233:10 -a slice or a cell of a mutable reference to `std::cell::LazyCell` that names no place, which a whole write would replace only there at fixtures/reject/src/lib.rs:2243:3 -an assignment through a reference to `std::sync::LazyLock` at fixtures/reject/src/lib.rs:2248:2 -a slice or a cell of a mutable reference to `std::thread::LocalKey` that names no place, which a whole write would replace only there at fixtures/reject/src/lib.rs:2254:2 -a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as at fixtures/reject/src/lib.rs:2266:3 -a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2267:15 -a cast from a pointer to `u8` to one to `Halves`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2268:16 -a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2270:15 -unsupported call to `std::alloc::alloc_zeroed` at fixtures/reject/src/lib.rs:2295:13 -a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2295:12 -unsupported call to ` as std::cmp::PartialEq>::eq` at fixtures/reject/src/lib.rs:2301:25 -a constant of type `std::mem::ManuallyDrop` at fixtures/reject/src/lib.rs:2301:34 -unsupported call to ` as std::fmt::Debug>::fmt` at fixtures/reject/src/lib.rs:2301:11 -memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2281:7 -memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2282:11 -memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2284:17 -memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2285:21 -memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2287:17 -overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet at fixtures/reject/src/lib.rs:126:3 -overriding `DoubleEndedIterator::rfind`, which std's adaptors call in place of `next` or beside it at fixtures/reject/src/lib.rs:150:2 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Escaped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1007:43 -a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Called`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1021:28 -a raw pointer to `(u16, u16)` in `Copied`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1111:31 -a raw pointer to `std::cell::UnsafeCell` in `InArray`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1237:9 -a raw pointer to `std::cell::UnsafeCell` in `InTuple`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1241:9 -a raw pointer to `std::cell::UnsafeCell` in `InNested`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1245:9 -a raw pointer to `std::cell::UnsafeCell` in `InPayload`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1249:9 -a raw pointer to `std::cell::UnsafeCell` in `InField`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1253:9 -a raw pointer to `std::cell::UnsafeCell` in `InGeneric`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1257:9 -a raw pointer to `std::cell::UnsafeCell` in `InWritten`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1261:9 -a reference to `std::option::Option>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:2043:13 -a raw pointer to `(u8, u8)` in `([Cloned; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2308:23 -a raw pointer to `(u8, u8)` in `(Dropped, (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2308:23 -a raw pointer to `(u8, u8)` in `([Greatest; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2364:13 -a raw pointer to `(u8, u8)` in `([Touched; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2308:23 -overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2410:18 -overriding `Iterator::fold` with a constant generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2435:11 -overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet at fixtures/reject/src/lib.rs:2458:3 -overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet at fixtures/reject/src/lib.rs:2480:3 -overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2500:11 -overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2538:11 +`Pointer` formatting, as in `{:p}`, is not supported at fixtures/reject/src/lib.rs:42:11 +`fmt::Arguments` with a placeholder, or not made in place, written to `Sink`'s own `fmt::Write`, which is not supported yet: std splits what a placeholder writes into `write_str` calls the runtime does not make at fixtures/reject/src/lib.rs:48:10 +a mutable static, which any code may write at fixtures/reject/src/lib.rs:54:11 +`Poll>>>` is not supported: its `Pending` and `Ready` would both be `rt.OuterPending` at fixtures/reject/src/lib.rs:65:20 +a future of `std::task::Poll`, which can be `rt.Pending`, as the future's own `Pending` is at fixtures/reject/src/lib.rs:70:34 +an assignment through a reference to `std::sync::MutexGuard<'_, u8>` at fixtures/reject/src/lib.rs:76:2 +replacing the value behind a reference to `std::sync::MutexGuard<'_, u8>` at fixtures/reject/src/lib.rs:105:2 +replacing the value behind a reference to `std::pin::Pin fn(&'a mut std::task::Context<'b>) -> std::task::Poll>>>` at fixtures/reject/src/lib.rs:84:2 +an assignment through a reference to `std::pin::Pin>>` at fixtures/reject/src/lib.rs:100:2 +replacing the value behind a reference to `std::pin::Pin>` at fixtures/reject/src/lib.rs:92:2 +unsupported call to `std::ops::Range::::contains::` at fixtures/reject/src/lib.rs:157:8 +unsupported call to `std::ops::RangeTo::::contains::` at fixtures/reject/src/lib.rs:907:11 +unsupported call to ` as std::ops::RangeBounds>::contains::` at fixtures/reject/src/lib.rs:907:32 +unsupported call to `std::ops::Range::<&mut u8>::is_empty` at fixtures/reject/src/lib.rs:912:9 +an assignment through a reference to `std::pin::Pin<&mut Noisy>` at fixtures/reject/src/lib.rs:165:2 +a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:175:14 +hashing `std::collections::BTreeSet` as a key, which is not supported yet at fixtures/reject/src/lib.rs:181:75 +comparing `std::collections::BTreeSet` as a key, which is not supported yet at fixtures/reject/src/lib.rs:181:75 +`HashMap::contains_key` of `std::collections::HashMap` by `u8`, which is not supported yet at fixtures/reject/src/lib.rs:199:6 +`slice::clone_from_slice` of `Reused`, whose `clone_from` is its own, which is not supported yet at fixtures/reject/src/lib.rs:217:4 +a coercion to `std::sync::Arc<[u8]>` at fixtures/reject/src/lib.rs:222:2 +a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:255:2 +a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:257:27 +a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:256:30 +a variant of `std::borrow::Cow<'_, str>`, which is not supported: either is the same JS string at fixtures/reject/src/lib.rs:262:2 +unsupported call to `std::borrow::Cow::<'_, [u8]>::is_borrowed` at fixtures/reject/src/lib.rs:267:2 +constructing `std::borrow::Cow<'_, std::sync::Arc>` at fixtures/reject/src/lib.rs:273:53 +hashing `std::vec::Vec` through `Batched`'s own `Hash::hash_slice`, which is not supported yet at fixtures/reject/src/lib.rs:241:16 +passing `{closure@fixtures/reject/src/lib.rs:250:13: 250:27}`, which drops, to `str::contains`, which is not supported yet at fixtures/reject/src/lib.rs:250:4 +unsupported call to ` as std::iter::Iterator>::sum::` at fixtures/reject/src/lib.rs:358:17 +unsupported call to ` as std::iter::Iterator>::sum::` at fixtures/reject/src/lib.rs:358:38 +a mutable reference into a `Result`'s payload, passed on or kept at fixtures/reject/src/lib.rs:286:12 +unsupported call to ` as std::cmp::PartialEq>::eq` at fixtures/reject/src/lib.rs:293:2 +`Bytes::from_owner` of `std::sync::Arc<[u8]>`, which would drop with the last clone of what it makes, which is not supported at fixtures/reject/src/lib.rs:298:2 +`BytesMut::capacity`, which reads a capacity that depends on whether the other handles of its storage dropped, which is not supported at fixtures/reject/src/lib.rs:307:6 +`BufMut::put` of `Counted` into a `BytesMut`, which picks the methods it calls by a capacity that depends on whether the other handles of its storage dropped, which is not supported at fixtures/reject/src/lib.rs:313:2 +`BufMut::put` of `Counted` into a `BytesMut`, which advances it by the room left in a capacity that depends on whether the other handles of its storage dropped, which is not supported at fixtures/reject/src/lib.rs:318:2 +unsupported call to `core::str::::parse::` at fixtures/reject/src/lib.rs:363:4 +unsupported type `std::net::Ipv4Addr` from another crate at fixtures/reject/src/lib.rs:362:32 +unsupported type `std::net::AddrParseError` from another crate at fixtures/reject/src/lib.rs:362:32 +`dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet at fixtures/reject/src/lib.rs:381:23 +`dyn Scaled`, a trait object of the generic trait `Scaled`, which is not supported yet at fixtures/reject/src/lib.rs:382:4 +a trait object of `[u8; 4]`, which is not supported yet at fixtures/reject/src/lib.rs:398:26 +a coercion to `&Tail`, which is not supported yet at fixtures/reject/src/lib.rs:408:30 +`Waiting>` is not supported: its field `poll` is `Poll`, typed `rt.Poll`, whose `Pending` would be `rt.OuterPending` as `Poll>` at fixtures/reject/src/lib.rs:419:2 +a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:431:14 +a copy of a closure that changes what it captured at fixtures/reject/src/lib.rs:432:14 +an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:449:32 +an upcast from `dyn Keyed` to `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:455:46 +`std::any::Any::type_id` of `dyn std::any::Any`, which is not supported yet at fixtures/reject/src/lib.rs:461:4 +unsupported call to `std::any::TypeId::of::` at fixtures/reject/src/lib.rs:461:17 +unsupported call to `::eq` at fixtures/reject/src/lib.rs:461:2 +a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:478:27 +a pointer's address, which JS has no counterpart of at fixtures/reject/src/lib.rs:483:17 +a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as at fixtures/reject/src/lib.rs:491:3 +a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as at fixtures/reject/src/lib.rs:492:11 +a raw pointer to `std::vec::Vec` behind a reference, which is the object and not where it is kept at fixtures/reject/src/lib.rs:500:10 +union `Bits`, whose fields overlap in `u32` and `f64`, which JS keeps apart at fixtures/reject/src/lib.rs:511:10 +comparing pointers to `u32`, each a place JS makes of its own at fixtures/reject/src/lib.rs:519:2 +comparing pointers to `u32`, each a place JS makes of its own at fixtures/reject/src/lib.rs:2068:2 +a raw pointer to `(u32, u32)` in `Span2`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:531:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:539:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:547:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:556:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:564:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:573:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:581:10 +a reference to `std::cell::UnsafeCell`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1578:18 +a raw pointer to `Target` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1592:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1605:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1620:10 +a reference to `Behind`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1674:22 +a reference to `Unboxed`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1689:16 +a reference to `Deep`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1710:18 +a reference to `Slotted`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1732:21 +a reference to `Shared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1751:20 +a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1768:20 +a reference to `Inside`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1781:26 +a reference to `Wrapped>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1857:21 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Replaced`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1880:20 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Swapped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1898:20 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Taken`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1916:20 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Assigned`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1935:20 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Deeper`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1961:22 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Dynamic`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1985:20 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `Closed`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2001:15 +a reference through which a raw pointer may be made into `std::cell::UnsafeCell` in `[std::cell::UnsafeCell; 2]`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2014:20 +a reference to `Compared`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1796:22 +a reference to `Enclosing`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1813:22 +a reference to `Chosen`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1829:17 +a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1842:19 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:924:26 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:937:22 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:947:12 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:956:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:966:17 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:971:10 +a raw pointer to `(u32, u32)` in `Window`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:592:2 +a raw pointer to `(u32, u32)` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:602:10 +a raw pointer to `(u32, u32)` in `std::cell::UnsafeCell<(u32, u32)>`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:610:15 +a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:619:15 +a raw pointer to `std::cell::UnsafeCell` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:632:15 +a raw pointer to `std::cell::UnsafeCell` in `Hits`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:643:21 +a raw pointer to a place of `()`, which has no address of its own at fixtures/reject/src/lib.rs:651:15 +a raw pointer to a place of `()`, which has no address of its own at fixtures/reject/src/lib.rs:651:29 +comparing pointers to `Bare`, which has no bytes and so no address of its own at fixtures/reject/src/lib.rs:651:70 +a dangling pointer to `Only`, a value of no bytes made of more than structs and tuples at fixtures/reject/src/lib.rs:660:11 +`Buf::copy_to_bytes` of `Blank`, a value JS copies, which is not supported at fixtures/reject/src/lib.rs:684:2 +unsupported call to ` as std::iter::Iterator>::is_sorted` at fixtures/reject/src/lib.rs:689:15 +comparing pointers to `u32` in an atomic, which JS has no address of at fixtures/reject/src/lib.rs:700:15 +a constant of type `&u32`, a pointer into memory translation can't name at fixtures/reject/src/lib.rs:701:3 +passing `{closure@fixtures/reject/src/lib.rs:707:11: 707:19}`, which drops, to `String::retain`, which is not supported yet at fixtures/reject/src/lib.rs:707:4 +a raw pointer to `(u32, u32)` in `Plain`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:749:10 +a raw pointer to `(u32, u32)` in `Track`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:775:19 +a raw pointer to `(u32, u32)` in `Lane`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:795:19 +a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:831:10 +a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:832:10 +a raw pointer to `(u32, u32)` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:833:58 +a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:845:19 +a raw pointer to `std::mem::MaybeUninit<(u32, u32)>` in `Gap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:846:19 +`collect` of `std::collections::BTreeMap, Noisy>`, which sorts by `std::cell::Cell`'s own `Ord`, of entries that drop, which is not supported yet at fixtures/reject/src/lib.rs:878:22 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Looped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1033:26 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Aliased`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1043:29 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Rewritten`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1053:47 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Loaded`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1065:29 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Mapped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1110:39 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Repeated`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1144:18 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Onced`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1156:46 +`std::iter::once` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1158:22 +a raw pointer to `(u16, u16)` in `Pushed`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1171:22 +`Extend` of `(std::vec::Vec, Tens)` by `(u8, u8)`, whose `Tens` of `u8` is not supported yet at fixtures/reject/src/lib.rs:1195:31 +unsupported call to `core::num::::is_ascii_octdigit` at fixtures/reject/src/lib.rs:1200:4 +a reference through which a raw pointer may be made into `InArray` in `[InArray; 2]`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1260:33 +a reference through which a raw pointer may be made into `InTuple` in `(u16, InTuple)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1269:33 +a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1278:34 +a reference through which a raw pointer may be made into `InPayload` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1287:11 +a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1299:33 +a reference through which a raw pointer may be made into `Mid` in `Outer`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1312:35 +a reference through which a raw pointer may be made into `InWritten` in `[InWritten; 1]`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1321:35 +a raw pointer to `std::cell::UnsafeCell` in `ByRead`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1378:35 +a raw pointer to `std::cell::UnsafeCell` in `ByWrite`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1391:35 +a raw pointer to `std::cell::UnsafeCell` in `BySwap`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1404:35 +a raw pointer to `std::cell::UnsafeCell` in `ByReplace`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1416:35 +a raw pointer to `std::cell::UnsafeCell` in `ByBox`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1427:35 +a raw pointer to `std::cell::UnsafeCell` in `ByClosure`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1442:35 +a raw pointer to `std::cell::UnsafeCell` in `ByObject`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1455:35 +a raw pointer to `std::cell::UnsafeCell` in `ByInstance`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1468:35 +a raw pointer to `std::cell::UnsafeCell` in `BySwapped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1477:76 +a raw pointer to `std::cell::UnsafeCell` in `ByExchanged`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1488:30 +a raw pointer to `ByRefReplace` in `(u16, ByRefReplace)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1520:32 +a raw pointer to `ByRefTake` in `(u16, ByRefTake)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1528:32 +a raw pointer to `ByKeySet` in `(u16, ByKeySet)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1536:51 +a raw pointer to `ByKeyReplace` in `(u16, ByKeyReplace)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1544:55 +a raw pointer to `ByKeyTake` in `(u16, ByKeyTake)`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1551:52 +unsupported call to `core::str::::as_bytes_mut` at fixtures/reject/src/lib.rs:1559:13 +`core::str::::get_unchecked_mut` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1560:13 +`std::str::from_utf8_mut` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:1565:20 +a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1633:3 +a copy between pointers to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1634:3 +unsupported call to `std::ptr::addr_eq::<[u8; 4], [u8; 4]>` at fixtures/reject/src/lib.rs:1635:14 +comparing `*mut [u8; 4]` at fixtures/reject/src/lib.rs:1635:41 +an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1636:56 +an offset of a pointer to `[u8; 4]`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:1636:73 +hashing `*const [u8; 4]` by its address, which JS has no counterpart of at fixtures/reject/src/lib.rs:1639:5 +a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1649:15 +a raw pointer to `[u8; 3]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1649:18 +a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1649:37 +a raw pointer to `[u8; 2]` in an element, a payload, or a union field, which is not supported yet at fixtures/reject/src/lib.rs:1649:44 +a reference to `[u8; 4]`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:1656:26 +a raw pointer to `[u8; 4]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1656:26 +a raw pointer to `[u8; 4]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:1657:10 +const generic types are not supported: `Block` at fixtures/reject/src/lib.rs:2024:21 +`std::collections::LinkedList::::retain` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:2040:4 +`clone_from` of `std::collections::LinkedList`, whose items' `clone_from` is their own, which is not supported yet at fixtures/reject/src/lib.rs:2041:4 +`std::default::Default::default` with a mutable reference to a value JS copies, which its mapping would copy at fixtures/reject/src/lib.rs:2042:2 +a mapped guard of `{closure@fixtures/reject/src/lib.rs:2074:38: 2074:50}`, which JS can't write in place at fixtures/reject/src/lib.rs:2075:10 +a pointer into `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2082:12 +an offset of a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2084:13 +a copy between pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2085:3 +a slice from a pointer to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2086:11 +a pointer into an array of `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2087:30 +`offset_from` of pointers to `(u8, u8)`, which JS keeps as an object that knows no array it is in at fixtures/reject/src/lib.rs:2088:36 +`offset_from` of pointers to `()`, which has no bytes at fixtures/reject/src/lib.rs:2095:13 +a slice of `()`, which has no bytes, from a pointer at fixtures/reject/src/lib.rs:2095:39 +a cast from a pointer to `u32` to one to `[u32; 2]`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2100:13 +a raw pointer to `[u32; 3]` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2113:10 +a raw pointer to `[u32; 3]` in `Lanes`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2115:10 +`offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2148:5 +`offset_from` between a pointer into a value in no array and one into a value in no array, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2149:26 +`offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2150:24 +`offset_from` between a pointer into an array of this body's own and one into an array of this body's own, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2151:23 +`offset_from` between a pointer into a shared slice JS copies and one into an array of this body's own, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2152:20 +`offset_from` between a pointer into a shared slice JS copies and one into a value in no array, which JS keeps in different arrays at fixtures/reject/src/lib.rs:2153:21 +a raw or mutable slice of a byte in no array of bytes at fixtures/reject/src/lib.rs:2159:12 +a raw or mutable slice of a byte in no array of bytes at fixtures/reject/src/lib.rs:2160:19 +a copy reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2171:3 +a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2173:18 +a slice reaching past a value in no array, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2174:6 +a pointer reaching past a value in no array, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2175:27 +a pointer reaching past a shared slice JS copies, which JS keeps apart from what holds it in Rust at fixtures/reject/src/lib.rs:2176:21 +a slice of one byte's place, which a byte slice can view only in an array of bytes at fixtures/reject/src/lib.rs:2183:2 +a slice or a cell of a mutable reference to `Reused` that names no place, which a whole write would replace only there at fixtures/reject/src/lib.rs:2189:2 +`Clone::clone_from` of `std::vec::Vec`, whose `clone_from` is its own, which is not supported yet at fixtures/reject/src/lib.rs:2194:4 +unsupported call to `std::mem::size_of_val::` at fixtures/reject/src/lib.rs:2199:2 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2205:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2213:10 +a raw pointer to `(u32, u32)` in a variable assigned again while it may point there at fixtures/reject/src/lib.rs:2221:10 +a slice or a cell of a mutable reference to `std::cell::LazyCell` that names no place, which a whole write would replace only there at fixtures/reject/src/lib.rs:2231:3 +an assignment through a reference to `std::sync::LazyLock` at fixtures/reject/src/lib.rs:2236:2 +a slice or a cell of a mutable reference to `std::thread::LocalKey` that names no place, which a whole write would replace only there at fixtures/reject/src/lib.rs:2242:2 +a byte of memory from `alloc`, which JS keeps as the values a cast of its pointer types it as at fixtures/reject/src/lib.rs:2254:3 +a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2255:15 +a cast from a pointer to `u8` to one to `Halves`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2256:16 +a cast from a pointer to `u32` to one to `u8`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2258:15 +unsupported call to `std::alloc::alloc_zeroed` at fixtures/reject/src/lib.rs:2283:13 +a cast from a pointer to `u8` to one to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2283:12 +unsupported call to ` as std::cmp::PartialEq>::eq` at fixtures/reject/src/lib.rs:2289:25 +a constant of type `std::mem::ManuallyDrop` at fixtures/reject/src/lib.rs:2289:34 +unsupported call to ` as std::fmt::Debug>::fmt` at fixtures/reject/src/lib.rs:2289:11 +memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2269:7 +memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2270:11 +memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2272:17 +memory from `alloc` cast to pointers to `u32` and to `i32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2273:21 +memory from `alloc` cast to pointers to `i32` and to `u32`, which reads the bytes of one type as another at fixtures/reject/src/lib.rs:2275:17 +overriding `Iterator::fold` with its accumulator in an `Option` or a `Poll`, which is not supported yet at fixtures/reject/src/lib.rs:119:3 +overriding `DoubleEndedIterator::rfind`, which std's adaptors call in place of `next` or beside it at fixtures/reject/src/lib.rs:143:2 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Escaped`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:995:43 +a raw pointer to `std::cell::UnsafeCell<(u16, u16)>` in `Called`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1009:28 +a raw pointer to `(u16, u16)` in `Copied`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1099:31 +a raw pointer to `std::cell::UnsafeCell` in `InArray`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1225:9 +a raw pointer to `std::cell::UnsafeCell` in `InTuple`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1229:9 +a raw pointer to `std::cell::UnsafeCell` in `InNested`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1233:9 +a raw pointer to `std::cell::UnsafeCell` in `InPayload`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1237:9 +a raw pointer to `std::cell::UnsafeCell` in `InField`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1241:9 +a raw pointer to `std::cell::UnsafeCell` in `InGeneric`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1245:9 +a raw pointer to `std::cell::UnsafeCell` in `InWritten`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:1249:9 +a reference to `std::option::Option>`, through which a raw pointer may be made, in a variable assigned again while that pointer may point there at fixtures/reject/src/lib.rs:2031:13 +a raw pointer to `(u8, u8)` in `([Cloned; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2296:23 +a raw pointer to `(u8, u8)` in `(Dropped, (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2296:23 +a raw pointer to `(u8, u8)` in `([Greatest; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2352:13 +a raw pointer to `(u8, u8)` in `([Touched; 2], (u8, u8))`, which the crate may put another object in place of at fixtures/reject/src/lib.rs:2296:23 +overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2398:18 +overriding `Iterator::fold` with a constant generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2423:11 +overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet at fixtures/reject/src/lib.rs:2446:3 +overriding `Iterator::fold` with a drop of its accumulator, or of the crate's type over it or its closure, which is not supported yet at fixtures/reject/src/lib.rs:2468:3 +overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2488:11 +overriding `Iterator::fold` with a call generic over its accumulator or closure, which is not supported yet at fixtures/reject/src/lib.rs:2526:11 diff --git a/ts/fixtures/reject/src/lib.rs b/ts/fixtures/reject/src/lib.rs index 3ead56a32..6071d32fa 100644 --- a/ts/fixtures/reject/src/lib.rs +++ b/ts/fixtures/reject/src/lib.rs @@ -31,13 +31,6 @@ pub fn generic_unit(value: Option<()>) -> bool { Maybe { value }.value.is_some() } -/// `scan` of items that can be `undefined`: its closure's `None` and `Some(None)` would both be. -pub fn scanned(v: &[u8]) -> usize { - v.iter() - .scan(Vec::::new(), |_, &b| Some((b > 1).then_some(b))) - .count() -} - pub struct Noisy(pub u8); impl Drop for Noisy { @@ -183,11 +176,6 @@ pub fn copied_closure(n: u8) -> u8 { g().wrapping_add(h()) } -/// `scan` of `()`s: its closure's `None` and `Some(())` would both be `undefined`. -pub fn scanned_unit(v: &[u8]) -> usize { - v.iter().scan(Vec::::new(), |_, _| Some(())).count() -} - /// A key the runtime has no `Hash` and `Eq` of. pub fn set_keys() -> usize { let map: std::collections::HashMap, u8> = std::collections::HashMap::new(); diff --git a/ts/fixtures/reject/ts.toml b/ts/fixtures/reject/ts.toml index 0eeb305f7..41f0b9e5d 100644 --- a/ts/fixtures/reject/ts.toml +++ b/ts/fixtures/reject/ts.toml @@ -4,7 +4,6 @@ roots = [ "dynamic", "nested", "refilled", - "scanned", "generic_unit", "Noisy", "pointer", @@ -25,7 +24,6 @@ roots = [ "place_bounds", "replace_pinned_ref", "copied_closure", - "scanned_unit", "set_keys", "borrowed", "recloned", From eae28f1c15ca5dcd6b060dd413c1508009513a4e Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 19:26:58 -0800 Subject: [PATCH 14/23] docs(ts): closure-taking calls std's mappings now cover Co-Authored-By: Claude Opus 5.5 --- quest/m3/README.md | 1 - quest/m3/ts-closure-calls.md | 25 ------------------------- ts/README.md | 18 +++++++++++------- 3 files changed, 11 insertions(+), 33 deletions(-) delete mode 100644 quest/m3/ts-closure-calls.md diff --git a/quest/m3/README.md b/quest/m3/README.md index 498484208..43a0c2183 100644 --- a/quest/m3/README.md +++ b/quest/m3/README.md @@ -29,7 +29,6 @@ generic std gap is planned here even when moq never calls it. - [Waiting: type-check in process with tsrs](/quest/m3/ts-tsrs.md) - rust2-ts checks bindings through tsrs instead of `tsc` once it is a stable library - [Drop order in std's folds and iterators](/quest/m3/ts-drop-order.md) - the values that drop still refused in std's consumers and collects drop as std's do - [A slice of one value behind any &mut](/quest/m3/ts-slice-of-one.md) - `slice::from_mut` and `array::from_mut` of a `&mut u8`, or of an object no place names, translate -- [std's calls of a closure that have no mapping](/quest/m3/ts-closure-calls.md) - `try_fold`, `partition`, `repeat_with`, `sort_by_cached_key`, and `LazyCell::new` translate, dropping what their closures own as std's do - [A closure that drops given to a string's edit or search](/quest/m3/ts-string-closures.md) - `String::retain` and `str`'s searches by a closure that owns a value that drops translate - [Waiting: a slice object for a mutable part of other values](/quest/m3/ts-slice-object.md) - waits on a moq profile showing the `Proxy` view's traps matter, then decides on an `rt.ByteSlice`-like form - [Port the workflow guard to kixelated/quest](/quest/m3/quest-workflow-guard.md) - quest's environment guard parses YAML as this repository's does diff --git a/quest/m3/ts-closure-calls.md b/quest/m3/ts-closure-calls.md deleted file mode 100644 index 80d5ebd2d..000000000 --- a/quest/m3/ts-closure-calls.md +++ /dev/null @@ -1,25 +0,0 @@ -# [M] std's calls of a closure that have no mapping - -## Goal - -[rust2-ts](/ts/README.md) translates std's functions that take a closure and are refused -as "unsupported call" whatever the closure holds, each calling it and dropping what it -owns as std's does, proven by the task fixture's differential tests against native Rust. - -## Plan - -Found probing std's consumers for [drop order](/quest/m3/ts-drop-order.md) in -[#438](https://github.com/moq-dev/rust2/pull/438). Of a closure that owns nothing, each of -these is refused today: - -- `Iterator::try_fold`, `try_for_each`, and `partition`. `rt.iterTryRfold` already folds - from the back as `try_rfold` does, breaking by an `Option`, `Result`, or `ControlFlow`. -- `iter::repeat_with`, and `Iterator::scan` of a state JS copies, which is refused as a - `&mut` its mapping would copy. -- `slice::sort_by_cached_key`. -- `LazyCell::new`, `Cell::update`, and `RefCell::replace_with` of a value JS copies. - -Each `rt.Iter` has a `fold` and `rfold` that drop what it holds where std's do: a consumer -that takes the iterator by value builds on them, as `rt.iterFold` does. - -Public API: the translator's output, and the runtime's functions each needs. diff --git a/ts/README.md b/ts/README.md index 51a6520c4..abf8da743 100644 --- a/ts/README.md +++ b/ts/README.md @@ -132,11 +132,11 @@ crate translation reaches is refused, and so are two versions of one crate it re | a type's function | a function of the type's module, taking `self` first: `Decoder.slice(dec, 4)` after `import * as Decoder` | | `Arc`, `Rc`, `Weak`, `Mutex` | `rt.Arc` for either, with its strong and weak counts, and `new_cyclic`'s `Weak` upgrading only once its value is made, `get_mut` lending its value only while no other `Arc` or `Weak` shares it, `make_mut` cloning it into a new `rt.Arc` while another `Arc` shares it, or moving it there while only `Weak`s do, which then dangle, and `into_inner` giving it only from the last strong `Arc`, after which its `Weak`s no longer upgrade; `rt.Weak`, counted in its `rt.Arc` until it drops, and of no `Arc` once made by `Weak::new`; `rt.Mutex`, its own guard, which a lock gives as `Ok` and the guard's drop unlocks: locking it again while held panics and `try_lock` gives `WouldBlock`, as wasm32's do, and a guard's `map` and `filter_map` make `rt.MutexMap`s, each where the part it lends is, which hold the mutex locked until they drop, and a panic aborts, so nothing poisons it and `thread::panicking` is `false`; a `Mutex`'s, a `RefCell`'s, and an `RwLock`'s `into_inner` gives its value and `get_mut` lends it, or an `rt.Place` of it where JS copies it | | `PoisonError`, `TryLockError` | the `T` it holds; `rt.TryLockError`, tagged as `Bound` is | -| `Cell`, `UnsafeCell`, `RefCell`, `RwLock` | `rt.Cell`, the place holding its value in `v`, for either of the first two: `UnsafeCell::get`'s pointer is the cell where it is an `rt.Place`, and otherwise the object in `v`, refused where the crate may put another cell or object in its place; `rt.RefCell` for either of the others, its own guard, counting its borrows: borrowing it while that conflicts panics as `RefCell`'s does, and locking it so aborts as wasm32's `RwLock` does; `try_borrow` and `try_borrow_mut` fail with `rt.BorrowError` and `rt.BorrowMutError` instead, a clone borrows the cell, `Ref::clone` counts another borrow of it, and a guard's `map`, `filter_map`, `try_map`, and `map_split`, an `RwLock` guard's included, make `rt.RefMap`s, each where a part it lends is, which a write through a mapped `RefMut` reaches in place, sharing the cell's borrow until the last drops; `RwLockWriteGuard::downgrade` keeps the lock as one read, and `Ref::leak` and `RefMut::leak` keep the borrow until `RefCell::undo_leak` ends it; refused for a part of a sized type JS can't write in place, such as a binding's | +| `Cell`, `UnsafeCell`, `RefCell`, `RwLock` | `rt.Cell`, the place holding its value in `v`, for either of the first two: `UnsafeCell::get`'s pointer is the cell where it is an `rt.Place`, and otherwise the object in `v`, refused where the crate may put another cell or object in its place; `rt.RefCell` for either of the others, its own guard, counting its borrows: borrowing it while that conflicts panics as `RefCell`'s does, and locking it so aborts as wasm32's `RwLock` does; `try_borrow` and `try_borrow_mut` fail with `rt.BorrowError` and `rt.BorrowMutError` instead, a clone borrows the cell, `Ref::clone` counts another borrow of it, and a guard's `map`, `filter_map`, `try_map`, and `map_split`, an `RwLock` guard's included, make `rt.RefMap`s, each where a part it lends is, which a write through a mapped `RefMut` reaches in place, sharing the cell's borrow until the last drops; `RwLockWriteGuard::downgrade` keeps the lock as one read, and `Ref::leak` and `RefMut::leak` keep the borrow until `RefCell::undo_leak` ends it; `Cell::update` calls its function on a copy, and `RefCell::replace_with` on the value, borrowed as `borrow_mut` does, or its place where JS copies it; refused for a part of a sized type JS can't write in place, such as a binding's | | `thread_local!`, `LocalKey` | an `rt.LocalKey`, a module's value, which makes its value on first use from the `const` or the expression and never drops it, as wasm32's do; `with` calls its function on that value, `try_with` never fails, the `Cell` and `RefCell` helpers lower from std, and a `RefCell` key's `set` and `with_borrow_mut` borrow it as `borrow_mut` does | | `OnceCell`, `OnceLock` | `rt.OnceCell` and `rt.OnceLock`, holding the `Option` in `v`, which is the place `get_mut` lends where JS copies the value; a `OnceLock` initialized from within its own initialization panics, as wasm32's does, and `get_or_try_init`'s error leaves either empty | | `Once`, `OnceState` | `rt.Once`, an `rt.OnceLock` that holds `true` once `call_once` or `call_once_force` ran its function, and panics as wasm32's does if run again from within it; `rt.OnceState`, that `Once`, which a panic never poisons, as it aborts | -| `LazyCell`, `LazyLock` in a `static` or `const` | `rt.LazyCell` and `rt.LazyLock`, which run their function on the first `force` or `Deref`, once; forced from within it, either panics as std's does | +| `LazyCell`, `LazyLock` | `rt.LazyCell` and `rt.LazyLock`, which run their function on the first `force` or `Deref`, once, and drop it then, or with the cell if it never ran; forced from within it, either panics as std's does | | `AtomicU32` and the others of `bool` and integers, `AtomicPtr` | `rt.Atomic`, the `rt.Place` of its value; an `atomic::Ordering` is its discriminant, and one an operation can't take panics as std's does. An `AtomicPtr` compares pointers only to what JS keeps as an object or bytes, as raw pointers do | | `async fn` | a function returning `rt.Future`: a class of its own, its coroutine's state machine | | async closure | a closure returning the future of each call, with what makes the future of a call that consumes it if it owns a value that drops and `Fn` or `FnMut` call it | @@ -450,8 +450,10 @@ map's `drain` does, drops those it still holds by `[Symbol.dispose]`, an adaptor what it skips or rejects, and a consumer that takes an iterator by value drops it: through each `rt.Iter`'s own `fold` where std's folds, which drops each adaptor's closure as its fold ends, before what it wraps, as std's does. The crate's own `fold` is given that -closure as a `Box`, which drops it where its body does. A `try_rfold` drops its -closure as it returns, leaving what the iterator holds to drop with it. A `Vec`'s `drain` leaves the vector +closure as a `Box`, which drops it where its body does. `try_fold`, `try_rfold`, +and `try_for_each` drop their closure as they return, leaving what the iterator holds to drop +with it. `scan` hands its closure its state, or the state's place where JS copies it, and +drops the state after the closure, as std's fields drop. A `Vec`'s `drain` leaves the vector what precedes its range until it drops, then drops what it still holds and moves the tail back, so one never dropped, as `mem::forget` leaves it, leaks the rest, as std's does. @@ -837,7 +839,9 @@ they need. `Freeze` and `Copy`, so each calls the comparator in std's order and leaves equal elements where std's does: JS's `sort` moves `undefined`, a `None`, to the end without comparing it, and each engine orders its comparisons differently. A byte slice's sorts - by its own `Ord` are its typed array's, whose order nothing observes. + by its own `Ord` are its typed array's, whose order nothing observes. `sort_by_cached_key` + sorts its keys paired with their indexes by that `sort_unstable`, of the index type std + picks by the pairs' sizes. - A `BinaryHeap` is std's heap in an array, with std's sifts ported to the runtime: std's move elements through raw pointers into its `Vec`, which no body of std's lowers through, and the sifts decide which `PartialOrd` tests run and which of equal elements @@ -885,13 +889,13 @@ that drops given to a std function that keeps it other than in an iterator or a `poll_fn`, or whose mapping doesn't drop it where std's does, and values that drop in some iterators ([drop order](/quest/m3/ts-drop-order.md)), a `Cow` of other than `str` or a slice, a std function without a mapping of its own that makes or reads an `Option` whose `None` is -`rt.None`, as `Iterator::scan` of `Option`s does, an `Option` of an `Option` of `()` or another +`rt.None`, an `Option` of an `Option` of `()` or another `Option`, an instance of a generic type whose field is an `Option` of a type parameter that can be `undefined`, a `String`'s `capacity`, looking up a key by another type it borrows as through the crate's own `Borrow`, a `&mut` to a value JS copies that std makes, other than a map's, or hands a closure, as `iter_mut` and `and_modify` do, one into a `Result`'s payload passed on or kept, the adaptors -without a mapping in `src/lower/iter.rs` (such as `partition`), an +without a mapping in `src/lower/iter.rs` (such as nightly's `intersperse`), an own `impl Iterator` or `DoubleEndedIterator` that overrides a provided method other than those, such as `find` or `for_each`, or whose own `fold` or `rfold` tells its accumulator or closure apart from another, by an `Option` or a `Poll` of it, a call or constant generic over it From fff1ddb4ce1c564311f204d0ad369e85bb9311ef Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 19:52:42 -0800 Subject: [PATCH 15/23] fix(ts): pair sort_by_cached_key's keys with a usize, as std's does on wasm32 Co-Authored-By: Claude Opus 5.5 --- ts/README.md | 3 +- ts/fixtures/lang/expected/sorts.Item.ts | 9 ++++++ ts/fixtures/lang/expected/sorts.ts | 36 +++++++++++++++++++++++ ts/fixtures/lang/src/sorts.rs | 13 +++++++- ts/fixtures/task/expected/drops/called.ts | 6 ++-- ts/runtime/rt/sort.ts | 10 ++----- ts/src/lower/library.rs | 16 +++++----- 7 files changed, 71 insertions(+), 22 deletions(-) diff --git a/ts/README.md b/ts/README.md index abf8da743..f91b15654 100644 --- a/ts/README.md +++ b/ts/README.md @@ -840,8 +840,7 @@ they need. elements where std's does: JS's `sort` moves `undefined`, a `None`, to the end without comparing it, and each engine orders its comparisons differently. A byte slice's sorts by its own `Ord` are its typed array's, whose order nothing observes. `sort_by_cached_key` - sorts its keys paired with their indexes by that `sort_unstable`, of the index type std - picks by the pairs' sizes. + sorts its keys paired with their indexes by that `sort_unstable`. - A `BinaryHeap` is std's heap in an array, with std's sifts ported to the runtime: std's move elements through raw pointers into its `Vec`, which no body of std's lowers through, and the sifts decide which `PartialOrd` tests run and which of equal elements diff --git a/ts/fixtures/lang/expected/sorts.Item.ts b/ts/fixtures/lang/expected/sorts.Item.ts index ac461d1fc..70d0b05be 100644 --- a/ts/fixtures/lang/expected/sorts.Item.ts +++ b/ts/fixtures/lang/expected/sorts.Item.ts @@ -25,6 +25,10 @@ export function eq$cmp_PartialEq_unit(self: Item, other: Item, other: Item): rt.Ordering | undefined { + return cmp$cmp_Ord_u8(self, other); +} + export function lt$cmp_PartialOrd_Cell_u32(self: Item>, other: Item>): boolean { sorts_note(60, self.tag, other.tag); return self.key < other.key; @@ -85,6 +89,11 @@ export function cmp$cmp_Ord_sorts_Held(self: Item, other: Item< return rt.cmp(self.key, other.key); } +export function cmp$cmp_Ord_u8(self: Item, other: Item): rt.Ordering { + sorts_note(99, self.tag, other.tag); + return rt.cmp(self.key, other.key); +} + export function cmp$cmp_Ord_unit(self: Item, other: Item): rt.Ordering { sorts_note(99, self.tag, other.tag); return rt.cmp(self.key, other.key); diff --git a/ts/fixtures/lang/expected/sorts.ts b/ts/fixtures/lang/expected/sorts.ts index 83ee0f5db..682e5b9d0 100644 --- a/ts/fixtures/lang/expected/sorts.ts +++ b/ts/fixtures/lang/expected/sorts.ts @@ -410,6 +410,12 @@ export function sorted$Cell_u32_sorts_sorts_closure1(keys: rt.u16[], pad: () => return rt.u16Rem(x2.key, 3); }, rt.lt), 8, false, false); put$Cell_u32(v6, out); + const v7: sorts_Item.Item>[] = items(); + rt.sliceSortByCachedKey(v7, (x3: sorts_Item.Item>): sorts_Item.Item => { + note(107, x3.tag, 0); + return new sorts_Item.Item(rt.u16Rem(x3.key, 5), x3.tag, 0); + }, rt.cmpLt(rt.cmpTuple<[sorts_Item.Item, rt.usize], rt.Ordering | undefined>([sorts_Item.partialCmp$cmp_PartialOrd_u8, rt.cmp])), 12, true, true); + put$Cell_u32(v7, out); } /** Each sort of `keys` as items padded by `pad`, and what it tested and left. */ @@ -444,6 +450,12 @@ export function sorted$array10_u32_sorts_sorts_closure3(keys: rt.u16[], pad: () return rt.u16Rem(x2.key, 3); }, rt.lt), 44, true, true); put$array10_u32(v6, out); + const v7: sorts_Item.Item[] = items(); + rt.sliceSortByCachedKey(v7, (x3: sorts_Item.Item): sorts_Item.Item => { + note(107, x3.tag, 0); + return new sorts_Item.Item(rt.u16Rem(x3.key, 5), x3.tag, 0); + }, rt.cmpLt(rt.cmpTuple<[sorts_Item.Item, rt.usize], rt.Ordering | undefined>([sorts_Item.partialCmp$cmp_PartialOrd_u8, rt.cmp])), 12, true, true); + put$array10_u32(v7, out); } /** Each sort of `keys` as items padded by `pad`, and what it tested and left. */ @@ -478,6 +490,12 @@ export function sorted$array22_u32_sorts_sorts_closure4(keys: rt.u16[], pad: () return rt.u16Rem(x2.key, 3); }, rt.lt), 92, true, true); put$array22_u32(v6, out); + const v7: sorts_Item.Item[] = items(); + rt.sliceSortByCachedKey(v7, (x3: sorts_Item.Item): sorts_Item.Item => { + note(107, x3.tag, 0); + return new sorts_Item.Item(rt.u16Rem(x3.key, 5), x3.tag, 0); + }, rt.cmpLt(rt.cmpTuple<[sorts_Item.Item, rt.usize], rt.Ordering | undefined>([sorts_Item.partialCmp$cmp_PartialOrd_u8, rt.cmp])), 12, true, true); + put$array22_u32(v7, out); } /** Each sort of `keys` as items padded by `pad`, and what it tested and left. */ @@ -512,6 +530,12 @@ export function sorted$array30_u32_sorts_sorts_closure5(keys: rt.u16[], pad: () return rt.u16Rem(x2.key, 3); }, rt.lt), 124, true, true); put$array30_u32(v6, out); + const v7: sorts_Item.Item[] = items(); + rt.sliceSortByCachedKey(v7, (x3: sorts_Item.Item): sorts_Item.Item => { + note(107, x3.tag, 0); + return new sorts_Item.Item(rt.u16Rem(x3.key, 5), x3.tag, 0); + }, rt.cmpLt(rt.cmpTuple<[sorts_Item.Item, rt.usize], rt.Ordering | undefined>([sorts_Item.partialCmp$cmp_PartialOrd_u8, rt.cmp])), 12, true, true); + put$array30_u32(v7, out); } /** Each sort of `keys` as items padded by `pad`, and what it tested and left. */ @@ -546,6 +570,12 @@ export function sorted$sorts_Held_sorts_sorts_closure2(keys: rt.u16[], pad: () = return rt.u16Rem(x2.key, 3); }, rt.lt), 6, true, false); put$sorts_Held(v6, out); + const v7: sorts_Item.Item[] = items(); + rt.sliceSortByCachedKey(v7, (x3: sorts_Item.Item): sorts_Item.Item => { + note(107, x3.tag, 0); + return new sorts_Item.Item(rt.u16Rem(x3.key, 5), x3.tag, 0); + }, rt.cmpLt(rt.cmpTuple<[sorts_Item.Item, rt.usize], rt.Ordering | undefined>([sorts_Item.partialCmp$cmp_PartialOrd_u8, rt.cmp])), 12, true, true); + put$sorts_Held(v7, out); } /** Each sort of `keys` as items padded by `pad`, and what it tested and left. */ @@ -580,6 +610,12 @@ export function sorted$unit_sorts_sorts_closure0(keys: rt.u16[], pad: () => unde return rt.u16Rem(x2.key, 3); }, rt.lt), 4, true, true); put$unit(v6, out); + const v7: sorts_Item.Item[] = items(); + rt.sliceSortByCachedKey(v7, (x3: sorts_Item.Item): sorts_Item.Item => { + note(107, x3.tag, 0); + return new sorts_Item.Item(rt.u16Rem(x3.key, 5), x3.tag, 0); + }, rt.cmpLt(rt.cmpTuple<[sorts_Item.Item, rt.usize], rt.Ordering | undefined>([sorts_Item.partialCmp$cmp_PartialOrd_u8, rt.cmp])), 12, true, true); + put$unit(v7, out); } /** diff --git a/ts/fixtures/lang/src/sorts.rs b/ts/fixtures/lang/src/sorts.rs index 8977c5bc1..5d0f93098 100644 --- a/ts/fixtures/lang/src/sorts.rs +++ b/ts/fixtures/lang/src/sorts.rs @@ -1,5 +1,5 @@ //! std's slice sorts, of items that log each test they make: by `PartialOrd::lt`, `Ord::cmp`, -//! a comparator, and a key, stable and not, at lengths across each of std's thresholds, of +//! a comparator, and a key, stable and not, and cached, at lengths across each of std's thresholds, of //! element types whose size, `Freeze`, and `Copy` pick each of its small sorts and //! partitions. Then sorts by a comparator that orders nothing, which std may answer with a //! panic, and B-trees collected of the crate's own keys, which sort them. @@ -186,6 +186,17 @@ fn sorted

(keys: &[u16], pad: impl Fn() -> P, out: &mut Vec) { x.key % 3 }); put(&v, out); + // Keys that fit std's network sort alone, but not paired with their index. + let mut v = items(); + v.sort_by_cached_key(|x| { + note(b'k', x.tag, 0); + Item { + key: x.key % 5, + tag: x.tag, + pad: 0u8, + } + }); + put(&v, out); } /// One sort, stable or not, of items of the kind `kind` picks, by a comparator whose diff --git a/ts/fixtures/task/expected/drops/called.ts b/ts/fixtures/task/expected/drops/called.ts index 40c07697f..9a6c9d08e 100644 --- a/ts/fixtures/task/expected/drops/called.ts +++ b/ts/fixtures/task/expected/drops/called.ts @@ -300,14 +300,14 @@ export function called(log: Log.Log, id: rt.u32, arg: rt.u8): void { return Key.new(rt.u32Rem(rt.u32Mul(Guard.id(g7), 7), 5), Log.clone$Clone(log)); }, (): void => { captured12[Symbol.dispose](); - }), rt.cmpLt(rt.cmpTuple<[Key.Key, rt.usize], rt.Ordering | undefined>([Key.partialCmp$cmp_PartialOrd, rt.cmp])), [16, 16, 16, 16], true, false, true, rt.drop); + }), rt.cmpLt(rt.cmpTuple<[Key.Key, rt.usize], rt.Ordering | undefined>([Key.partialCmp$cmp_PartialOrd, rt.cmp])), 16, true, false, true, rt.drop); const part5 = rt.iterToArray(rt.iterMap(rt.iterSlice(v), Guard.id), undefined, 4, true); const args32: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part5, f, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["sorted ", args32[0]])); const w: rt.u32[] = [3, 1, 2]; rt.sliceSortByCachedKey(w, (_210: rt.u32): rt.u32 => { return rt.u32Add(_210, Guard.id(d)); - }, rt.cmpLt(rt.cmpTuple<[rt.u32, rt.usize], rt.Ordering | undefined>([rt.cmpReverse(rt.cmp), rt.cmp])), [8, 8, 8, 8], true, true); + }, rt.cmpLt(rt.cmpTuple<[rt.u32, rt.usize], rt.Ordering | undefined>([rt.cmpReverse(rt.cmp), rt.cmp])), 8, true, true); const args34: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(w, f, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["rev ", args34[0]])); rt.dropAll(v); @@ -446,7 +446,7 @@ export function called(log: Log.Log, id: rt.u32, arg: rt.u8): void { return _08; }, true), "next", 4, false, 8); const empty: Guard.Guard[] = []; - rt.sliceSortByCachedKey(empty, Guard.id, rt.cmpLt(rt.cmpTuple<[rt.u32, rt.usize], rt.Ordering | undefined>([rt.cmp, rt.cmp])), [8, 8, 8, 8], true, true); + rt.sliceSortByCachedKey(empty, Guard.id, rt.cmpLt(rt.cmpTuple<[rt.u32, rt.usize], rt.Ordering | undefined>([rt.cmp, rt.cmp])), 8, true, true); const _515: rt.usize = scanned.length; const _518: rt.usize = empty.length; const args52: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(_515, f), (f: rt.Formatter) => rt.usizeDisplay(_518, f)]; diff --git a/ts/runtime/rt/sort.ts b/ts/runtime/rt/sort.ts index d2919c680..57df84fd6 100644 --- a/ts/runtime/rt/sort.ts +++ b/ts/runtime/rt/sort.ts @@ -70,19 +70,15 @@ export function sliceSortUnstable(s: Slice, less: Less, size: number, f /** * `sort_by_cached_key`: `key` of each element in order, paired with its index, and then - * `key` dropped if the sort `owns` it, the pairs sorted by `sort_unstable` by `lt`, which - * then permute `s`, and drop by `drop`. The - * index is the smallest of `u8`, `u16`, and `u32` whose pair is smaller than the next's - * and counts every element, by `sizes`, each pair's size on wasm32 and then `usize`'s. + * `key` dropped if the sort `owns` it, the pairs, `size` bytes long on wasm32, sorted by + * `sort_unstable` by `lt`, which then permute `s`, and drop by `drop`. */ -export function sliceSortByCachedKey(s: Slice, key: (item: T) => K, lt: Less<[K, number]>, sizes: [number, number, number, number], freeze: boolean, copy: boolean, owns = false, drop?: (key: K) => void): void { +export function sliceSortByCachedKey(s: Slice, key: (item: T) => K, lt: Less<[K, number]>, size: number, freeze: boolean, copy: boolean, owns = false, drop?: (key: K) => void): void { const n = s.length; if (n < 2) { if (owns) dispose(key); return; } - const [u8, u16, u32, usize] = sizes; - const size = u8 < u16 && n <= 0xff ? u8 : u16 < u32 && n <= 0xffff ? u16 : u32 < usize ? u32 : usize; const indices: [K, number][] = []; for (let i = 0; i < n; i++) indices.push([key(s[i]), i]); if (owns) dispose(key); diff --git a/ts/src/lower/library.rs b/ts/src/lower/library.rs index 8bf0ed38c..24f90dd39 100644 --- a/ts/src/lower/library.rs +++ b/ts/src/lower/library.rs @@ -2089,25 +2089,23 @@ fn mapping<'tcx>( false => Expr::rt("sliceSort", values), } } - // By `sort_unstable` of each key `f` makes paired with its index, of the smallest - // type std picks by the pairs' sizes, `f` dropped once it made them, and then the - // keys dropped. + // By `sort_unstable` of each key `f` makes paired with its index, a `usize`, as a + // `u32` is no smaller on wasm32, `f` dropped once it made them, and then the keys + // dropped. ("slice", "sort_by_cached_key") => { let (elem, key) = (targ(gargs, 0), targ(gargs, 1)); let mut values = args.into_iter(); let s = elements(values.next()?, Ty::new_slice(tcx, elem)); let f = values.next()?; - let types = &tcx.types; - let pair = |index: Ty<'tcx>| Ty::new_tup(tcx, &[key, index]); - let lt = super::collections::test_fn(b, pair(types.usize), "lt", span); - let sizes = [types.u8, types.u16, types.u32, types.usize].map(|i| super::iter::size_of(b, pair(i), span)); - let [_, freeze] = sort_of(b, pair(types.usize), span); + let pair = Ty::new_tup(tcx, &[key, tcx.types.usize]); + let lt = super::collections::test_fn(b, pair, "lt", span); + let [size, freeze] = sort_of(b, pair, span); let copy = Expr::lit(b.t.is_copy(key).to_string()); let owns = Expr::lit(b.t.drops(targ(gargs, 2)).to_string()); let drop = b.t.dropper(key, span); Expr::rt( "sliceSortByCachedKey", - super::iter::tail(vec![s, f, lt, Expr::Array(sizes.into()), freeze, copy], vec![owns, drop]), + super::iter::tail(vec![s, f, lt, size, freeze, copy], vec![owns, drop]), ) } // Whether each element and the next are in order, as `sort` would leave them: by From 4c5332ed0d8b89196aa5fbce8e4ddc59be9078be Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 20:55:28 -0800 Subject: [PATCH 16/23] test(ts): cases for repeat_with's hint, scan's dropping state, and the closures' drops beside an adaptor's Snapshots for the last two replace_with and update cases are not yet regenerated. Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/task/expected/drops/called.ts | 637 ++++++++++++---------- ts/fixtures/task/src/drops/called.rs | 42 +- 2 files changed, 387 insertions(+), 292 deletions(-) diff --git a/ts/fixtures/task/expected/drops/called.ts b/ts/fixtures/task/expected/drops/called.ts index 9a6c9d08e..af95aa44c 100644 --- a/ts/fixtures/task/expected/drops/called.ts +++ b/ts/fixtures/task/expected/drops/called.ts @@ -1,6 +1,7 @@ // Generated by rust2-ts. Do not edit. import * as rt from "../rt.ts"; +import { drop$Vec_model_Guard as lib_drop$Vec_model_Guard } from "../lib.ts"; import { thenSome$1af3oea, thenSome$1j8foe9 } from "../core/bool.ts"; import { map$1raha9y as option_map$1raha9y } from "../core/option.ts"; import { mapErr$0nvqjog as result_mapErr$0nvqjog } from "../core/result.ts"; @@ -12,51 +13,51 @@ import * as Guard from "../model.Guard.ts"; export function called(log: Log.Log, id: rt.u32, arg: rt.u8): void { let broke!: rt.u32 | undefined; let f!: Guard.Guard; - const _449: () => rt.Iter = (): rt.Iter => { + const _516: () => rt.Iter = (): rt.Iter => { const _2: Guard.Guard[] = []; return rt.iterSlice(_2, rt.drop); }; - let _573: boolean = false; - let _572: boolean = false; - const guard: (a0: rt.u32) => Guard.Guard = (n2: rt.u32): Guard.Guard => { - return Guard.new(rt.u32Add(id, n2), Log.clone$Clone(log)); + let _658: boolean = false; + let _657: boolean = false; + const guard: (a0: rt.u32) => Guard.Guard = (n3: rt.u32): Guard.Guard => { + return Guard.new(rt.u32Add(id, n3), Log.clone$Clone(log)); }; const guards: (a0: rt.u32, a1: rt.u32) => Guard.Guard[] = (from: rt.u32, to: rt.u32): Guard.Guard[] => { return rt.iterToArray(rt.iterMap(new rt.Range(from, to), guard), undefined, 8, true); }; const _10: [Guard.Guard, Guard.Guard] = [guard(20), guard(21)]; - _573 = true; + _658 = true; const c: Guard.Guard = _10[0]; - _572 = true; + _657 = true; const d: Guard.Guard = _10[1]; const _17: rt.u8 = rt.u8Rem(arg, 12); if (_17 === 0) { const it: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); - _573 = false; - const captured26 = c; - const captured27 = id; - const n: rt.u32 | undefined = rt.iterTryFold(it, 0, rt.closure((n15: rt.u32, g20: Guard.Guard): rt.u32 | undefined => { - const _1013: rt.u32 = Guard.id(g20); - const _1315: rt.u32 = Guard.id(captured26); - const args72: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_1013, f), (f: rt.Formatter) => rt.u32Display(_1315, f)]; - Log.note(log, rt.fmtFormat(["try ", args72[0], " ", args72[1]])); - const _033: rt.u32 | undefined = thenSome$1af3oea(Guard.id(g20) !== rt.u32Add(captured27, 3), rt.u32Sub(rt.u32Add(n15, Guard.id(g20)), captured27)); - g20[Symbol.dispose](); - return _033; + _658 = false; + const captured33 = c; + const captured34 = id; + const n: rt.u32 | undefined = rt.iterTryFold(it, 0, rt.closure((n17: rt.u32, g24: Guard.Guard): rt.u32 | undefined => { + const _1014: rt.u32 = Guard.id(g24); + const _1317: rt.u32 = Guard.id(captured33); + const args78: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_1014, f), (f: rt.Formatter) => rt.u32Display(_1317, f)]; + Log.note(log, rt.fmtFormat(["try ", args78[0], " ", args78[1]])); + const _038: rt.u32 | undefined = thenSome$1af3oea(Guard.id(g24) !== rt.u32Add(captured34, 3), rt.u32Sub(rt.u32Add(n17, Guard.id(g24)), captured34)); + g24[Symbol.dispose](); + return _038; }, (): void => { - captured26[Symbol.dispose](); + captured33[Symbol.dispose](); }), true, true); - const _32: rt.u32 | undefined = option_map$1raha9y(rt.iterToOption(it.next()), (g21: Guard.Guard): rt.u32 => { - const _034: rt.u32 = Guard.id(g21); - g21[Symbol.dispose](); - return _034; + const _32: rt.u32 | undefined = option_map$1raha9y(rt.iterToOption(it.next()), (g25: Guard.Guard): rt.u32 => { + const _039: rt.u32 = Guard.id(g25); + g25[Symbol.dispose](); + return _039; }); const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(n, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtOption(_32, f, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["broke ", args2[0], " ", args2[1]])); - const m: rt.u32 | undefined = rt.iterTryFold(it, 0, (n16: rt.u32, g22: Guard.Guard): rt.u32 | undefined => { - const _035: rt.u32 | undefined = rt.u32Sub(rt.u32Add(n16, Guard.id(g22)), id); - g22[Symbol.dispose](); - return _035; + const m: rt.u32 | undefined = rt.iterTryFold(it, 0, (n18: rt.u32, g26: Guard.Guard): rt.u32 | undefined => { + const _040: rt.u32 | undefined = rt.u32Sub(rt.u32Add(n18, Guard.id(g26)), id); + g26[Symbol.dispose](); + return _040; }, true); const _51: rt.u32 = Guard.id(d); const args4: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(m, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_51, f)]; @@ -64,41 +65,41 @@ export function called(log: Log.Log, id: rt.u32, arg: rt.u8): void { rt.drop(it); } else if (_17 === 1) { const _60: rt.Iter = rt.iterChain(rt.iterSlice(guards(1, 3), rt.drop), rt.iterSlice(guards(3, 6), rt.drop)); - _573 = false; - const captured25 = c; - const it2: rt.Iter<[Guard.Guard, rt.u32]> = rt.iterMap(_60, rt.closure((g16: Guard.Guard): [Guard.Guard, rt.u32] => { - return [g16, Guard.id(captured25)] as [Guard.Guard, rt.u32]; + _658 = false; + const captured32 = c; + const it2: rt.Iter<[Guard.Guard, rt.u32]> = rt.iterMap(_60, rt.closure((g20: Guard.Guard): [Guard.Guard, rt.u32] => { + return [g20, Guard.id(captured32)] as [Guard.Guard, rt.u32]; }, (): void => { - captured25[Symbol.dispose](); + captured32[Symbol.dispose](); })); - const part13 = result_mapErr$0nvqjog(rt.iterTryFold(it2, 0, (n13: rt.u32, _331: [Guard.Guard, rt.u32]): rt.Result => { - let _030!: rt.Result; - let _2110: boolean = false; - _2110 = true; - const g17: Guard.Guard = _331[0]; - if (!(Guard.id(g17) === rt.u32Add(id, 4))) { - _030 = rt.Ok(rt.u32Sub(rt.u32Add(n13, Guard.id(g17)), id)); + const part14 = result_mapErr$0nvqjog(rt.iterTryFold(it2, 0, (n15: rt.u32, _335: [Guard.Guard, rt.u32]): rt.Result => { + let _035!: rt.Result; + let _2111: boolean = false; + _2111 = true; + const g21: Guard.Guard = _335[0]; + if (!(Guard.id(g21) === rt.u32Add(id, 4))) { + _035 = rt.Ok(rt.u32Sub(rt.u32Add(n15, Guard.id(g21)), id)); } else { - _2110 = false; - _030 = rt.Err(g17); + _2111 = false; + _035 = rt.Err(g21); } - if (_2110) { - g17[Symbol.dispose](); + if (_2111) { + g21[Symbol.dispose](); } - _2110 = false; - return _030; - }), (g18: Guard.Guard): rt.u32 => { - const _031: rt.u32 = Guard.id(g18); - g18[Symbol.dispose](); - return _031; + _2111 = false; + return _035; + }), (g22: Guard.Guard): rt.u32 => { + const _036: rt.u32 = Guard.id(g22); + g22[Symbol.dispose](); + return _036; }); - const args6: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(part13, f, rt.u32Debug, rt.u32Debug)]; + const args6: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(part14, f, rt.u32Debug, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["err ", args6[0]])); - const r2: rt.Result = rt.iterTryFold(it2, 0, (n14: rt.u32, _333: [Guard.Guard, rt.u32]): rt.Result => { - const g19: Guard.Guard = _333[0]; - const _032: rt.Result = rt.Ok(rt.u32Sub(rt.u32Add(n14, Guard.id(g19)), id)); - g19[Symbol.dispose](); - return _032; + const r2: rt.Result = rt.iterTryFold(it2, 0, (n16: rt.u32, _336: [Guard.Guard, rt.u32]): rt.Result => { + const g23: Guard.Guard = _336[0]; + const _037: rt.Result = rt.Ok(rt.u32Sub(rt.u32Add(n16, Guard.id(g23)), id)); + g23[Symbol.dispose](); + return _037; }); const _94: rt.u32 = Guard.id(d); const args8: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(r2, f, rt.u32Debug, rt.fmtUnit), (f: rt.Formatter) => rt.u32Display(_94, f)]; @@ -106,28 +107,28 @@ export function called(log: Log.Log, id: rt.u32, arg: rt.u8): void { rt.drop(it2); } else if (_17 === 2) { const _103: rt.Iter = rt.iterRev(rt.iterSlice(guards(1, 6), rt.drop)); - _573 = false; - const captured23 = c; - const it3: rt.Iter = rt.iterFilter(_103, rt.closure((g13: Guard.Guard): boolean => { - return Guard.id(g13) !== rt.u32Sub(Guard.id(captured23), 18); + _658 = false; + const captured30 = c; + const it3: rt.Iter = rt.iterFilter(_103, rt.closure((g17: Guard.Guard): boolean => { + return Guard.id(g17) !== rt.u32Sub(Guard.id(captured30), 18); }, (): void => { - captured23[Symbol.dispose](); + captured30[Symbol.dispose](); }), rt.drop); - const r3: rt.Result = rt.iterTryFold(it3, 0, (n11: rt.u32, g14: Guard.Guard): rt.Result => { - let _027!: rt.Result; - let _2011: boolean = false; - _2011 = true; - if (!(Guard.id(g14) === rt.u32Add(id, 3))) { - _027 = rt.Ok(rt.u32Sub(rt.u32Add(n11, Guard.id(g14)), id)); + const r3: rt.Result = rt.iterTryFold(it3, 0, (n13: rt.u32, g18: Guard.Guard): rt.Result => { + let _032!: rt.Result; + let _2012: boolean = false; + _2012 = true; + if (!(Guard.id(g18) === rt.u32Add(id, 3))) { + _032 = rt.Ok(rt.u32Sub(rt.u32Add(n13, Guard.id(g18)), id)); } else { - _2011 = false; - _027 = rt.Err(g14); + _2012 = false; + _032 = rt.Err(g18); } - if (_2011) { - g14[Symbol.dispose](); - return _027; + if (_2012) { + g18[Symbol.dispose](); + return _032; } - return _027; + return _032; }); if (r3.ok) { broke = undefined; @@ -140,14 +141,14 @@ export function called(log: Log.Log, id: rt.u32, arg: rt.u8): void { Log.note(log, rt.fmtFormat(["break ", args10[0]])); const _131: Guard.Guard[] = []; const _130: rt.Iter = rt.iterSlice(_131, rt.drop); - _572 = false; - const captured24 = d; - const none: rt.u32 | undefined = rt.iterTryFold(_130, 0, rt.closure((n12: rt.u32, g15: Guard.Guard): rt.u32 | undefined => { - const _028: rt.u32 | undefined = rt.u32Add(rt.u32Add(n12, Guard.id(g15)), Guard.id(captured24)); - g15[Symbol.dispose](); - return _028; + _657 = false; + const captured31 = d; + const none: rt.u32 | undefined = rt.iterTryFold(_130, 0, rt.closure((n14: rt.u32, g19: Guard.Guard): rt.u32 | undefined => { + const _033: rt.u32 | undefined = rt.u32Add(rt.u32Add(n14, Guard.id(g19)), Guard.id(captured31)); + g19[Symbol.dispose](); + return _033; }, (): void => { - captured24[Symbol.dispose](); + captured31[Symbol.dispose](); }), true, true); rt.drop(_130); const args12: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(none, f, rt.u32Debug)]; @@ -155,335 +156,399 @@ export function called(log: Log.Log, id: rt.u32, arg: rt.u8): void { rt.drop(it3); } else if (_17 === 3) { const it4: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); - _573 = false; - const captured20 = id; - const captured21 = c; - const part10 = rt.iterTryForEach(it4, rt.closure((g10: Guard.Guard): rt.Result => { - let _023!: rt.Result; - if (!(Guard.id(g10) === rt.u32Add(captured20, 2))) { - const part9 = Guard.id(g10); - const args70: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part9, f)]; - Log.note(log, rt.fmtFormat(["each ", args70[0]])); - _023 = rt.OK; + _658 = false; + const captured27 = id; + const captured28 = c; + const part11 = rt.iterTryForEach(it4, rt.closure((g14: Guard.Guard): rt.Result => { + let _028!: rt.Result; + if (!(Guard.id(g14) === rt.u32Add(captured27, 2))) { + const part10 = Guard.id(g14); + const args76: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part10, f)]; + Log.note(log, rt.fmtFormat(["each ", args76[0]])); + _028 = rt.OK; } else { - _023 = rt.Err(rt.u32Sub(rt.u32Add(Guard.id(g10), Guard.id(captured21)), Guard.id(captured21))); + _028 = rt.Err(rt.u32Sub(rt.u32Add(Guard.id(g14), Guard.id(captured28)), Guard.id(captured28))); } - g10[Symbol.dispose](); - return _023; + g14[Symbol.dispose](); + return _028; }, (): void => { - captured21[Symbol.dispose](); + captured28[Symbol.dispose](); }), undefined, true); - const args14: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(part10, f, rt.fmtUnit, rt.u32Debug)]; + const args14: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(part11, f, rt.fmtUnit, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["each ", args14[0]])); - const part11 = rt.iterTryForEach(it4, (g11: Guard.Guard): rt.Result => { - let _024!: rt.Result; - if (!(Guard.id(g11) === rt.u32Add(id, 4))) { - _024 = rt.OK; + const part12 = rt.iterTryForEach(it4, (g15: Guard.Guard): rt.Result => { + let _029!: rt.Result; + if (!(Guard.id(g15) === rt.u32Add(id, 4))) { + _029 = rt.OK; } else { - _024 = rt.Err(Guard.id(g11)); + _029 = rt.Err(Guard.id(g15)); } - g11[Symbol.dispose](); - return _024; + g15[Symbol.dispose](); + return _029; }); - const args16: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtControlFlow(part11, f, rt.fmtUnit, rt.u32Debug)]; + const args16: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtControlFlow(part12, f, rt.fmtUnit, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["flow ", args16[0]])); - _572 = false; - const captured22 = d; - const part12 = rt.iterTryForEach(it4, rt.closure((g12: Guard.Guard): undefined | rt.None => { - const _025: undefined | rt.None = thenSome$1j8foe9(Guard.id(g12) !== Guard.id(captured22), undefined); - g12[Symbol.dispose](); - return _025; + _657 = false; + const captured29 = d; + const part13 = rt.iterTryForEach(it4, rt.closure((g16: Guard.Guard): undefined | rt.None => { + const _030: undefined | rt.None = thenSome$1j8foe9(Guard.id(g16) !== Guard.id(captured29), undefined); + g16[Symbol.dispose](); + return _030; }, (): void => { - captured22[Symbol.dispose](); + captured29[Symbol.dispose](); }), true, true, rt.None); - const args18: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part12, f, rt.fmtUnit, rt.None)]; + const args18: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part13, f, rt.fmtUnit, rt.None)]; Log.note(log, rt.fmtFormat(["some ", args18[0]])); rt.drop(it4); } else if (_17 === 4) { const _190: rt.Iter = rt.iterSlice(guards(1, 7), rt.drop); - _573 = false; - const captured19 = c; - const _189: [Guard.Guard[], Guard.Guard[]] = rt.iterPartition(_190, rt.closure((g9: Guard.Guard): boolean => { - const _912: rt.u32 = Guard.id(g9); - const _1114: rt.u32 = Guard.id(captured19); - const args68: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_912, f), (f: rt.Formatter) => rt.u32Display(_1114, f)]; - Log.note(log, rt.fmtFormat(["side ", args68[0], " ", args68[1]])); - return rt.u32Rem(Guard.id(g9), 2) === 1; + _658 = false; + const captured23 = c; + const _189: [Guard.Guard[], Guard.Guard[]] = rt.iterPartition(_190, rt.closure((g11: Guard.Guard): boolean => { + const _912: rt.u32 = Guard.id(g11); + const _1114: rt.u32 = Guard.id(captured23); + const args74: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_912, f), (f: rt.Formatter) => rt.u32Display(_1114, f)]; + Log.note(log, rt.fmtFormat(["side ", args74[0], " ", args74[1]])); + return rt.u32Rem(Guard.id(g11), 2) === 1; }, (): void => { - captured19[Symbol.dispose](); + captured23[Symbol.dispose](); }), [[] as Guard.Guard[], [] as Guard.Guard[]], rt.vecPart(8), true, true); const odd: Guard.Guard[] = _189[0]; const even: Guard.Guard[] = _189[1]; - const part8 = rt.iterToArray(rt.iterMap(rt.iterSlice(odd), Guard.id), undefined, 4, true); - const args20: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part8, f, rt.u32Debug)]; + const part9 = rt.iterToArray(rt.iterMap(rt.iterSlice(odd), Guard.id), undefined, 4, true); + const args20: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part9, f, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["odd ", args20[0]])); rt.dropAll(even); - const _213: [rt.u32[], rt.u32[]] = rt.iterPartition(new rt.Range(1, 4), (_215: rt.u32): boolean => { + const _213: [rt.u32[], rt.u32[]] = rt.iterPartition(new rt.Range(1, 4), (_219: rt.u32): boolean => { return true; }, [[] as rt.u32[], [] as rt.u32[]], rt.vecPart(4)); const all: rt.u32[] = _213[0]; const none2: rt.u32[] = _213[1]; - const _221: rt.u32 = Guard.id(d); - const args22: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(all, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtList(none2, f, rt.u32Debug), (f: rt.Formatter) => rt.u32Display(_221, f)]; - Log.note(log, rt.fmtFormat(["all ", args22[0], " ", args22[1], " ", args22[2]])); + const args22: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(all, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtList(none2, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["all ", args22[0], " ", args22[1]])); + const e: Guard.Guard = guard(22); + const _234: rt.Iter = rt.iterSlice(guards(1, 4), rt.drop); + const captured24 = e; + const _233: rt.Iter = rt.iterMap(_234, rt.closure((g12: Guard.Guard): Guard.Guard => { + return ([g12, Guard.id(captured24)] as [Guard.Guard, rt.u32])[0]; + }, (): void => { + captured24[Symbol.dispose](); + })); + _657 = false; + const captured25 = d; + const captured26 = id; + const _232: [Guard.Guard[], Guard.Guard[]] = rt.iterPartition(_233, rt.closure((g13: Guard.Guard): boolean => { + return rt.u32Sub(rt.u32Add(Guard.id(g13), Guard.id(captured25)), Guard.id(captured25)) < rt.u32Add(captured26, 2); + }, (): void => { + captured25[Symbol.dispose](); + }), [[] as Guard.Guard[], [] as Guard.Guard[]], rt.vecPart(8), true, true); + const low: Guard.Guard[] = _232[0]; + const high: Guard.Guard[] = _232[1]; + const _246: rt.usize = low.length; + const _249: rt.usize = high.length; + const args24: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(_246, f), (f: rt.Formatter) => rt.usizeDisplay(_249, f)]; + Log.note(log, rt.fmtFormat(["sides ", args24[0], " ", args24[1]])); + rt.dropAll(high); + rt.dropAll(low); rt.dropAll(odd); } else if (_17 === 5) { - _573 = false; - let captured15: rt.u32 = 0; - const captured16 = c; - const captured17 = guard; + _658 = false; + let captured19: rt.u32 = 0; + const captured20 = c; + const captured21 = guard; const made: Guard.Guard[] = rt.iterToArray(rt.iterTake(rt.iterRepeatWith(rt.closure((): Guard.Guard => { - captured15 = rt.u32Add(captured15, 1); - const _911: rt.u32 = Guard.id(captured16); - const args66: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(captured15, f), (f: rt.Formatter) => rt.u32Display(_911, f)]; - Log.note(log, rt.fmtFormat(["make ", args66[0], " ", args66[1]])); - return captured17(captured15); + captured19 = rt.u32Add(captured19, 1); + const _911: rt.u32 = Guard.id(captured20); + const args72: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(captured19, f), (f: rt.Formatter) => rt.u32Display(_911, f)]; + Log.note(log, rt.fmtFormat(["make ", args72[0], " ", args72[1]])); + return captured21(captured19); }, (): void => { - captured16[Symbol.dispose](); + captured20[Symbol.dispose](); })), 3, rt.drop), "fold", 8, true); - const part6 = made.length; - const args24: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(part6, f)]; - Log.note(log, rt.fmtFormat(["made ", args24[0]])); - _572 = false; - const captured18 = d; + const part8 = made.length; + const args26: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(part8, f)]; + Log.note(log, rt.fmtFormat(["made ", args26[0]])); + _657 = false; + const captured22 = d; const it5: rt.Iter = rt.iterRepeatWith(rt.closure((): rt.u32 => { - return Guard.id(captured18); + return Guard.id(captured22); }, (): void => { - captured18[Symbol.dispose](); + captured22[Symbol.dispose](); })); - const part7 = rt.iterToOption(it5.next()); - const args26: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(part7, f, rt.u32Debug)]; - Log.note(log, rt.fmtFormat(["first ", args26[0]])); + const _280: rt.u32 | undefined = rt.iterToOption(it5.next()); + const _283: [rt.usize, rt.usize | undefined] = it5.sizeHint(); + const _286: [rt.usize, rt.usize | undefined] = rt.iterTake(rt.iterBorrow(it5), 2).sizeHint(); + const args28: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(_280, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.usizeDebug(_283[0], f), (f: rt.Formatter) => rt.fmtOption(_283[1], f, rt.usizeDebug)], f), (f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.usizeDebug(_286[0], f), (f: rt.Formatter) => rt.fmtOption(_286[1], f, rt.usizeDebug)], f)]; + Log.note(log, rt.fmtFormat(["first ", args28[0], " ", args28[1], " ", args28[2]])); rt.drop(it5); Log.note(log, "dropped"); rt.dropAll(made); } else if (_17 === 6) { - const _267: rt.Iter = rt.iterSlice(guards(1, 7), rt.drop); - _573 = false; - const captured13 = id; - const captured14 = c; - const it6: rt.Iter = rt.iterScan(_267, 0, rt.closure((sum: rt.Place, g8: Guard.Guard): rt.u32 | undefined => { - const _427: rt.u32 = rt.u32Sub(Guard.id(g8), captured13); - sum.v = rt.u32Add(sum.v, _427); - const _168: rt.u32 = Guard.id(g8); - const _195: rt.u32 = Guard.id(captured14); - const args64: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_168, f), (f: rt.Formatter) => rt.u32Display(sum.v, f), (f: rt.Formatter) => rt.u32Display(_195, f)]; - Log.note(log, rt.fmtFormat(["scan ", args64[0], " ", args64[1], " ", args64[2]])); - const _018: rt.u32 | undefined = thenSome$1af3oea(sum.v < 10, sum.v); - g8[Symbol.dispose](); - return _018; + const _303: rt.Iter = rt.iterSlice(guards(1, 7), rt.drop); + _658 = false; + const captured14 = id; + const captured15 = c; + const it6: rt.Iter = rt.iterScan(_303, 0, rt.closure((sum: rt.Place, g9: Guard.Guard): rt.u32 | undefined => { + const _429: rt.u32 = rt.u32Sub(Guard.id(g9), captured14); + sum.v = rt.u32Add(sum.v, _429); + const _168: rt.u32 = Guard.id(g9); + const _195: rt.u32 = Guard.id(captured15); + const args68: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_168, f), (f: rt.Formatter) => rt.u32Display(sum.v, f), (f: rt.Formatter) => rt.u32Display(_195, f)]; + Log.note(log, rt.fmtFormat(["scan ", args68[0], " ", args68[1], " ", args68[2]])); + const _019: rt.u32 | undefined = thenSome$1af3oea(sum.v < 10, sum.v); + g9[Symbol.dispose](); + return _019; }, (): void => { - captured14[Symbol.dispose](); + captured15[Symbol.dispose](); }), true); const sums: rt.u32[] = rt.iterToArray(rt.iterBorrow(it6), "next", 4); - const _281: rt.u32 | undefined = rt.iterToOption(it6.next()); - const args28: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(sums, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtOption(_281, f, rt.u32Debug)]; - Log.note(log, rt.fmtFormat(["sums ", args28[0], " ", args28[1]])); + const _317: rt.u32 | undefined = rt.iterToOption(it6.next()); + const args30: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(sums, f, rt.u32Debug), (f: rt.Formatter) => rt.fmtOption(_317, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["sums ", args30[0], " ", args30[1]])); rt.drop(it6); - const total: rt.u32 = rt.iterSum(rt.iterScan(new rt.Range(1, 4), 1, (n10: rt.Place, k2: rt.u32): rt.u32 | undefined => { - n10.v = rt.u32Mul(n10.v, k2); - return n10.v; + const part6 = rt.iterSum(rt.iterScan(new rt.Range(1, 4), 1, (n11: rt.Place, k2: rt.u32): rt.u32 | undefined => { + n11.v = rt.u32Mul(n11.v, k2); + return n11.v; }, true), rt.u32Add, 0); - const _300: rt.u32 = Guard.id(d); - const args30: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(total, f), (f: rt.Formatter) => rt.u32Display(_300, f)]; - Log.note(log, rt.fmtFormat(["total ", args30[0], " ", args30[1]])); + const args32: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part6, f)]; + Log.note(log, rt.fmtFormat(["total ", args32[0]])); + const e2: Guard.Guard = guard(22); + const v: Guard.Guard[][] = []; + const _351: Guard.Guard[] = guards(1, 3); + v.push(_351); + const _356: Guard.Guard[] = guards(3, 6); + v.push(_356); + const _345: rt.Iter = rt.iterFlatten(rt.iterSlice(v, lib_drop$Vec_model_Guard), (value: Guard.Guard[]) => rt.iterSlice(value, rt.drop), true); + const _359: Guard.Guard = guard(23); + _657 = false; + const captured16 = d; + const captured17 = id; + const captured18 = e2; + const part7 = rt.iterFold(rt.iterScan(_345, _359, rt.closure((held: Guard.Guard, g10: Guard.Guard): rt.u32 | undefined => { + const _109: rt.u32 = Guard.id(held); + const _1311: rt.u32 = Guard.id(g10); + const _1610: rt.u32 = Guard.id(captured16); + const args70: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_109, f), (f: rt.Formatter) => rt.u32Display(_1311, f), (f: rt.Formatter) => rt.u32Display(_1610, f)]; + Log.note(log, rt.fmtFormat(["held ", args70[0], " ", args70[1], " ", args70[2]])); + const _021: rt.u32 | undefined = thenSome$1af3oea(Guard.id(g10) !== rt.u32Add(captured17, 4), rt.u32Sub(rt.u32Add(Guard.id(g10), Guard.id(captured18)), Guard.id(captured18))); + g10[Symbol.dispose](); + return _021; + }, (): void => { + captured16[Symbol.dispose](); + captured18[Symbol.dispose](); + }), undefined, rt.drop), 0, (n12: rt.u32, k3: rt.u32): rt.u32 => { + return rt.u32Sub(rt.u32Add(n12, k3), id); + }, true); + const args34: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part7, f)]; + Log.note(log, rt.fmtFormat(["flat ", args34[0]])); } else if (_17 === 7) { - const v: Guard.Guard[] = rt.iterToArray(rt.iterSlice(rt.arrayMap([3, 1, 4, 5, 2], guard), rt.drop), "fold", 8, true); - const _313: Guard.Guard[] = v; - _573 = false; - const captured12 = c; - rt.sliceSortByCachedKey(_313, rt.closure((g7: Guard.Guard): Key.Key => { - const _97: rt.u32 = Guard.id(g7); - const _1112: rt.u32 = Guard.id(captured12); - const args62: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_97, f), (f: rt.Formatter) => rt.u32Display(_1112, f)]; - Log.note(log, rt.fmtFormat(["key ", args62[0], " ", args62[1]])); - return Key.new(rt.u32Rem(rt.u32Mul(Guard.id(g7), 7), 5), Log.clone$Clone(log)); + const v2: Guard.Guard[] = rt.iterToArray(rt.iterSlice(rt.arrayMap([3, 1, 4, 5, 2], guard), rt.drop), "fold", 8, true); + const _380: Guard.Guard[] = v2; + _658 = false; + const captured13 = c; + rt.sliceSortByCachedKey(_380, rt.closure((g8: Guard.Guard): Key.Key => { + const _97: rt.u32 = Guard.id(g8); + const _1112: rt.u32 = Guard.id(captured13); + const args66: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_97, f), (f: rt.Formatter) => rt.u32Display(_1112, f)]; + Log.note(log, rt.fmtFormat(["key ", args66[0], " ", args66[1]])); + return Key.new(rt.u32Rem(rt.u32Mul(Guard.id(g8), 7), 5), Log.clone$Clone(log)); }, (): void => { - captured12[Symbol.dispose](); + captured13[Symbol.dispose](); }), rt.cmpLt(rt.cmpTuple<[Key.Key, rt.usize], rt.Ordering | undefined>([Key.partialCmp$cmp_PartialOrd, rt.cmp])), 16, true, false, true, rt.drop); - const part5 = rt.iterToArray(rt.iterMap(rt.iterSlice(v), Guard.id), undefined, 4, true); - const args32: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part5, f, rt.u32Debug)]; - Log.note(log, rt.fmtFormat(["sorted ", args32[0]])); + const part5 = rt.iterToArray(rt.iterMap(rt.iterSlice(v2), Guard.id), undefined, 4, true); + const args36: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part5, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["sorted ", args36[0]])); const w: rt.u32[] = [3, 1, 2]; rt.sliceSortByCachedKey(w, (_210: rt.u32): rt.u32 => { return rt.u32Add(_210, Guard.id(d)); }, rt.cmpLt(rt.cmpTuple<[rt.u32, rt.usize], rt.Ordering | undefined>([rt.cmpReverse(rt.cmp), rt.cmp])), 8, true, true); - const args34: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(w, f, rt.u32Debug)]; - Log.note(log, rt.fmtFormat(["rev ", args34[0]])); - rt.dropAll(v); + const args38: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(w, f, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["rev ", args38[0]])); + rt.dropAll(v2); } else if (_17 === 8) { - _573 = false; - const captured9 = c; + _658 = false; + const captured10 = c; const lazy: rt.LazyCell = new rt.LazyCell(rt.closure((): rt.u32 => { - const part3 = Guard.id(captured9); - const args60: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part3, f)]; - Log.note(log, rt.fmtFormat(["force ", args60[0]])); - const _013: rt.u32 = rt.u32Add(Guard.id(captured9), 1); - captured9[Symbol.dispose](); - return _013; + const part3 = Guard.id(captured10); + const args64: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part3, f)]; + Log.note(log, rt.fmtFormat(["force ", args64[0]])); + const _014: rt.u32 = rt.u32Add(Guard.id(captured10), 1); + captured10[Symbol.dispose](); + return _014; }, (): void => { - captured9[Symbol.dispose](); + captured10[Symbol.dispose](); })); Log.note(log, "made"); - const _358: rt.u32 = lazy.force(); - const _360: rt.u32 = lazy.force(); - const args36: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_358, f), (f: rt.Formatter) => rt.u32Display(_360, f)]; - Log.note(log, rt.fmtFormat(["forced ", args36[0], " ", args36[1]])); - _572 = false; - const captured10 = d; + const _425: rt.u32 = lazy.force(); + const _427: rt.u32 = lazy.force(); + const args40: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_425, f), (f: rt.Formatter) => rt.u32Display(_427, f)]; + Log.note(log, rt.fmtFormat(["forced ", args40[0], " ", args40[1]])); + _657 = false; + const captured11 = d; rt.lazyDrop(new rt.LazyCell(rt.closure((): rt.u32 => { - const _014: rt.u32 = Guard.id(captured10); - captured10[Symbol.dispose](); - return _014; + const _015: rt.u32 = Guard.id(captured11); + captured11[Symbol.dispose](); + return _015; }, (): void => { - captured10[Symbol.dispose](); + captured11[Symbol.dispose](); })), undefined, rt.drop); Log.note(log, "unused"); - const captured11 = guard(22); + const captured12 = guard(22); const lazy2: rt.LazyCell = new rt.LazyCell(rt.once(rt.closure((): rt.u32 => { - return Guard.id(captured11); + return Guard.id(captured12); }, (): void => { - captured11[Symbol.dispose](); + captured12[Symbol.dispose](); }))); const part4 = lazy2.force(); - const args38: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part4, f)]; - Log.note(log, rt.fmtFormat(["by Fn ", args38[0]])); + const args42: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part4, f)]; + Log.note(log, rt.fmtFormat(["by Fn ", args42[0]])); rt.lazyDrop(lazy2, undefined, rt.drop); rt.lazyDrop(lazy, undefined, rt.drop); } else if (_17 === 9) { const cell: rt.Cell = new rt.Cell(1); - _573 = false; - const captured5 = c; - rt.cellUpdate(cell, rt.closure((n6: rt.u32): rt.u32 => { - const _93: rt.u32 = Guard.id(captured5); - const args56: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n6, f), (f: rt.Formatter) => rt.u32Display(_93, f)]; - Log.note(log, rt.fmtFormat(["update ", args56[0], " ", args56[1]])); - const _09: rt.u32 = rt.u32Add(n6, 1); - captured5[Symbol.dispose](); - return _09; + _658 = false; + const captured6 = c; + rt.cellUpdate(cell, rt.closure((n7: rt.u32): rt.u32 => { + const _93: rt.u32 = Guard.id(captured6); + const args60: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n7, f), (f: rt.Formatter) => rt.u32Display(_93, f)]; + Log.note(log, rt.fmtFormat(["update ", args60[0], " ", args60[1]])); + const _010: rt.u32 = rt.u32Add(n7, 1); + captured6[Symbol.dispose](); + return _010; }, (): void => { - captured5[Symbol.dispose](); + captured6[Symbol.dispose](); })); const part = cell.v; - const args40: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part, f)]; - Log.note(log, rt.fmtFormat(["updated ", args40[0]])); + const args44: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part, f)]; + Log.note(log, rt.fmtFormat(["updated ", args44[0]])); const cell2: rt.RefCell = new rt.RefCell(5); - _572 = false; - const captured6 = d; - const old: rt.u32 = rt.refCellReplaceWith(cell2, rt.closure((n7: rt.Place): rt.u32 => { - const _95: rt.u32 = Guard.id(captured6); - const args58: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n7.v, f), (f: rt.Formatter) => rt.u32Display(_95, f)]; - Log.note(log, rt.fmtFormat(["replace ", args58[0], " ", args58[1]])); - const _010: rt.u32 = rt.u32Mul(n7.v, 2); - captured6[Symbol.dispose](); - return _010; + _657 = false; + const captured7 = d; + const old: rt.u32 = rt.refCellReplaceWith(cell2, rt.closure((n8: rt.Place): rt.u32 => { + const _95: rt.u32 = Guard.id(captured7); + const args62: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(n8.v, f), (f: rt.Formatter) => rt.u32Display(_95, f)]; + Log.note(log, rt.fmtFormat(["replace ", args62[0], " ", args62[1]])); + const _011: rt.u32 = rt.u32Mul(n8.v, 2); + captured7[Symbol.dispose](); + return _011; }, (): void => { - captured6[Symbol.dispose](); + captured7[Symbol.dispose](); }), true); - const _415: rt.RefCell = rt.refCellBorrow(cell2); - const args42: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(old, f), (f: rt.Formatter) => rt.u32Display(_415.value, f)]; - const _411: string = rt.fmtFormat(["replaced ", args42[0], " ", args42[1]]); - rt.refRelease(_415); - Log.note(log, _411); - const _425: [Guard.Guard, Guard.Guard] = [guard(22), guard(23)]; - const e2: Guard.Guard = _425[0]; - f = _425[1]; - const captured7 = e2; - const captured8 = f; - const add: (a0: rt.u32) => rt.u32 = rt.closure((n8: rt.u32): rt.u32 => { - return rt.u32Add(rt.u32Sub(rt.u32Add(n8, Guard.id(captured7)), Guard.id(captured7)), 1); + const _482: rt.RefCell = rt.refCellBorrow(cell2); + const args46: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(old, f), (f: rt.Formatter) => rt.u32Display(_482.value, f)]; + const _478: string = rt.fmtFormat(["replaced ", args46[0], " ", args46[1]]); + rt.refRelease(_482); + Log.note(log, _478); + const _492: [Guard.Guard, Guard.Guard] = [guard(22), guard(23)]; + const e4: Guard.Guard = _492[0]; + f = _492[1]; + const captured8 = e4; + const captured9 = f; + const add: (a0: rt.u32) => rt.u32 = rt.closure((n9: rt.u32): rt.u32 => { + return rt.u32Add(rt.u32Sub(rt.u32Add(n9, Guard.id(captured8)), Guard.id(captured8)), 1); }, (): void => { - captured7[Symbol.dispose](); + captured8[Symbol.dispose](); }); - const doubled: (a0: rt.Place) => rt.u32 = rt.closure((n9: rt.Place): rt.u32 => { - return rt.u32Sub(rt.u32Add(rt.u32Mul(n9.v, 2), Guard.id(captured8)), Guard.id(captured8)); + const doubled: (a0: rt.Place) => rt.u32 = rt.closure((n10: rt.Place): rt.u32 => { + return rt.u32Sub(rt.u32Add(rt.u32Mul(n10.v, 2), Guard.id(captured9)), Guard.id(captured9)); }, (): void => { - captured8[Symbol.dispose](); + captured9[Symbol.dispose](); }); rt.cellUpdate(new rt.Cell(1), rt.once(add)); const part2 = rt.refCellReplaceWith(cell2, rt.once(doubled), true); - const args44: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part2, f)]; - Log.note(log, rt.fmtFormat(["by Fn ", args44[0]])); + const args48: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part2, f)]; + Log.note(log, rt.fmtFormat(["by Fn ", args48[0]])); } else if (_17 === 10) { - const _452: rt.Iter = _449(); - _573 = false; + const _519: rt.Iter = _516(); + _658 = false; const captured3 = c; - const r7: rt.Result = rt.iterTryFold(_452, 0, rt.closure((n4: rt.u32, g3: Guard.Guard): rt.Result => { - const _05: rt.Result = rt.Ok(rt.u32Add(rt.u32Add(n4, Guard.id(g3)), Guard.id(captured3))); + const r7: rt.Result = rt.iterTryFold(_519, 0, rt.closure((n5: rt.u32, g3: Guard.Guard): rt.Result => { + const _05: rt.Result = rt.Ok(rt.u32Add(rt.u32Add(n5, Guard.id(g3)), Guard.id(captured3))); g3[Symbol.dispose](); return _05; }, (): void => { captured3[Symbol.dispose](); }), undefined, true); - rt.drop(_452); - const args46: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(r7, f, rt.u32Debug, rt.u32Debug)]; - Log.note(log, rt.fmtFormat(["fold ", args46[0]])); - const _467: rt.Iter = _449(); - _572 = false; + rt.drop(_519); + const args50: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtResult(r7, f, rt.u32Debug, rt.u32Debug)]; + Log.note(log, rt.fmtFormat(["fold ", args50[0]])); + const _534: rt.Iter = _516(); + _657 = false; const captured4 = d; - const r8: undefined | rt.None = rt.iterTryForEach(_467, rt.closure((g4: Guard.Guard): undefined | rt.None => { + const r8: undefined | rt.None = rt.iterTryForEach(_534, rt.closure((g4: Guard.Guard): undefined | rt.None => { const _06: undefined | rt.None = thenSome$1j8foe9(Guard.id(g4) !== Guard.id(captured4), undefined); g4[Symbol.dispose](); return _06; }, (): void => { captured4[Symbol.dispose](); }), true, true, rt.None); - rt.drop(_467); - const args48: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(r8, f, rt.fmtUnit, rt.None)]; - Log.note(log, rt.fmtFormat(["each ", args48[0]])); - const _482: [Guard.Guard[], Guard.Guard[]] = rt.iterPartition(_449(), (g5: Guard.Guard): boolean => { + rt.drop(_534); + const args52: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtOption(r8, f, rt.fmtUnit, rt.None)]; + Log.note(log, rt.fmtFormat(["each ", args52[0]])); + const _549: [Guard.Guard[], Guard.Guard[]] = rt.iterPartition(_516(), (g5: Guard.Guard): boolean => { return Guard.id(g5) > 0; }, [[] as Guard.Guard[], [] as Guard.Guard[]], rt.vecPart(8), true); - const a: Guard.Guard[] = _482[0]; - const b: Guard.Guard[] = _482[1]; - const _491: rt.usize = a.length; - const _494: rt.usize = b.length; - const args50: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(_491, f), (f: rt.Formatter) => rt.usizeDisplay(_494, f)]; - Log.note(log, rt.fmtFormat(["sides ", args50[0], " ", args50[1]])); - const scanned: rt.u32[] = rt.iterToArray(rt.iterScan(_449(), 0, (n5: rt.Place, g6: Guard.Guard): rt.u32 | undefined => { - const _08: rt.u32 | undefined = rt.u32Add(n5.v, Guard.id(g6)); + const a: Guard.Guard[] = _549[0]; + const b: Guard.Guard[] = _549[1]; + const _558: rt.usize = a.length; + const _561: rt.usize = b.length; + const args54: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(_558, f), (f: rt.Formatter) => rt.usizeDisplay(_561, f)]; + Log.note(log, rt.fmtFormat(["sides ", args54[0], " ", args54[1]])); + const scanned: rt.u32[] = rt.iterToArray(rt.iterScan(_516(), 0, (n6: rt.Place, g6: Guard.Guard): rt.u32 | undefined => { + const _08: rt.u32 | undefined = rt.u32Add(n6.v, Guard.id(g6)); g6[Symbol.dispose](); return _08; }, true), "next", 4, false, 8); const empty: Guard.Guard[] = []; rt.sliceSortByCachedKey(empty, Guard.id, rt.cmpLt(rt.cmpTuple<[rt.u32, rt.usize], rt.Ordering | undefined>([rt.cmp, rt.cmp])), 8, true, true); - const _515: rt.usize = scanned.length; - const _518: rt.usize = empty.length; - const args52: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(_515, f), (f: rt.Formatter) => rt.usizeDisplay(_518, f)]; - Log.note(log, rt.fmtFormat(["scanned ", args52[0], " ", args52[1]])); + const one: Guard.Guard[] = guards(1, 2); + const e5: Guard.Guard = guard(22); + const _583: Guard.Guard[] = one; + const captured5 = e5; + rt.sliceSortByCachedKey(_583, rt.closure((g7: Guard.Guard): rt.u32 => { + return rt.u32Add(Guard.id(g7), Guard.id(captured5)); + }, (): void => { + captured5[Symbol.dispose](); + }), rt.cmpLt(rt.cmpTuple<[rt.u32, rt.usize], rt.Ordering | undefined>([rt.cmp, rt.cmp])), 8, true, true, true); + const _592: rt.usize = scanned.length; + const _595: rt.usize = empty.length; + const _598: rt.usize = one.length; + const args56: rt.Fmt[] = [(f: rt.Formatter) => rt.usizeDisplay(_592, f), (f: rt.Formatter) => rt.usizeDisplay(_595, f), (f: rt.Formatter) => rt.usizeDisplay(_598, f)]; + Log.note(log, rt.fmtFormat(["scanned ", args56[0], " ", args56[1], " ", args56[2]])); + rt.dropAll(one); rt.dropAll(empty); rt.dropAll(b); rt.dropAll(a); } else { const a2: Guard.Guard = guard(30); - const _530: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); + const _611: rt.Iter = rt.iterSlice(guards(1, 6), rt.drop); const captured = id; const captured2 = a2; - rt.iterTryFold(_530, 0, rt.closure((n3: rt.u32, g2: Guard.Guard): rt.u32 | undefined => { + rt.iterTryFold(_611, 0, rt.closure((n4: rt.u32, g2: Guard.Guard): rt.u32 | undefined => { if (!(Guard.id(g2) !== rt.u32Add(captured, 3))) { const _142: rt.u32 = Guard.id(g2); const _173: rt.u32 = Guard.id(captured2); const _205: string = rt.resultUnwrap(rt.stringFromUtf8(Log.text(log)), rt.fmtFromUtf8ErrorDebug); - const args54: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_142, f), (f: rt.Formatter) => rt.u32Display(_173, f), (f: rt.Formatter) => rt.fmtPad(f, _205)]; - rt.panicFmt(["try_fold of g", args54[0], " with g", args54[1], " after\n", args54[2]]); + const args58: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(_142, f), (f: rt.Formatter) => rt.u32Display(_173, f), (f: rt.Formatter) => rt.fmtPad(f, _205)]; + rt.panicFmt(["try_fold of g", args58[0], " with g", args58[1], " after\n", args58[2]]); } else { - const _04: rt.u32 | undefined = rt.u32Add(n3, Guard.id(g2)); + const _04: rt.u32 | undefined = rt.u32Add(n4, Guard.id(g2)); g2[Symbol.dispose](); return _04; } }, (): void => { captured2[Symbol.dispose](); }), true, true); - rt.drop(_530); + rt.drop(_611); } - if (_572) { + if (_657) { d[Symbol.dispose](); } - _572 = false; - if (_573) { + _657 = false; + if (_658) { c[Symbol.dispose](); } - _573 = false; + _658 = false; } //# sourceMappingURL=called.ts.map diff --git a/ts/fixtures/task/src/drops/called.rs b/ts/fixtures/task/src/drops/called.rs index 45023c4e7..f29261514 100644 --- a/ts/fixtures/task/src/drops/called.rs +++ b/ts/fixtures/task/src/drops/called.rs @@ -77,7 +77,14 @@ pub(super) fn called(log: &Log, id: u32, arg: u8) { log.note(format!("odd {:?}", odd.iter().map(Guard::id).collect::>())); drop(even); let (all, none): (Vec, Vec) = (1..4).partition(|_| true); - log.note(format!("all {all:?} {none:?} {}", d.id())); + log.note(format!("all {all:?} {none:?}")); + // Through `map`, whose fold drops `partition`'s closure before its own. + let e = guard(22); + let (low, high): (Vec, Vec) = guards(1, 4) + .into_iter() + .map(move |g| (g, e.id()).0) + .partition(move |g| g.id() + d.id() - d.id() < id + 2); + log.note(format!("sides {} {}", low.len(), high.len())); } 5 => { // `repeat_with`, which drops its closure with the iterator, each item as it goes. @@ -91,7 +98,7 @@ pub(super) fn called(log: &Log, id: u32, arg: u8) { .collect(); log.note(format!("made {}", made.len())); let mut it = std::iter::repeat_with(move || d.id()); - log.note(format!("first {:?}", it.next())); + log.note(format!("first {:?} {:?} {:?}", it.next(), it.size_hint(), it.by_ref().take(2).size_hint())); drop(it); log.note("dropped".into()); } @@ -111,7 +118,18 @@ pub(super) fn called(log: &Log, id: u32, arg: u8) { Some(*n) }) .sum(); - log.note(format!("total {total} {}", d.id())); + log.note(format!("total {total}")); + // Of a state that drops, after the closure, and folded through `flatten`. + let e = guard(22); + let n = list![guards(1, 3), guards(3, 6)] + .into_iter() + .flatten() + .scan(guard(23), move |held, g| { + log.note(format!("held {} {} {}", held.id(), g.id(), d.id())); + (g.id() != id + 4).then_some(g.id() + e.id() - e.id()) + }) + .fold(0, |n, k| n + k - id); + log.note(format!("flat {n}")); } 7 => { // `sort_by_cached_key`, whose keys drop after the sort, and whose closure drops @@ -154,8 +172,9 @@ pub(super) fn called(log: &Log, id: u32, arg: u8) { }); log.note(format!("updated {}", cell.get())); let cell = RefCell::new(5u32); - let old = cell.replace_with(move |n| { - log.note(format!("replace {n} {}", d.id())); + let old = cell.replace_with(|n| { + log.note(format!("replace {n} {} {}", d.id(), cell.try_borrow().is_err())); + *n += 1; *n * 2 }); log.note(format!("replaced {old} {}", cell.borrow())); @@ -164,6 +183,14 @@ pub(super) fn called(log: &Log, id: u32, arg: u8) { let add = move |n: u32| n + e.id() - e.id() + 1; let doubled = move |n: &mut u32| *n * 2 + f.id() - f.id(); Cell::new(1u32).update(add); + // A copy of what JS shares, which the function changes and the cell keeps. + let pair = Cell::new([1u32, 2]); + pair.update(|mut p| { + p[0] += 10; + log.note(format!("pair {} {}", p[0], pair.get()[0])); + p + }); + log.note(format!("paired {:?}", pair.get())); log.note(format!("by Fn {}", cell.replace_with(doubled))); } 10 => { @@ -178,7 +205,10 @@ pub(super) fn called(log: &Log, id: u32, arg: u8) { let scanned: Vec = none().scan(0u32, |n, g| Some(*n + g.id())).collect(); let mut empty: Vec = Vec::new(); empty.sort_by_cached_key(Guard::id); - log.note(format!("scanned {} {}", scanned.len(), empty.len())); + let mut one = guards(1, 2); + let e = guard(22); + one.sort_by_cached_key(move |g| g.id() + e.id()); + log.note(format!("scanned {} {} {}", scanned.len(), empty.len(), one.len())); } _ => { let a = guard(30); From f1e9b4ca6ff30dc4b4622458e6c1ca392bb78c51 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 21:15:27 -0800 Subject: [PATCH 17/23] fix(ts): read a boxed crate iterator by std's box, which forwards only last of its by-value overrides Box's Iterator forwards next, size_hint, nth, last, next_back, nth_back, and len, and folds and counts by next, so a box of the crate's own iterator no longer calls its fold, rfold, or count. lang's ends reads a Box through every consumer and fold. Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/lang/ends/caller.ts | 8 +- ts/fixtures/lang/ends/expected/ends.ts | 311 +++++++++++++++++++++++-- ts/fixtures/lang/ends/src/ends.rs | 19 +- ts/src/lower/iter.rs | 29 ++- 4 files changed, 318 insertions(+), 49 deletions(-) diff --git a/ts/fixtures/lang/ends/caller.ts b/ts/fixtures/lang/ends/caller.ts index 27d76bbaf..37165f84c 100644 --- a/ts/fixtures/lang/ends/caller.ts +++ b/ts/fixtures/lang/ends/caller.ts @@ -5,13 +5,13 @@ import { op } from "./lang.ts"; export { ops, run } from "./lang.ts"; /** - * `ends::ends`: each kind of iterator through every consumer and fold and either end's - * bits, of runs empty, short, and long, whose hints are exact, loose, and lying, after none - * and a few steps through each of its methods. + * `ends::ends`: each kind of iterator, and a box of the crate's own, through every consumer + * and fold and either end's bits, of runs empty, short, and long, whose hints are exact, + * loose, and lying, after none and a few steps through each of its methods. */ const endsCases = [0x00, 0x03, 0x0f, 0x15, 0x27, 0x36, 0x2f].flatMap((shape) => [[], [0x01, 0x00], [0x0a, 0x0d, 0x03], [0x05, 0x06, 0x04, 0x0f]].flatMap((steps) => - Array.from({ length: 10 * 256 }, (_, i) => Uint8Array.of(...op("ends::ends"), i % 10, shape, Math.floor(i / 10), ...steps)), + Array.from({ length: 12 * 256 }, (_, i) => Uint8Array.of(...op("ends::ends"), i % 12, shape, Math.floor(i / 12), ...steps)), ), ); diff --git a/ts/fixtures/lang/ends/expected/ends.ts b/ts/fixtures/lang/ends/expected/ends.ts index 2915aec07..0a25ae345 100644 --- a/ts/fixtures/lang/ends/expected/ends.ts +++ b/ts/fixtures/lang/ends/expected/ends.ts @@ -36,8 +36,8 @@ export function putVec(out: rt.ByteVec, v: rt.ByteVec): void { /** * The run `data`'s first byte picks steps through with each of its other bytes, read * directly, through `&mut`, or by std's adaptors, and consumed by the third byte's pick, - * by `consumed`, or by `folded` past the fifth `kind`, with what each read and each call - * of its methods logged. + * by `consumed`, or by `folded` past the fifth `kind`, and boxed by either past the tenth, + * with what each read and each call of its methods logged. */ export function ends(kind: rt.u8, dataData: Uint8Array, dataStart: number, dataLen: number, out: rt.ByteVec): void { let over!: rt.u8 | undefined; @@ -84,30 +84,26 @@ export function ends(kind: rt.u8, dataData: Uint8Array, dataStart: number, dataL } } const k: rt.usize = rt.u8Shr(dataData[dataStart + 1], 4) as rt.usize; - const _72: [rt.u8, boolean] = [rt.u8Rem(dataData[dataStart + 1], 16), rt.u8Rem(kind, 10) >= 5]; - const pick: rt.u8 = _72[0]; - const folds: boolean = _72[1]; + const pick: rt.u8 = rt.u8Rem(dataData[dataStart + 1], 16); b4: { - const _78: rt.u8 = rt.u8Rem(kind, 5); - if (_78 === 0) { - if (!folds) { - consumed$ends_Run(run, pick, k, out); - } else { - folded$ends_Run(run, pick, k, log, out); - } - } else if (_78 === 1) { - if (!folds) { - consumed$ends_Counted({ _0: run }, pick, k, out); - } else { - folded$ends_Counted({ _0: run }, pick, k, log, out); - } - } else if (_78 === 4) { - if (!folds) { - consumed$ends_Overrides({ _0: run }, pick, k, out); - } else { - folded$ends_Overrides({ _0: run }, pick, k, log, out); - } - } else if (_78 === 2) { + const _72: rt.u8 = rt.u8Rem(kind, 12); + if (_72 === 0) { + consumed$ends_Run(run, pick, k, out); + } else if (_72 === 1) { + consumed$ends_Counted({ _0: run }, pick, k, out); + } else if (_72 === 4) { + consumed$ends_Overrides({ _0: run }, pick, k, out); + } else if (_72 === 5) { + folded$ends_Run(run, pick, k, log, out); + } else if (_72 === 6) { + folded$ends_Counted({ _0: run }, pick, k, log, out); + } else if (_72 === 9) { + folded$ends_Overrides({ _0: run }, pick, k, log, out); + } else if (_72 === 10) { + consumed$boxed_Box_ends_Overrides({ _0: run }, pick, k, out); + } else if (_72 === 11) { + folded$boxed_Box_ends_Overrides({ _0: run }, pick, k, log, out); + } else if (_72 === 2 || _72 === 7) { fuses(dataData[dataStart + 1], out); } else { let bits: rt.u8 = dataData[dataStart + 1]; @@ -131,6 +127,98 @@ export function ends(kind: rt.u8, dataData: Uint8Array, dataStart: number, dataL } } +/** `it`, consumed by std's adaptor or consumer `pick`, with `k` its count where it takes one. */ +export function consumed$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, out: rt.ByteVec): void { + let _32!: rt.u8 | undefined; + if (pick === 0) { + putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), "next")); + } else if (pick === 1) { + putVec(out, rt.iterToByteVec(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), "next")); + } else if (pick === 2) { + rt.byteVecPush(out, rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })).len() & 0xff); + } else if (pick === 3) { + rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))), (_211: [rt.usize, rt.u8]): Uint8Array => { + return Uint8Array.of(_211[0] & 0xff, _211[1]); + }, (value: Uint8Array) => rt.iterSlice(value), false, 2), "next"); + } else if (pick === 4) { + rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), k)), "next"); + } else if (pick === 5) { + rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), k)), "next"); + } else if (pick === 6) { + const _27: Overrides.Overrides = it; + const _28: rt.usize = rt.max(k, 1); + rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterFrom(_27, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _28)), "next"); + } else if (pick === 7) { + put(out, option_map$05nbzug(rt.iterRposition(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b8: rt.u8): boolean => { + return rt.u8Rem(b8, 3) === 0; + }), (i3: rt.usize): rt.u8 => { + return i3 & 0xff; + })); + } else if (pick === 8) { + const _33: rt.usize = rt.usizeRem(k, 4); + if (_33 === 0) { + const _37: Overrides.Overrides = it; + const _38: rt.usize = rt.usizeDiv(k, 4); + _32 = rt.iterRfind(rt.iterSkip(rt.iterFrom(_37, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _38), (b7: rt.u8): boolean => { + return rt.u8Rem(b7, 3) === 0; + }); + } else if (_33 === 1) { + const _42: Overrides.Overrides = it; + const _43: rt.usize = rt.usizeDiv(k, 4); + _32 = rt.iterRfind(rt.iterTake(rt.iterFrom(_42, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _43), (b6: rt.u8): boolean => { + return rt.u8Rem(b6, 3) === 0; + }); + } else if (_33 === 2) { + _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), (_2: [rt.usize, rt.u8]): boolean => { + return rt.u8Rem(rt.u8Add(_2[0] & 0xff, _2[1]), 3) === 0; + }), (_210: [rt.usize, rt.u8]): rt.u8 => { + return (_210[0] & 0xff) ^ _210[1]; + }); + } else { + const _51: Overrides.Overrides = it; + const _52: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + _32 = rt.iterRfind(rt.iterStepBy(rt.iterFrom(_51, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _52), (b3: rt.u8): boolean => { + return rt.u8Rem(b3, 3) === 0; + }); + } + put(out, _32); + } else if (pick === 9) { + put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))); + } else if (pick === 10) { + rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b2: rt.u8): rt.u8 => { + return b2 ^ 85; + })), k), "next"); + } else if (pick === 11) { + const v: rt.ByteVec = rt.byteVecFrom(Uint8Array.of(170)); + const _67: rt.Iter = rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), k); + rt.iterExtendBytes(v, _67, "next"); + putVec(out, v); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }).len() & 0xff); + } else if (pick === 12) { + const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), new rt.Range(0, 5)); + while (true) { + const _79: [rt.u8, rt.u8] | undefined = rt.iterToOption(zip.nextBack()); + if (_79 !== undefined) { + rt.iterExtendBytes(out, rt.iterSlice(Uint8Array.of(_79[0], _79[1])), undefined, true); + } else { + break; + } + } + } else if (pick === 13) { + const fused: rt.Iter = rt.iterFuse(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })); + put(out, rt.iterToOption(fused.nextBack())); + rt.byteVecPush(out, fused.len() & 0xff); + rt.iterExtendBytes(out, fused, "next"); + } else if (pick === 14) { + put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), rt.iterSlice(Uint8Array.of(7, 8)))), k)); + } else { + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, peek.len() & 0xff); + rt.iterExtendBytes(out, rt.iterRev(peek), "next"); + } +} + /** `it`, consumed by std's adaptor or consumer `pick`, with `k` its count where it takes one. */ export function consumed$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usize, out: rt.ByteVec): void { let _32!: rt.u8 | undefined; @@ -407,6 +495,179 @@ export function consumed$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, out: rt } } +/** + * `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its + * `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One + * fold panics past `k` items, with what was logged so far. + */ +export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { + let _27!: Uint8Array; + let _38!: Uint8Array; + let _53!: Uint8Array; + const k8: rt.u8 = k & 0xff; + if (pick === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a12, 3) ^ b13; + }, true)); + } else if (pick === 1) { + const _10: Overrides.Overrides = it; + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + if (!(k < 15)) { + if (!(b12 !== 2)) { + const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); + } + } + return rt.u8WrappingMul(a11, 3) ^ b12; + }; + rt.byteVecPush(out, rt.iterRfold(rt.iterFrom(_10, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 1, _11, true)); + } else if (pick === 2) { + if (!(rt.usizeRem(k, 2) === 0)) { + const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { + const _410: rt.u8 = rt.u8Rem(b11, 3); + if (_410 === 0) { + return rt.None; + } + if (_410 === 1) { + return undefined; + } + return option_or$1loyskh(a10, b11); + }, true, undefined, rt.None); + if (r === rt.None) { + _27 = Uint8Array.of(1, 0); + } else { + _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), "next"); + } else { + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + }; + put(out, rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 0, _19, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), "next"); + } + } else if (pick === 3) { + const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { + if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a8 ^ b9); + } + return rt.Err(b9); + }; + const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 0, _35); + if (r2.ok) { + _38 = Uint8Array.of(0, r2.value); + } else { + _38 = Uint8Array.of(1, r2.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + put(out, rt.iterToOption(Overrides.next$iter_Iterator(it))); + } else if (pick === 4) { + const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { + if (!(b8 > k8)) { + return rt.Ok(a7 ^ b8); + } + return rt.Err(b8); + }); + if (r3.ok) { + _53 = Uint8Array.of(0, r3.value); + } else { + _53 = Uint8Array.of(1, r3.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }).len() & 0xff); + } else if (pick === 5) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b7: rt.u8): rt.u8 => { + return b7 ^ 1; + })) & 0xff); + } else { + rt.byteVecPush(out, rt.ownedCount(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })) & 0xff); + } + } else if (pick === 6) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))); + } else { + put(out, rt.ownedLast(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))); + } + } else if (pick === 7) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.iterForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b6: rt.u8): undefined => { + rt.byteVecPush(out, b6); + }, true); + } else { + rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (a0: rt.u8): rt.u32 => { + return a0 as rt.u32; + }), rt.u32Add, 0, true) & 0xff); + } + } else if (pick === 8) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterMinByKey(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b5: rt.u8): rt.u8 => { + return rt.u8Rem(b5, 3); + }, rt.lt, true)); + } else { + put(out, rt.iterMax(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), rt.lt, true)); + } + } else if (pick === 9) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.ownedLast(rt.iterChain(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), rt.iterSlice(Uint8Array.of(7, 8))))); + } else { + rt.byteVecPush(out, rt.ownedCount(rt.iterChain(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), rt.iterSlice(Uint8Array.of(7, 8)))) & 0xff); + } + } else if (pick === 10) { + if (!(rt.usizeRem(k, 2) === 0)) { + const _118: Overrides.Overrides = it; + const _119: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterFrom(_118, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _119))); + } else { + const _113: Overrides.Overrides = it; + const _114: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterFrom(_113, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _114)) & 0xff); + } + } else if (pick === 11) { + const _121: rt.usize = rt.usizeRem(k, 4); + if (_121 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a6, 5) ^ b4; + }, true)); + } else if (_121 === 1) { + put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), rt.usizeDiv(k, 4))); + } else if (_121 === 2) { + put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))); + } else { + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a5, 5) ^ b3; + }, true)); + } + } else if (pick === 12) { + const _139: Overrides.Overrides = it; + const _140: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _140); + put(out, rt.iterToOption(skip.next())); + put(out, rt.iterToOption(skip.nextBack())); + } else if (pick === 13) { + const _150: Overrides.Overrides = it; + const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _151), "next")); + } else if (pick === 14) { + if (!(rt.usizeRem(k, 2) === 0)) { + const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, rt.ownedCount(peek) & 0xff); + } else { + put(out, rt.ownedLast(rt.iterFuse(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))); + } + } else { + const _175: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a4, 1); + })); + put(out, rt.iterLast(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }).len() & 0xff); + } +} + /** * `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its * `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One diff --git a/ts/fixtures/lang/ends/src/ends.rs b/ts/fixtures/lang/ends/src/ends.rs index 75ec51dd9..a54ce6c03 100644 --- a/ts/fixtures/lang/ends/src/ends.rs +++ b/ts/fixtures/lang/ends/src/ends.rs @@ -207,8 +207,8 @@ fn put_vec(out: &mut Vec, v: Vec) { /// The run `data`'s first byte picks steps through with each of its other bytes, read /// directly, through `&mut`, or by std's adaptors, and consumed by the third byte's pick, -/// by `consumed`, or by `folded` past the fifth `kind`, with what each read and each call -/// of its methods logged. +/// by `consumed`, or by `folded` past the fifth `kind`, and boxed by either past the tenth, +/// with what each read and each call of its methods logged. pub fn ends(kind: u8, data: &[u8], out: &mut Vec) { let [shape, consume, steps @ ..] = data else { return; @@ -238,15 +238,18 @@ pub fn ends(kind: u8, data: &[u8], out: &mut Vec) { } } let k = usize::from(consume >> 4); - let (pick, folds) = (consume % 16, kind % 10 >= 5); - match kind % 5 { - 0 if folds => folded(run, pick, k, &log, out), - 1 if folds => folded(Counted(run), pick, k, &log, out), - 4 if folds => folded(Overrides(run), pick, k, &log, out), + let pick = consume % 16; + match kind % 12 { 0 => consumed(run, pick, k, out), 1 => consumed(Counted(run), pick, k, out), 4 => consumed(Overrides(run), pick, k, out), - 2 => fuses(*consume, out), + 5 => folded(run, pick, k, &log, out), + 6 => folded(Counted(run), pick, k, &log, out), + 9 => folded(Overrides(run), pick, k, &log, out), + // std's `Iterator` for a box forwards `last` but none of the other by-value overrides. + 10 => consumed(Box::new(Overrides(run)), pick, k, out), + 11 => folded(Box::new(Overrides(run)), pick, k, &log, out), + 2 | 7 => fuses(*consume, out), _ => { // Mixed from either end, by the bits of `consume`, until they meet. let mut bits = *consume; diff --git a/ts/src/lower/iter.rs b/ts/src/lower/iter.rs index 8f8dcc9dd..dacdd502a 100644 --- a/ts/src/lower/iter.rs +++ b/ts/src/lower/iter.rs @@ -368,12 +368,13 @@ fn folds_own<'tcx>(b: &Body<'_, '_, 'tcx>, ty: Ty<'tcx>) -> bool { /// The `rt.Own` of the crate's iterator of type `ty`: each method of `OWN` but `next` that /// it has of its own, as a function of its source, and those in `BY_VALUE` only if it is -/// `owned`. `undefined` if it has none. -fn own_methods<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, owned: bool, span: Span) -> Expr { +/// `owned`, of which only `last` if `boxed`, as std's `Iterator` for a box forwards no other. +/// `undefined` if it has none. +fn own_methods<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, owned: bool, boxed: bool, span: Span) -> Expr { let none = b.t.iter_item(ty.peel_refs()).and_then(|item| b.t.none_arg(item)); let mut props = Vec::new(); for (tr, name) in &OWN[1..] { - if !owned && BY_VALUE.contains(&(tr, name)) { + if BY_VALUE.contains(&(tr, name)) && (!owned || boxed && *name != "last") { continue; } let Some(instance) = own_method(b, ty, tr, name) else { @@ -486,10 +487,12 @@ impl<'tcx> Body<'_, '_, 'tcx> { /// each, and the crate's own iterator what drops it. pub fn into_iter<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, value: Expr, span: Span) -> Option { let tcx = b.t.tcx; - let (ty, value) = peel_iter(b, ty, value); - let (ty, value) = match unbox_ref(tcx, ty) { - unboxed if unboxed != ty => (unboxed, b.t.pointee_value(ty, value)), - _ => (ty, value), + let (peeled, value) = peel_iter(b, ty, value); + // std's `Iterator` for a box forwards only some of the crate's own methods. + let boxed = peeled != ty && !peeled.is_ref(); + let (ty, value) = match unbox_ref(tcx, peeled) { + unboxed if unboxed != peeled => (unboxed, b.t.pointee_value(peeled, value)), + _ => (peeled, value), }; // A boxed slice owns its elements, as the `Vec` std's `into_iter` makes of it does, with // room for exactly them. @@ -511,7 +514,7 @@ pub fn into_iter<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, value: Expr, sp true => b.t.dropper(ty, span), false => Expr::undefined(), }; - let own = own_methods(b, ty, owned, span); + let own = own_methods(b, ty, owned, boxed, span); Expr::rt("iterFrom", tail(vec![value, next], vec![drop, own])) } // One borrowed by `&mut`, which std's adaptors may drop once it ends, but which @@ -846,8 +849,10 @@ pub fn call<'tcx>( not_bound(b, self_ty, span); let mut values = args.into_iter(); // What it reads through boxes and references, while std picks each specialization by - // `self_ty`, which a box implements none of. - let (iter_ty, recv) = peel_iter(b, self_ty, values.next()?); + // `self_ty`, which a box implements none of. `into_iter` peels `self_ty` itself, to tell + // a box apart. + let first = values.next()?; + let (iter_ty, recv) = peel_iter(b, self_ty, first.clone()); let rest: Vec = values.collect(); // What a consumer returns for `None`, after its other arguments, where that is `rt.None`. let none = b.t.none_arg(item); @@ -861,14 +866,14 @@ pub fn call<'tcx>( None => recv.member("nextBack").call(Vec::new()), }, _ => { - let recv = into_iter(b, iter_ty, recv, span)?; + let recv = into_iter(b, self_ty, first, span)?; let droppers = [b.t.dropper(item, span)].into_iter().chain(none).collect(); return Some(Expr::rt("iterNthBack", tail([vec![recv], rest].concat(), droppers))); } }; return Some(Expr::rt("iterToOption", [item].into_iter().chain(none).collect())); } - let recv = into_iter(b, iter_ty, recv, span)?; + let recv = into_iter(b, self_ty, first, span)?; // `rt.iter(recv, ...args)`, or `peekable` of a `Peekable`'s own. let method = |name: &str, args: Vec| { let of = match owner { From c064c0b3728a82f502a240610097a8bd4c1250dc Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 21:53:49 -0800 Subject: [PATCH 18/23] fix(ts): read a boxed iterator as std's box does, by next where it forwards nothing else A box of a sized iterator, owned or behind a &mut, is an rt.iterBoxed: it forwards next, size_hint, nth, last, next_back, nth_back, and len, as std's Iterator for Box does, and folds, counts, and advances by next. This replaces the last commit's filter of a crate iterator's own methods, which missed a box of an adaptor holding one. lang's ends reads a box of Overrides and of a map of it, and zips reads boxes of each zip, skipped and borrowed. Finishes quest/m3/ts-box-folds.md. Co-Authored-By: Claude Opus 5.5 --- quest/m3/README.md | 1 - quest/m3/ts-box-folds.md | 24 - ts/fixtures/lang/dyns/expected/dyns.ts | 10 +- ts/fixtures/lang/ends/caller.ts | 4 +- ts/fixtures/lang/ends/expected/ends.ts | 375 +- ts/fixtures/lang/ends/src/ends.rs | 11 +- ts/fixtures/lang/iters/expected/iters.ts | 4396 ++++++++++++++++------ ts/fixtures/lang/iters/src/iters.rs | 16 +- ts/runtime/rt/iter.ts | 57 + ts/src/lower/iter.rs | 29 +- 10 files changed, 3583 insertions(+), 1340 deletions(-) delete mode 100644 quest/m3/ts-box-folds.md diff --git a/quest/m3/README.md b/quest/m3/README.md index 5b434c786..2df7bea07 100644 --- a/quest/m3/README.md +++ b/quest/m3/README.md @@ -21,7 +21,6 @@ generic std gap is planned here even when moq never calls it. - [A trait object in a struct's last field](/quest/m3/ts-dyn-tail.md) - `Rc>` and the like translate, the last field as the object - [bytes' Chain as a Buf object](/quest/m3/ts-buf-chain.md) - `Chain::copy_to_bytes` across both halves translates, and with it a `Chain` as a `dyn Buf` - [A Buf object's size](/quest/m3/ts-dyn-buf-size.md) - a `dyn Buf` object holds only the methods some call dispatches to -- [A boxed iterator folds as std's box does](/quest/m3/ts-box-folds.md) - a `Box` reads by `next` where std's `Iterator` for `Box` forwards nothing else - [Debug of a RefCell or a Cell](/quest/m3/ts-refcell-debug.md) - `{:?}` of a `RefCell`, `Ref`, `RefMut`, and `Cell` translates as std's writes them - [Placeholders written to a crate's own fmt::Write](/quest/m3/ts-fmt-calls.md) - `write!` with placeholders into a crate's own writer translates, its `write_str` seeing each call std makes - [Waiting: drop the lang fixture's mul_add allowance](/quest/m3/ts-fma-allowance.md) - the differential fails on any `mul_add` difference again once wasm32's `fma` rounds exactly diff --git a/quest/m3/ts-box-folds.md b/quest/m3/ts-box-folds.md deleted file mode 100644 index 9d2bd5994..000000000 --- a/quest/m3/ts-box-folds.md +++ /dev/null @@ -1,24 +0,0 @@ -# [S] A boxed iterator folds as std's box does - -## Goal - -[rust2-ts](/ts/README.md) reads a `Box` of a sized iterator, owned or behind a `&mut`, -as std's `Iterator` for `Box` does: by `I`'s own `next`, `size_hint`, `nth`, `last`, -`next_back`, `nth_back`, `len`, and `is_empty`, and by `next` or `next_back` for every -other consumer, proven by the lang fixture's differential tests against native Rust. - -## Plan - -Found on 2026-11-03 probing what [#437](https://github.com/moq-dev/rust2/pull/437) left: -the translation erases the box and folds what it holds by its own `fold`, where std's -defaults read the box by `next`. A boxed `Chain` of mapped `vec::IntoIter`s matches native -across `count`, `fold`, `for_each`, `find`, `position`, `max_by_key`, `rev().fold`, and -`skip(1).count()`, since `Chain`'s folds read and drop in `next`'s order. A box of a `skip` -of a zip std reads by index does not: `Box::new(a.map(f).zip(b.map(g)).skip(1)).count()` -makes and drops the skipped pair whole, as `Skip`'s fold does, where native skips it a -side at a time through the zip's `nth`. - -`rt.iterDyn` already reads a `dyn Iterator` this way, so a box of a sized iterator can be -one too, with `last` forwarded to the iterator's own, as std's `BoxIter` specializes it. - -Public API: the translator's output. diff --git a/ts/fixtures/lang/dyns/expected/dyns.ts b/ts/fixtures/lang/dyns/expected/dyns.ts index 6cd55fe0f..6b66d3fa0 100644 --- a/ts/fixtures/lang/dyns/expected/dyns.ts +++ b/ts/fixtures/lang/dyns/expected/dyns.ts @@ -872,7 +872,7 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { const args12: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(sum, f)]; put(out, rt.fmtFormat([args12[0], " "])); dropped(out); - const nested: rt.Iter = rt.iterDyn(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(a, 8)), Countdown.next$iter_Iterator, rt.drop)); + const nested: rt.Iter = rt.iterDyn(rt.iterBoxed(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(a, 8)), Countdown.next$iter_Iterator, rt.drop))); const inner: Countdown.Countdown = new Countdown.Countdown(rt.u8Rem(b, 8)); const first: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterFrom(inner, Countdown.next$iter_Iterator)).next()); const second: rt.u8 | undefined = rt.iterToOption(Countdown.next$iter_Iterator(inner)); @@ -880,12 +880,12 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { const third: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterBorrow(erased)).next()); const doubled: Countdown.Countdown = new Countdown.Countdown(rt.u8Rem(a, 8)); const fourth: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterFrom(doubled, Countdown.next$iter_Iterator)).next()); - const mapped: rt.ByteVec = rt.iterToByteVec(rt.iterMap(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(b, 8)), Countdown.next$iter_Iterator, rt.drop), (x3: rt.u8): rt.u8 => { + const mapped: rt.ByteVec = rt.iterToByteVec(rt.iterMap(rt.iterBoxed(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(b, 8)), Countdown.next$iter_Iterator, rt.drop)), (x3: rt.u8): rt.u8 => { return x3 ^ 1; }), "next"); const _233: rt.ByteVec = rt.iterToByteVec(nested, "next"); const _235: rt.usize = rt.ownedCount(erased); - const _238: rt.usize = rt.ownedCount(rt.iterFrom(doubled, Countdown.next$iter_Iterator, rt.drop)); + const _238: rt.usize = rt.ownedCount(rt.iterBoxed(rt.iterFrom(doubled, Countdown.next$iter_Iterator, rt.drop))); const args14: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(rt.byteVecView(_233), f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(first, f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(second, f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(third, f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(fourth, f, rt.u8Debug), (f: rt.Formatter) => rt.fmtList(rt.byteVecView(mapped), f, rt.u8Debug), (f: rt.Formatter) => rt.usizeDisplay(_235, f), (f: rt.Formatter) => rt.usizeDisplay(_238, f)]; put(out, rt.fmtFormat([args14[0], " ", args14[1], " ", args14[2], " ", args14[3], " ", args14[4], " ", args14[5], " ", args14[6], " ", args14[7], " "])); dropped(out); @@ -902,7 +902,7 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { const layered: rt.Place> = rt.place(() => lent2, (value5) => lent2 = value5); const fifth: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterFrom(layered.v.v, Countdown.next$iter_Iterator)).next()); const sixth: rt.u8 | undefined = rt.iterToOption(Countdown.next$iter_Iterator(layered.v.v)); - const _301: rt.usize = rt.ownedCount(rt.iterFrom(held, Countdown.next$iter_Iterator, rt.drop)); + const _301: rt.usize = rt.ownedCount(rt.iterBoxed(rt.iterFrom(held, Countdown.next$iter_Iterator, rt.drop))); const args16: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(hints, f, (value: [rt.usize, rt.usize | undefined], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.usizeDebug(value[0], f), (f: rt.Formatter) => rt.fmtOption(value[1], f, rt.usizeDebug)], f)), (f: rt.Formatter) => rt.fmtOption(fifth, f, rt.u8Debug), (f: rt.Formatter) => rt.fmtOption(sixth, f, rt.u8Debug), (f: rt.Formatter) => rt.usizeDisplay(_301, f)]; put(out, rt.fmtFormat([args16[0], " ", args16[1], " ", args16[2], " ", args16[3], " "])); dropped(out); @@ -917,7 +917,7 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { return x4; }), new rt.Range(0, rt.u8Rem(b, 4)), "len"); }; - const owned: [rt.u8, rt.u8][] = rt.iterToArray(zipped(), "next", 2); + const owned: [rt.u8, rt.u8][] = rt.iterToArray(rt.iterBoxed(zipped()), "next", 2); const lent3: [rt.u8, rt.u8][] = rt.iterToArray(rt.iterBorrow(zipped()), "next", 2); const _339: rt.RefCell = rt.refCellBorrow(seen2); const args18: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(owned, f, (value: [rt.u8, rt.u8], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u8Debug(value[0], f), (f: rt.Formatter) => rt.u8Debug(value[1], f)], f)), (f: rt.Formatter) => rt.fmtList(lent3, f, (value: [rt.u8, rt.u8], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u8Debug(value[0], f), (f: rt.Formatter) => rt.u8Debug(value[1], f)], f)), (f: rt.Formatter) => rt.fmtList(rt.byteVecView(_339.value), f, rt.u8Debug)]; diff --git a/ts/fixtures/lang/ends/caller.ts b/ts/fixtures/lang/ends/caller.ts index 37165f84c..f827b9cf9 100644 --- a/ts/fixtures/lang/ends/caller.ts +++ b/ts/fixtures/lang/ends/caller.ts @@ -5,13 +5,13 @@ import { op } from "./lang.ts"; export { ops, run } from "./lang.ts"; /** - * `ends::ends`: each kind of iterator, and a box of the crate's own, through every consumer + * `ends::ends`: each kind of iterator, and boxes of the crate's own, through every consumer * and fold and either end's bits, of runs empty, short, and long, whose hints are exact, * loose, and lying, after none and a few steps through each of its methods. */ const endsCases = [0x00, 0x03, 0x0f, 0x15, 0x27, 0x36, 0x2f].flatMap((shape) => [[], [0x01, 0x00], [0x0a, 0x0d, 0x03], [0x05, 0x06, 0x04, 0x0f]].flatMap((steps) => - Array.from({ length: 12 * 256 }, (_, i) => Uint8Array.of(...op("ends::ends"), i % 12, shape, Math.floor(i / 12), ...steps)), + Array.from({ length: 14 * 256 }, (_, i) => Uint8Array.of(...op("ends::ends"), i % 14, shape, Math.floor(i / 14), ...steps)), ), ); diff --git a/ts/fixtures/lang/ends/expected/ends.ts b/ts/fixtures/lang/ends/expected/ends.ts index 0a25ae345..03f47d313 100644 --- a/ts/fixtures/lang/ends/expected/ends.ts +++ b/ts/fixtures/lang/ends/expected/ends.ts @@ -36,8 +36,8 @@ export function putVec(out: rt.ByteVec, v: rt.ByteVec): void { /** * The run `data`'s first byte picks steps through with each of its other bytes, read * directly, through `&mut`, or by std's adaptors, and consumed by the third byte's pick, - * by `consumed`, or by `folded` past the fifth `kind`, and boxed by either past the tenth, - * with what each read and each call of its methods logged. + * by `consumed`, or by `folded` past the fifth `kind`, and boxed, or mapped and boxed, by + * either past the tenth, with what each read and each call of its methods logged. */ export function ends(kind: rt.u8, dataData: Uint8Array, dataStart: number, dataLen: number, out: rt.ByteVec): void { let over!: rt.u8 | undefined; @@ -86,7 +86,7 @@ export function ends(kind: rt.u8, dataData: Uint8Array, dataStart: number, dataL const k: rt.usize = rt.u8Shr(dataData[dataStart + 1], 4) as rt.usize; const pick: rt.u8 = rt.u8Rem(dataData[dataStart + 1], 16); b4: { - const _72: rt.u8 = rt.u8Rem(kind, 12); + const _72: rt.u8 = rt.u8Rem(kind, 14); if (_72 === 0) { consumed$ends_Run(run, pick, k, out); } else if (_72 === 1) { @@ -103,6 +103,14 @@ export function ends(kind: rt.u8, dataData: Uint8Array, dataStart: number, dataL consumed$boxed_Box_ends_Overrides({ _0: run }, pick, k, out); } else if (_72 === 11) { folded$boxed_Box_ends_Overrides({ _0: run }, pick, k, log, out); + } else if (_72 === 12) { + consumed$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure0(rt.iterMap(rt.iterFrom({ _0: run }, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b2: rt.u8): rt.u8 => { + return b2; + }), pick, k, out); + } else if (_72 === 13) { + folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(rt.iterMap(rt.iterFrom({ _0: run }, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b: rt.u8): rt.u8 => { + return b; + }), pick, k, log, out); } else if (_72 === 2 || _72 === 7) { fuses(dataData[dataStart + 1], out); } else { @@ -131,25 +139,25 @@ export function ends(kind: rt.u8, dataData: Uint8Array, dataStart: number, dataL export function consumed$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, out: rt.ByteVec): void { let _32!: rt.u8 | undefined; if (pick === 0) { - putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), "next")); + putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), "next")); } else if (pick === 1) { - putVec(out, rt.iterToByteVec(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), "next")); + putVec(out, rt.iterToByteVec(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next")); } else if (pick === 2) { - rt.byteVecPush(out, rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })).len() & 0xff); + rt.byteVecPush(out, rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))).len() & 0xff); } else if (pick === 3) { - rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))), (_211: [rt.usize, rt.u8]): Uint8Array => { + rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))), (_211: [rt.usize, rt.u8]): Uint8Array => { return Uint8Array.of(_211[0] & 0xff, _211[1]); }, (value: Uint8Array) => rt.iterSlice(value), false, 2), "next"); } else if (pick === 4) { - rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), k)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), k)), "next"); } else if (pick === 5) { - rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), k)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), k)), "next"); } else if (pick === 6) { const _27: Overrides.Overrides = it; const _28: rt.usize = rt.max(k, 1); - rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterFrom(_27, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _28)), "next"); + rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterBoxed(rt.iterFrom(_27, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _28)), "next"); } else if (pick === 7) { - put(out, option_map$05nbzug(rt.iterRposition(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b8: rt.u8): boolean => { + put(out, option_map$05nbzug(rt.iterRposition(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b8: rt.u8): boolean => { return rt.u8Rem(b8, 3) === 0; }), (i3: rt.usize): rt.u8 => { return i3 & 0xff; @@ -159,17 +167,17 @@ export function consumed$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: if (_33 === 0) { const _37: Overrides.Overrides = it; const _38: rt.usize = rt.usizeDiv(k, 4); - _32 = rt.iterRfind(rt.iterSkip(rt.iterFrom(_37, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _38), (b7: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterSkip(rt.iterBoxed(rt.iterFrom(_37, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _38), (b7: rt.u8): boolean => { return rt.u8Rem(b7, 3) === 0; }); } else if (_33 === 1) { const _42: Overrides.Overrides = it; const _43: rt.usize = rt.usizeDiv(k, 4); - _32 = rt.iterRfind(rt.iterTake(rt.iterFrom(_42, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _43), (b6: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterTake(rt.iterBoxed(rt.iterFrom(_42, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _43), (b6: rt.u8): boolean => { return rt.u8Rem(b6, 3) === 0; }); } else if (_33 === 2) { - _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), (_2: [rt.usize, rt.u8]): boolean => { + _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), (_2: [rt.usize, rt.u8]): boolean => { return rt.u8Rem(rt.u8Add(_2[0] & 0xff, _2[1]), 3) === 0; }), (_210: [rt.usize, rt.u8]): rt.u8 => { return (_210[0] & 0xff) ^ _210[1]; @@ -177,15 +185,15 @@ export function consumed$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: } else { const _51: Overrides.Overrides = it; const _52: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - _32 = rt.iterRfind(rt.iterStepBy(rt.iterFrom(_51, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _52), (b3: rt.u8): boolean => { + _32 = rt.iterRfind(rt.iterStepBy(rt.iterBoxed(rt.iterFrom(_51, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _52), (b3: rt.u8): boolean => { return rt.u8Rem(b3, 3) === 0; }); } put(out, _32); } else if (pick === 9) { - put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))); + put(out, rt.ownedLast(rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))))); } else if (pick === 10) { - rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b2: rt.u8): rt.u8 => { + rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b2: rt.u8): rt.u8 => { return b2 ^ 85; })), k), "next"); } else if (pick === 11) { @@ -193,9 +201,9 @@ export function consumed$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: const _67: rt.Iter = rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), k); rt.iterExtendBytes(v, _67, "next"); putVec(out, v); - rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }).len() & 0xff); + rt.byteVecPush(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); } else if (pick === 12) { - const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), new rt.Range(0, 5)); + const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), new rt.Range(0, 5)); while (true) { const _79: [rt.u8, rt.u8] | undefined = rt.iterToOption(zip.nextBack()); if (_79 !== undefined) { @@ -205,14 +213,106 @@ export function consumed$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: } } } else if (pick === 13) { - const fused: rt.Iter = rt.iterFuse(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })); + const fused: rt.Iter = rt.iterFuse(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))); put(out, rt.iterToOption(fused.nextBack())); rt.byteVecPush(out, fused.len() & 0xff); rt.iterExtendBytes(out, fused, "next"); } else if (pick === 14) { - put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), rt.iterSlice(Uint8Array.of(7, 8)))), k)); + put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.iterSlice(Uint8Array.of(7, 8)))), k)); } else { - const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })); + const peek: rt.Peekable = rt.iterPeekable(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, peek.len() & 0xff); + rt.iterExtendBytes(out, rt.iterRev(peek), "next"); + } +} + +/** `it`, consumed by std's adaptor or consumer `pick`, with `k` its count where it takes one. */ +export function consumed$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure0(it: rt.Iter, pick: rt.u8, k: rt.usize, out: rt.ByteVec): void { + let _32!: rt.u8 | undefined; + if (pick === 0) { + putVec(out, rt.iterToByteVec(rt.iterRev(rt.iterBoxed(it)), "next")); + } else if (pick === 1) { + putVec(out, rt.iterToByteVec(rt.iterBoxed(it), "next")); + } else if (pick === 2) { + rt.byteVecPush(out, rt.iterRev(rt.iterBoxed(it)).len() & 0xff); + } else if (pick === 3) { + rt.iterExtendBytes(out, rt.iterFlatMap(rt.iterRev(rt.iterEnumerate(rt.iterBoxed(it))), (_211: [rt.usize, rt.u8]): Uint8Array => { + return Uint8Array.of(_211[0] & 0xff, _211[1]); + }, (value: Uint8Array) => rt.iterSlice(value), false, 2), "next"); + } else if (pick === 4) { + rt.iterExtendBytes(out, rt.iterRev(rt.iterSkip(rt.iterBoxed(it), k)), "next"); + } else if (pick === 5) { + rt.iterExtendBytes(out, rt.iterRev(rt.iterTake(rt.iterBoxed(it), k)), "next"); + } else if (pick === 6) { + const _27: rt.Iter = it; + const _28: rt.usize = rt.max(k, 1); + rt.iterExtendBytes(out, rt.iterRev(rt.iterStepBy(rt.iterBoxed(_27), _28)), "next"); + } else if (pick === 7) { + put(out, option_map$05nbzug(rt.iterRposition(rt.iterBoxed(it), (b8: rt.u8): boolean => { + return rt.u8Rem(b8, 3) === 0; + }), (i3: rt.usize): rt.u8 => { + return i3 & 0xff; + })); + } else if (pick === 8) { + const _33: rt.usize = rt.usizeRem(k, 4); + if (_33 === 0) { + const _37: rt.Iter = it; + const _38: rt.usize = rt.usizeDiv(k, 4); + _32 = rt.iterRfind(rt.iterSkip(rt.iterBoxed(_37), _38), (b7: rt.u8): boolean => { + return rt.u8Rem(b7, 3) === 0; + }); + } else if (_33 === 1) { + const _42: rt.Iter = it; + const _43: rt.usize = rt.usizeDiv(k, 4); + _32 = rt.iterRfind(rt.iterTake(rt.iterBoxed(_42), _43), (b6: rt.u8): boolean => { + return rt.u8Rem(b6, 3) === 0; + }); + } else if (_33 === 2) { + _32 = option_map$1sj2ls1(rt.iterRfind(rt.iterEnumerate(rt.iterBoxed(it)), (_2: [rt.usize, rt.u8]): boolean => { + return rt.u8Rem(rt.u8Add(_2[0] & 0xff, _2[1]), 3) === 0; + }), (_210: [rt.usize, rt.u8]): rt.u8 => { + return (_210[0] & 0xff) ^ _210[1]; + }); + } else { + const _51: rt.Iter = it; + const _52: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + _32 = rt.iterRfind(rt.iterStepBy(rt.iterBoxed(_51), _52), (b3: rt.u8): boolean => { + return rt.u8Rem(b3, 3) === 0; + }); + } + put(out, _32); + } else if (pick === 9) { + put(out, rt.ownedLast(rt.iterRev(rt.iterBoxed(it)))); + } else if (pick === 10) { + rt.iterExtendBytes(out, rt.iterTake(rt.iterRev(rt.iterMap(rt.iterBoxed(it), (b2: rt.u8): rt.u8 => { + return b2 ^ 85; + })), k), "next"); + } else if (pick === 11) { + const v: rt.ByteVec = rt.byteVecFrom(Uint8Array.of(170)); + const _67: rt.Iter = rt.iterTake(rt.iterBorrow(rt.iterBoxed(it)), k); + rt.iterExtendBytes(v, _67, "next"); + putVec(out, v); + rt.byteVecPush(out, rt.iterBoxed(it).len() & 0xff); + } else if (pick === 12) { + const zip: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterBoxed(it), new rt.Range(0, 5)); + while (true) { + const _79: [rt.u8, rt.u8] | undefined = rt.iterToOption(zip.nextBack()); + if (_79 !== undefined) { + rt.iterExtendBytes(out, rt.iterSlice(Uint8Array.of(_79[0], _79[1])), undefined, true); + } else { + break; + } + } + } else if (pick === 13) { + const fused: rt.Iter = rt.iterFuse(rt.iterBoxed(it)); + put(out, rt.iterToOption(fused.nextBack())); + rt.byteVecPush(out, fused.len() & 0xff); + rt.iterExtendBytes(out, fused, "next"); + } else if (pick === 14) { + put(out, rt.iterNth(rt.iterRev(rt.iterChain(rt.iterBoxed(it), rt.iterSlice(Uint8Array.of(7, 8)))), k)); + } else { + const peek: rt.Peekable = rt.iterPeekable(rt.iterBoxed(it)); put(out, rt.peekablePeek(peek)); rt.byteVecPush(out, peek.len() & 0xff); rt.iterExtendBytes(out, rt.iterRev(peek), "next"); @@ -506,7 +606,7 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r let _53!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { return rt.u8WrappingMul(a12, 3) ^ b13; }, true)); } else if (pick === 1) { @@ -521,10 +621,10 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r } return rt.u8WrappingMul(a11, 3) ^ b12; }; - rt.byteVecPush(out, rt.iterRfold(rt.iterFrom(_10, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 1, _11, true)); + rt.byteVecPush(out, rt.iterRfold(rt.iterBoxed(rt.iterFrom(_10, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, _11, true)); } else if (pick === 2) { if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { + const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { const _410: rt.u8 = rt.u8Rem(b11, 3); if (_410 === 0) { return rt.None; @@ -540,13 +640,13 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); } rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), "next"); + rt.iterExtendBytes(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); } else { const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { return thenSome$0d5am30(b10 !== k8, a9 ^ b10); }; - put(out, rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 0, _19, true)); - rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), "next"); + put(out, rt.iterTryRfold(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _19, true)); + rt.iterExtendBytes(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); } } else if (pick === 3) { const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { @@ -555,7 +655,7 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r } return rt.Err(b9); }; - const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 0, _35); + const r2: rt.Result = rt.iterTryRfold(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _35); if (r2.ok) { _38 = Uint8Array.of(0, r2.value); } else { @@ -576,87 +676,87 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r _53 = Uint8Array.of(1, r3.error); } rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }).len() & 0xff); + rt.byteVecPush(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b7: rt.u8): rt.u8 => { + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b7: rt.u8): rt.u8 => { return b7 ^ 1; })) & 0xff); } else { - rt.byteVecPush(out, rt.ownedCount(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })) & 0xff); + rt.byteVecPush(out, rt.ownedCount(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))) & 0xff); } } else if (pick === 6) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))); + put(out, rt.ownedLast(rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))))); } else { - put(out, rt.ownedLast(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))); + put(out, rt.ownedLast(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); } } else if (pick === 7) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b6: rt.u8): undefined => { + rt.iterForEach(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b6: rt.u8): undefined => { rt.byteVecPush(out, b6); }, true); } else { - rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (a0: rt.u8): rt.u32 => { + rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; }), rt.u32Add, 0, true) & 0xff); } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b5: rt.u8): rt.u8 => { + put(out, rt.iterMinByKey(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b5: rt.u8): rt.u8 => { return rt.u8Rem(b5, 3); }, rt.lt, true)); } else { - put(out, rt.iterMax(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), rt.lt, true)); + put(out, rt.iterMax(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.lt, true)); } } else if (pick === 9) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.ownedLast(rt.iterChain(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), rt.iterSlice(Uint8Array.of(7, 8))))); + put(out, rt.ownedLast(rt.iterChain(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.iterSlice(Uint8Array.of(7, 8))))); } else { - rt.byteVecPush(out, rt.ownedCount(rt.iterChain(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), rt.iterSlice(Uint8Array.of(7, 8)))) & 0xff); + rt.byteVecPush(out, rt.ownedCount(rt.iterChain(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.iterSlice(Uint8Array.of(7, 8)))) & 0xff); } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { const _118: Overrides.Overrides = it; const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.ownedLast(rt.iterSkip(rt.iterFrom(_118, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _119))); + put(out, rt.ownedLast(rt.iterSkip(rt.iterBoxed(rt.iterFrom(_118, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _119))); } else { const _113: Overrides.Overrides = it; const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterFrom(_113, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _114)) & 0xff); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterBoxed(rt.iterFrom(_113, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _114)) & 0xff); } } else if (pick === 11) { const _121: rt.usize = rt.usizeRem(k, 4); if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { return rt.u8WrappingMul(a6, 5) ^ b4; }, true)); } else if (_121 === 1) { - put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), rt.usizeDiv(k, 4))); + put(out, rt.iterNth(rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), rt.usizeDiv(k, 4))); } else if (_121 === 2) { - put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))); + put(out, rt.ownedLast(rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { return rt.u8WrappingMul(a5, 5) ^ b3; }, true)); } } else if (pick === 12) { const _139: Overrides.Overrides = it; const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _140); + const skip: rt.Iter = rt.iterSkip(rt.iterBoxed(rt.iterFrom(_139, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _140); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { const _150: Overrides.Overrides = it; const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _151), "next")); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterBoxed(rt.iterFrom(_150, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _151), "next")); } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { - const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })); + const peek: rt.Peekable = rt.iterPeekable(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))); put(out, rt.peekablePeek(peek)); rt.byteVecPush(out, rt.ownedCount(peek) & 0xff); } else { - put(out, rt.ownedLast(rt.iterFuse(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))); + put(out, rt.ownedLast(rt.iterFuse(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))))); } } else { const _175: rt.usize = rt.usizeDiv(k, 2); @@ -664,7 +764,180 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r return rt.u8Add(a4, 1); })); put(out, rt.iterLast(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))); - rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }).len() & 0xff); + rt.byteVecPush(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); + } +} + +/** + * `it`, consumed by std's fold, or a consumer or adaptor that folds it or reads it by its + * `nth`, `count`, or `last`, picked by `pick`, with `k` its count where it takes one. One + * fold panics past `k` items, with what was logged so far. + */ +export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: rt.Iter, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { + let _27!: Uint8Array; + let _38!: Uint8Array; + let _53!: Uint8Array; + const k8: rt.u8 = k & 0xff; + if (pick === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(it), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a12, 3) ^ b13; + }, true)); + } else if (pick === 1) { + const _10: rt.Iter = it; + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + if (!(k < 15)) { + if (!(b12 !== 2)) { + const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); + } + } + return rt.u8WrappingMul(a11, 3) ^ b12; + }; + rt.byteVecPush(out, rt.iterRfold(rt.iterBoxed(_10), 1, _11, true)); + } else if (pick === 2) { + if (!(rt.usizeRem(k, 2) === 0)) { + const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterBoxed(it), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { + const _410: rt.u8 = rt.u8Rem(b11, 3); + if (_410 === 0) { + return rt.None; + } + if (_410 === 1) { + return undefined; + } + return option_or$1loyskh(a10, b11); + }, true, undefined, rt.None); + if (r === rt.None) { + _27 = Uint8Array.of(1, 0); + } else { + _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); + rt.iterExtendBytes(out, rt.iterBoxed(it), "next"); + } else { + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + }; + put(out, rt.iterTryRfold(rt.iterBoxed(it), 0, _19, true)); + rt.iterExtendBytes(out, rt.iterBoxed(it), "next"); + } + } else if (pick === 3) { + const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { + if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a8 ^ b9); + } + return rt.Err(b9); + }; + const r2: rt.Result = rt.iterTryRfold(rt.iterBoxed(it), 0, _35); + if (r2.ok) { + _38 = Uint8Array.of(0, r2.value); + } else { + _38 = Uint8Array.of(1, r2.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + put(out, rt.iterToOption(it.next())); + } else if (pick === 4) { + const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterBorrow(rt.iterBoxed(it))), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { + if (!(b8 > k8)) { + return rt.Ok(a7 ^ b8); + } + return rt.Err(b8); + }); + if (r3.ok) { + _53 = Uint8Array.of(0, r3.value); + } else { + _53 = Uint8Array.of(1, r3.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); + rt.byteVecPush(out, rt.iterBoxed(it).len() & 0xff); + } else if (pick === 5) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterBoxed(it), (b7: rt.u8): rt.u8 => { + return b7 ^ 1; + })) & 0xff); + } else { + rt.byteVecPush(out, rt.ownedCount(rt.iterBoxed(it)) & 0xff); + } + } else if (pick === 6) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.ownedLast(rt.iterRev(rt.iterBoxed(it)))); + } else { + put(out, rt.ownedLast(rt.iterBoxed(it))); + } + } else if (pick === 7) { + if (!(rt.usizeRem(k, 2) === 0)) { + rt.iterForEach(rt.iterBoxed(it), (b6: rt.u8): undefined => { + rt.byteVecPush(out, b6); + }, true); + } else { + rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterBoxed(it), (a0: rt.u8): rt.u32 => { + return a0 as rt.u32; + }), rt.u32Add, 0, true) & 0xff); + } + } else if (pick === 8) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.iterMinByKey(rt.iterBoxed(it), (b5: rt.u8): rt.u8 => { + return rt.u8Rem(b5, 3); + }, rt.lt, true)); + } else { + put(out, rt.iterMax(rt.iterBoxed(it), rt.lt, true)); + } + } else if (pick === 9) { + if (!(rt.usizeRem(k, 2) === 0)) { + put(out, rt.ownedLast(rt.iterChain(rt.iterBoxed(it), rt.iterSlice(Uint8Array.of(7, 8))))); + } else { + rt.byteVecPush(out, rt.ownedCount(rt.iterChain(rt.iterBoxed(it), rt.iterSlice(Uint8Array.of(7, 8)))) & 0xff); + } + } else if (pick === 10) { + if (!(rt.usizeRem(k, 2) === 0)) { + const _118: rt.Iter = it; + const _119: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterBoxed(_118), _119))); + } else { + const _113: rt.Iter = it; + const _114: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterBoxed(_113), _114)) & 0xff); + } + } else if (pick === 11) { + const _121: rt.usize = rt.usizeRem(k, 4); + if (_121 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterBoxed(it)), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a6, 5) ^ b4; + }, true)); + } else if (_121 === 1) { + put(out, rt.iterNth(rt.iterRev(rt.iterBoxed(it)), rt.usizeDiv(k, 4))); + } else if (_121 === 2) { + put(out, rt.ownedLast(rt.iterRev(rt.iterBoxed(it)))); + } else { + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterBoxed(it)), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a5, 5) ^ b3; + }, true)); + } + } else if (pick === 12) { + const _139: rt.Iter = it; + const _140: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterBoxed(_139), _140); + put(out, rt.iterToOption(skip.next())); + put(out, rt.iterToOption(skip.nextBack())); + } else if (pick === 13) { + const _150: rt.Iter = it; + const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterBoxed(_150), _151), "next")); + } else if (pick === 14) { + if (!(rt.usizeRem(k, 2) === 0)) { + const peek: rt.Peekable = rt.iterPeekable(rt.iterBoxed(it)); + put(out, rt.peekablePeek(peek)); + rt.byteVecPush(out, rt.ownedCount(peek) & 0xff); + } else { + put(out, rt.ownedLast(rt.iterFuse(rt.iterBoxed(it)))); + } + } else { + const _175: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterBorrow(rt.iterBoxed(it)), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a4, 1); + })); + put(out, rt.iterLast(rt.iterBorrow(rt.iterBoxed(it)))); + rt.byteVecPush(out, rt.iterBoxed(it).len() & 0xff); } } diff --git a/ts/fixtures/lang/ends/src/ends.rs b/ts/fixtures/lang/ends/src/ends.rs index a54ce6c03..15416ae6a 100644 --- a/ts/fixtures/lang/ends/src/ends.rs +++ b/ts/fixtures/lang/ends/src/ends.rs @@ -207,8 +207,8 @@ fn put_vec(out: &mut Vec, v: Vec) { /// The run `data`'s first byte picks steps through with each of its other bytes, read /// directly, through `&mut`, or by std's adaptors, and consumed by the third byte's pick, -/// by `consumed`, or by `folded` past the fifth `kind`, and boxed by either past the tenth, -/// with what each read and each call of its methods logged. +/// by `consumed`, or by `folded` past the fifth `kind`, and boxed, or mapped and boxed, by +/// either past the tenth, with what each read and each call of its methods logged. pub fn ends(kind: u8, data: &[u8], out: &mut Vec) { let [shape, consume, steps @ ..] = data else { return; @@ -239,16 +239,19 @@ pub fn ends(kind: u8, data: &[u8], out: &mut Vec) { } let k = usize::from(consume >> 4); let pick = consume % 16; - match kind % 12 { + match kind % 14 { 0 => consumed(run, pick, k, out), 1 => consumed(Counted(run), pick, k, out), 4 => consumed(Overrides(run), pick, k, out), 5 => folded(run, pick, k, &log, out), 6 => folded(Counted(run), pick, k, &log, out), 9 => folded(Overrides(run), pick, k, &log, out), - // std's `Iterator` for a box forwards `last` but none of the other by-value overrides. + // std's `Iterator` for a box forwards `last` but none of the other by-value overrides, + // including those of what an adaptor in it holds. 10 => consumed(Box::new(Overrides(run)), pick, k, out), 11 => folded(Box::new(Overrides(run)), pick, k, &log, out), + 12 => consumed(Box::new(Overrides(run).map(|b| b)), pick, k, out), + 13 => folded(Box::new(Overrides(run).map(|b| b)), pick, k, &log, out), 2 | 7 => fuses(*consume, out), _ => { // Mixed from either end, by the bits of `consume`, until they meet. diff --git a/ts/fixtures/lang/iters/expected/iters.ts b/ts/fixtures/lang/iters/expected/iters.ts index b948243bf..5426fdf4b 100644 --- a/ts/fixtures/lang/iters/expected/iters.ts +++ b/ts/fixtures/lang/iters/expected/iters.ts @@ -1917,30 +1917,115 @@ export function at$u8(items: rt.ByteSlice, i: rt.usize): rt.u8 | undefined { * A zip of each kind std specializes, of sides whose closures log each item they make, and * either side shorter or empty: by index (`TrustedRandomAccess`), folded by its size hint * (`TrustedLen`, or only `TrustedRandomAccessNoCoerce`), and by `next` (neither), read by - * each of std's consumers, and through adaptors that fold it or read it by `try_fold`. + * each of std's consumers, through adaptors that fold it or read it by `try_fold`, and + * through a box. */ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { let _18!: [rt.ByteSlice, rt.ByteSlice]; - const _40: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2: [rt.u8, rt.u8]): rt.u8 => { + const _45: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2: [rt.u8, rt.u8]): rt.u8 => { return _2[0] ^ _2[1]; }; - const _201: (a0: [rt.u8, rt.u8]) => rt.u8 = (_23: [rt.u8, rt.u8]): rt.u8 => { + const _94: (a0: [rt.u8, rt.u8]) => rt.u8 = (_23: [rt.u8, rt.u8]): rt.u8 => { return _23[0] ^ _23[1]; }; - const _380: (a0: [rt.u8, rt.u8]) => rt.u8 = (_25: [rt.u8, rt.u8]): rt.u8 => { + const _144: (a0: [rt.u8, rt.u8]) => rt.u8 = (_25: [rt.u8, rt.u8]): rt.u8 => { return _25[0] ^ _25[1]; }; - const _573: (a0: [rt.u8, rt.u8]) => rt.u8 = (_27: [rt.u8, rt.u8]): rt.u8 => { + const _194: (a0: [rt.u8, rt.u8]) => rt.u8 = (_27: [rt.u8, rt.u8]): rt.u8 => { return _27[0] ^ _27[1]; }; - const _750: (a0: [rt.u8, rt.u8]) => rt.u8 = (_210: [rt.u8, rt.u8]): rt.u8 => { - return _210[0] ^ _210[1]; + const _240: (a0: [rt.u8, rt.u8]) => rt.u8 = (_211: [rt.u8, rt.u8]): rt.u8 => { + return _211[0] ^ _211[1]; + }; + const _401: (a0: [rt.u8, rt.u8]) => rt.u8 = (_214: [rt.u8, rt.u8]): rt.u8 => { + return _214[0] ^ _214[1]; + }; + const _452: (a0: [rt.u8, rt.u8]) => rt.u8 = (_216: [rt.u8, rt.u8]): rt.u8 => { + return _216[0] ^ _216[1]; + }; + const _504: (a0: [rt.u8, rt.u8]) => rt.u8 = (_219: [rt.u8, rt.u8]): rt.u8 => { + return _219[0] ^ _219[1]; + }; + const _556: (a0: [rt.u8, rt.u8]) => rt.u8 = (_222: [rt.u8, rt.u8]): rt.u8 => { + return _222[0] ^ _222[1]; + }; + const _604: (a0: [rt.u8, rt.u8]) => rt.u8 = (_225: [rt.u8, rt.u8]): rt.u8 => { + return _225[0] ^ _225[1]; + }; + const _783: (a0: [rt.u8, rt.u8]) => rt.u8 = (_228: [rt.u8, rt.u8]): rt.u8 => { + return _228[0] ^ _228[1]; + }; + const _836: (a0: [rt.u8, rt.u8]) => rt.u8 = (_235: [rt.u8, rt.u8]): rt.u8 => { + return _235[0] ^ _235[1]; + }; + const _890: (a0: [rt.u8, rt.u8]) => rt.u8 = (_239: [rt.u8, rt.u8]): rt.u8 => { + return _239[0] ^ _239[1]; + }; + const _944: (a0: [rt.u8, rt.u8]) => rt.u8 = (_249: [rt.u8, rt.u8]): rt.u8 => { + return _249[0] ^ _249[1]; + }; + const _994: (a0: [rt.u8, rt.u8]) => rt.u8 = (_257: [rt.u8, rt.u8]): rt.u8 => { + return _257[0] ^ _257[1]; + }; + const _1187: (a0: [rt.u8, rt.u8]) => rt.u8 = (_260: [rt.u8, rt.u8]): rt.u8 => { + return _260[0] ^ _260[1]; + }; + const _1238: (a0: [rt.u8, rt.u8]) => rt.u8 = (_262: [rt.u8, rt.u8]): rt.u8 => { + return _262[0] ^ _262[1]; + }; + const _1290: (a0: [rt.u8, rt.u8]) => rt.u8 = (_265: [rt.u8, rt.u8]): rt.u8 => { + return _265[0] ^ _265[1]; + }; + const _1342: (a0: [rt.u8, rt.u8]) => rt.u8 = (_268: [rt.u8, rt.u8]): rt.u8 => { + return _268[0] ^ _268[1]; + }; + const _1390: (a0: [rt.u8, rt.u8]) => rt.u8 = (_271: [rt.u8, rt.u8]): rt.u8 => { + return _271[0] ^ _271[1]; + }; + const _1567: (a0: [rt.u8, rt.u8]) => rt.u8 = (_284: [rt.u8, rt.u8]): rt.u8 => { + return _284[0] ^ _284[1]; + }; + const _1618: (a0: [rt.u8, rt.u8]) => rt.u8 = (_288: [rt.u8, rt.u8]): rt.u8 => { + return _288[0] ^ _288[1]; + }; + const _1670: (a0: [rt.u8, rt.u8]) => rt.u8 = (_296: [rt.u8, rt.u8]): rt.u8 => { + return _296[0] ^ _296[1]; + }; + const _1722: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2107: [rt.u8, rt.u8]): rt.u8 => { + return _2107[0] ^ _2107[1]; + }; + const _1770: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2115: [rt.u8, rt.u8]): rt.u8 => { + return _2115[0] ^ _2115[1]; + }; + const _1946: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2118: [rt.u8, rt.u8]): rt.u8 => { + return _2118[0] ^ _2118[1]; + }; + const _1996: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2120: [rt.u8, rt.u8]): rt.u8 => { + return _2120[0] ^ _2120[1]; }; - const _926: (a0: [rt.u8, rt.u8]) => rt.u8 = (_218: [rt.u8, rt.u8]): rt.u8 => { - return _218[0] ^ _218[1]; + const _2047: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2123: [rt.u8, rt.u8]): rt.u8 => { + return _2123[0] ^ _2123[1]; }; - const _1101: (a0: [rt.u8, rt.u8]) => rt.u8 = (_221: [rt.u8, rt.u8]): rt.u8 => { - return _221[0] ^ _221[1]; + const _2098: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2126: [rt.u8, rt.u8]): rt.u8 => { + return _2126[0] ^ _2126[1]; + }; + const _2145: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2129: [rt.u8, rt.u8]): rt.u8 => { + return _2129[0] ^ _2129[1]; + }; + const _2320: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2132: [rt.u8, rt.u8]): rt.u8 => { + return _2132[0] ^ _2132[1]; + }; + const _2377: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2140: [rt.u8, rt.u8]): rt.u8 => { + return _2140[0] ^ _2140[1]; + }; + const _2435: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2144: [rt.u8, rt.u8]): rt.u8 => { + return _2144[0] ^ _2144[1]; + }; + const _2493: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2154: [rt.u8, rt.u8]): rt.u8 => { + return _2154[0] ^ _2154[1]; + }; + const _2547: (a0: [rt.u8, rt.u8]) => rt.u8 = (_2162: [rt.u8, rt.u8]): rt.u8 => { + return _2162[0] ^ _2162[1]; }; const mid: number = rt.usizeRem(kind >> 5 as rt.usize, rt.usizeAdd(data.length, 1)); if (mid > data.length) { @@ -1954,195 +2039,452 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { const a2: rt.ByteSlice = _18[0]; const b2: rt.ByteSlice = _18[1]; const other: boolean = (kind & 4) !== 0; - const n: rt.usize = option_mapOr$1t0muvr(rt.byteSliceFirst(data), 0, (_223: rt.u8): rt.usize => { - return rt.usizeRem(_223 as rt.usize, 4); + const n: rt.usize = option_mapOr$1t0muvr(rt.byteSliceFirst(data), 0, (_2165: rt.u8): rt.usize => { + return rt.usizeRem(_2165 as rt.usize, 4); }); const log: rt.RefCell = new rt.RefCell(new rt.ByteVec()); const _28: rt.u8 = rt.u8Rem(kind, 4); if (_28 === 0) { if ((kind & 16) === 0) { - const z: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2290: rt.u8): rt.u8 => { - const x231: rt.u8 = _2290; - const _6238: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6238.value, x231 ^ 1); - rt.refMutRelease(_6238); - return x231; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2291: rt.u8): rt.u8 => { - const x232: rt.u8 = _2291; - const _6239: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6239.value, x232 ^ 2); - rt.refMutRelease(_6239); - return x232; - }), [true, true]); - const _41: rt.usize = rt.usizeRem(data.length, 8); - if (_41 === 0) { - rt.byteVecPush(out, rt.iterCount(z) & 0xff); - } else if (_41 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z), 238, (_2300: [rt.u8, rt.u8]): rt.u8 => { - return _2300[0] ^ _2300[1]; - })); - } else if (_41 === 2) { - rt.iterForEach(z, (p21: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _40(p21)); - }); - } else if (_41 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z, (_2299: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2299[0] as rt.u32, _2299[1] as rt.u32); - }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_41 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z, (_2298: [rt.u8, rt.u8]): rt.u8 => { - return _2298[0] ^ _2298[1]; - }), undefined, true)), undefined, true); - } else if (_41 === 5) { - rt.byteVecPush(out, rt.iterFold(z, 0, (acc7: rt.u8, p20: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc7, 3) ^ _40(p20); - })); - } else if (_41 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z, (_2297: [rt.u8, rt.u8]): rt.u8 => { - return _2297[0] ^ _2297[1]; - }), (x239: rt.u8): boolean => { - return x239 === 0; - }) ? 1 : 0); + const _31: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_31 === 0) { + const z: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21148: rt.u8): rt.u8 => { + const x603: rt.u8 = _21148; + const _6355: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6355.value, x603 ^ 1); + rt.refMutRelease(_6355); + return x603; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21149: rt.u8): rt.u8 => { + const x604: rt.u8 = _21149; + const _6356: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6356.value, x604 ^ 2); + rt.refMutRelease(_6356); + return x604; + }), [true, true]); + const _46: rt.usize = rt.usizeRem(data.length, 8); + if (_46 === 0) { + rt.byteVecPush(out, rt.iterCount(z) & 0xff); + } else if (_46 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z), 238, (_21158: [rt.u8, rt.u8]): rt.u8 => { + return _21158[0] ^ _21158[1]; + })); + } else if (_46 === 2) { + rt.iterForEach(z, (p77: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _45(p77)); + }); + } else if (_46 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z, (_21157: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21157[0] as rt.u32, _21157[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_46 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z, (_21156: [rt.u8, rt.u8]): rt.u8 => { + return _21156[0] ^ _21156[1]; + }), undefined, true)), undefined, true); + } else if (_46 === 5) { + rt.byteVecPush(out, rt.iterFold(z, 0, (acc35: rt.u8, p76: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc35, 3) ^ _45(p76); + })); + } else if (_46 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z, (_21155: [rt.u8, rt.u8]): rt.u8 => { + return _21155[0] ^ _21155[1]; + }), (x611: rt.u8): boolean => { + return x611 === 0; + }) ? 1 : 0); + } else { + const z2: rt.Iter<[rt.u8, rt.u8]> = z; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z2, (_21150: [rt.u8, rt.u8]): boolean => { + return _21150[0] > _21150[1]; + }), 238, (i42: rt.usize): rt.u8 => { + return i42 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z2, (_21151: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21151[0], 3) === 0; + }), 238, (_21152: [rt.u8, rt.u8]): rt.u8 => { + return _21152[0] ^ _21152[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z2, n), 238, (_21153: [rt.u8, rt.u8]): rt.u8 => { + return _21153[0] ^ _21153[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z2.next()), 238, (_21154: [rt.u8, rt.u8]): rt.u8 => { + return _21154[0] ^ _21154[1]; + })); + } + } else if (_31 === 1) { + const z3: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21137: rt.u8): rt.u8 => { + const x591: rt.u8 = _21137; + const _6351: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6351.value, x591 ^ 1); + rt.refMutRelease(_6351); + return x591; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21138: rt.u8): rt.u8 => { + const x592: rt.u8 = _21138; + const _6352: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6352.value, x592 ^ 2); + rt.refMutRelease(_6352); + return x592; + }), [true, true]); + const _95: rt.usize = rt.usizeRem(data.length, 8); + if (_95 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z3)) & 0xff); + } else if (_95 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z3)), 238, (_21147: [rt.u8, rt.u8]): rt.u8 => { + return _21147[0] ^ _21147[1]; + })); + } else if (_95 === 2) { + const _102: (a0: [rt.u8, rt.u8]) => undefined = (p75: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _94(p75)); + }; + rt.iterForEach(rt.iterBoxed(z3), _102); + } else if (_95 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z3), (_21146: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21146[0] as rt.u32, _21146[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_95 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z3), (_21145: [rt.u8, rt.u8]): rt.u8 => { + return _21145[0] ^ _21145[1]; + }), "next")), undefined, true); + } else if (_95 === 5) { + const _110: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc34: rt.u8, p74: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc34, 3) ^ _94(p74); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z3), 0, _110)); + } else if (_95 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z3), (_21144: [rt.u8, rt.u8]): rt.u8 => { + return _21144[0] ^ _21144[1]; + }), (x599: rt.u8): boolean => { + return x599 === 0; + }) ? 1 : 0); + } else { + const z4: rt.Iter<[rt.u8, rt.u8]> = z3; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z4), (_21139: [rt.u8, rt.u8]): boolean => { + return _21139[0] > _21139[1]; + }), 238, (i41: rt.usize): rt.u8 => { + return i41 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z4), (_21140: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21140[0], 3) === 0; + }), 238, (_21141: [rt.u8, rt.u8]): rt.u8 => { + return _21141[0] ^ _21141[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z4), n), 238, (_21142: [rt.u8, rt.u8]): rt.u8 => { + return _21142[0] ^ _21142[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z4.next()), 238, (_21143: [rt.u8, rt.u8]): rt.u8 => { + return _21143[0] ^ _21143[1]; + })); + } + } else if (_31 === 2) { + const z5: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21126: rt.u8): rt.u8 => { + const x579: rt.u8 = _21126; + const _6347: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6347.value, x579 ^ 1); + rt.refMutRelease(_6347); + return x579; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21127: rt.u8): rt.u8 => { + const x580: rt.u8 = _21127; + const _6348: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6348.value, x580 ^ 2); + rt.refMutRelease(_6348); + return x580; + }), [true, true]), n); + const _145: rt.usize = rt.usizeRem(data.length, 8); + if (_145 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z5)) & 0xff); + } else if (_145 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z5)), 238, (_21136: [rt.u8, rt.u8]): rt.u8 => { + return _21136[0] ^ _21136[1]; + })); + } else if (_145 === 2) { + const _152: (a0: [rt.u8, rt.u8]) => undefined = (p73: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _144(p73)); + }; + rt.iterForEach(rt.iterBoxed(z5), _152); + } else if (_145 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z5), (_21135: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21135[0] as rt.u32, _21135[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_145 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z5), (_21134: [rt.u8, rt.u8]): rt.u8 => { + return _21134[0] ^ _21134[1]; + }), "next")), undefined, true); + } else if (_145 === 5) { + const _160: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc33: rt.u8, p72: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc33, 3) ^ _144(p72); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z5), 0, _160)); + } else if (_145 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z5), (_21133: [rt.u8, rt.u8]): rt.u8 => { + return _21133[0] ^ _21133[1]; + }), (x587: rt.u8): boolean => { + return x587 === 0; + }) ? 1 : 0); + } else { + const z6: rt.Iter<[rt.u8, rt.u8]> = z5; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z6), (_21128: [rt.u8, rt.u8]): boolean => { + return _21128[0] > _21128[1]; + }), 238, (i40: rt.usize): rt.u8 => { + return i40 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z6), (_21129: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21129[0], 3) === 0; + }), 238, (_21130: [rt.u8, rt.u8]): rt.u8 => { + return _21130[0] ^ _21130[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z6), n), 238, (_21131: [rt.u8, rt.u8]): rt.u8 => { + return _21131[0] ^ _21131[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z6.next()), 238, (_21132: [rt.u8, rt.u8]): rt.u8 => { + return _21132[0] ^ _21132[1]; + })); + } + } else if (_31 === 3) { + const _184: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21115: rt.u8): rt.u8 => { + const x567: rt.u8 = _21115; + const _6343: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6343.value, x567 ^ 1); + rt.refMutRelease(_6343); + return x567; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21116: rt.u8): rt.u8 => { + const x568: rt.u8 = _21116; + const _6344: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6344.value, x568 ^ 2); + rt.refMutRelease(_6344); + return x568; + }), [true, true]); + const _195: rt.usize = rt.usizeRem(data.length, 8); + if (_195 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_184))) & 0xff); + } else if (_195 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_184))), 238, (_21125: [rt.u8, rt.u8]): rt.u8 => { + return _21125[0] ^ _21125[1]; + })); + } else if (_195 === 2) { + const _202: (a0: [rt.u8, rt.u8]) => undefined = (p71: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _194(p71)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_184)), _202); + } else if (_195 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_184)), (_21124: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21124[0] as rt.u32, _21124[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_195 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_184)), (_21123: [rt.u8, rt.u8]): rt.u8 => { + return _21123[0] ^ _21123[1]; + }), "next")), undefined, true); + } else if (_195 === 5) { + const _210: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc32: rt.u8, p70: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc32, 3) ^ _194(p70); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_184)), 0, _210)); + } else if (_195 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_184)), (_21122: [rt.u8, rt.u8]): rt.u8 => { + return _21122[0] ^ _21122[1]; + }), (x575: rt.u8): boolean => { + return x575 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_184), (_21117: [rt.u8, rt.u8]): boolean => { + return _21117[0] > _21117[1]; + }), 238, (i39: rt.usize): rt.u8 => { + return i39 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_184), (_21118: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21118[0], 3) === 0; + }), 238, (_21119: [rt.u8, rt.u8]): rt.u8 => { + return _21119[0] ^ _21119[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_184), n), 238, (_21120: [rt.u8, rt.u8]): rt.u8 => { + return _21120[0] ^ _21120[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_184.next()), 238, (_21121: [rt.u8, rt.u8]): rt.u8 => { + return _21121[0] ^ _21121[1]; + })); + } } else { - const z2: rt.Iter<[rt.u8, rt.u8]> = z; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z2, (_2292: [rt.u8, rt.u8]): boolean => { - return _2292[0] > _2292[1]; - }), 238, (i14: rt.usize): rt.u8 => { - return i14 & 0xff; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z2, (_2293: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2293[0], 3) === 0; - }), 238, (_2294: [rt.u8, rt.u8]): rt.u8 => { - return _2294[0] ^ _2294[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z2, n), 238, (_2295: [rt.u8, rt.u8]): rt.u8 => { - return _2295[0] ^ _2295[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z2.next()), 238, (_2296: [rt.u8, rt.u8]): rt.u8 => { - return _2296[0] ^ _2296[1]; - })); + const _229: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21104: rt.u8): rt.u8 => { + const x555: rt.u8 = _21104; + const _6339: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6339.value, x555 ^ 1); + rt.refMutRelease(_6339); + return x555; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21105: rt.u8): rt.u8 => { + const x556: rt.u8 = _21105; + const _6340: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6340.value, x556 ^ 2); + rt.refMutRelease(_6340); + return x556; + }), [true, true]), n); + const _241: rt.usize = rt.usizeRem(data.length, 8); + if (_241 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_229))) & 0xff); + } else if (_241 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_229))), 238, (_21114: [rt.u8, rt.u8]): rt.u8 => { + return _21114[0] ^ _21114[1]; + })); + } else if (_241 === 2) { + const _248: (a0: [rt.u8, rt.u8]) => undefined = (p69: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _240(p69)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_229)), _248); + } else if (_241 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_229)), (_21113: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21113[0] as rt.u32, _21113[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_241 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_229)), (_21112: [rt.u8, rt.u8]): rt.u8 => { + return _21112[0] ^ _21112[1]; + }), "next")), undefined, true); + } else if (_241 === 5) { + const _256: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc31: rt.u8, p68: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc31, 3) ^ _240(p68); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_229)), 0, _256)); + } else if (_241 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_229)), (_21111: [rt.u8, rt.u8]): rt.u8 => { + return _21111[0] ^ _21111[1]; + }), (x563: rt.u8): boolean => { + return x563 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_229), (_21106: [rt.u8, rt.u8]): boolean => { + return _21106[0] > _21106[1]; + }), 238, (i38: rt.usize): rt.u8 => { + return i38 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_229), (_21107: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21107[0], 3) === 0; + }), 238, (_21108: [rt.u8, rt.u8]): rt.u8 => { + return _21108[0] ^ _21108[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_229), n), 238, (_21109: [rt.u8, rt.u8]): rt.u8 => { + return _21109[0] ^ _21109[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_229.next()), 238, (_21110: [rt.u8, rt.u8]): rt.u8 => { + return _21110[0] ^ _21110[1]; + })); + } } } else { - const _79: rt.usize = rt.usizeRem(data.length, 8); - if (_79 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2287: rt.u8): rt.u8 => { - const x228: rt.u8 = _2287; - const _6236: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6236.value, x228 ^ 1); - rt.refMutRelease(_6236); - return x228; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2288: rt.u8): rt.u8 => { - const x229: rt.u8 = _2288; - const _6237: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6237.value, x229 ^ 2); - rt.refMutRelease(_6237); - return x229; - }), [true, true]), (_2289: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2289[0], 2) === 0; + const _274: rt.usize = rt.usizeRem(data.length, 8); + if (_274 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21101: rt.u8): rt.u8 => { + const x552: rt.u8 = _21101; + const _6337: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6337.value, x552 ^ 1); + rt.refMutRelease(_6337); + return x552; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21102: rt.u8): rt.u8 => { + const x553: rt.u8 = _21102; + const _6338: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6338.value, x553 ^ 2); + rt.refMutRelease(_6338); + return x553; + }), [true, true]), (_21103: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21103[0], 2) === 0; })) & 0xff); - } else if (_79 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2284: rt.u8): rt.u8 => { - const x225: rt.u8 = _2284; - const _6234: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6234.value, x225 ^ 1); - rt.refMutRelease(_6234); - return x225; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2285: rt.u8): rt.u8 => { - const x226: rt.u8 = _2285; - const _6235: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6235.value, x226 ^ 2); - rt.refMutRelease(_6235); - return x226; - }), [true, true]), (_2286: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2286[0], _2286[1]); + } else if (_274 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21098: rt.u8): rt.u8 => { + const x549: rt.u8 = _21098; + const _6335: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6335.value, x549 ^ 1); + rt.refMutRelease(_6335); + return x549; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21099: rt.u8): rt.u8 => { + const x550: rt.u8 = _21099; + const _6336: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6336.value, x550 ^ 2); + rt.refMutRelease(_6336); + return x550; + }), [true, true]), (_21100: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_21100[0], _21100[1]); })) & 0xff); - } else if (_79 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2281: rt.u8): rt.u8 => { - const x222: rt.u8 = _2281; - const _6232: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6232.value, x222 ^ 1); - rt.refMutRelease(_6232); - return x222; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2282: rt.u8): rt.u8 => { - const x223: rt.u8 = _2282; - const _6233: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6233.value, x223 ^ 2); - rt.refMutRelease(_6233); - return x223; - }), [true, true]), (_2283: [rt.u8, rt.u8]): boolean => { - return _2283[0] < 128; + } else if (_274 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21095: rt.u8): rt.u8 => { + const x546: rt.u8 = _21095; + const _6333: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6333.value, x546 ^ 1); + rt.refMutRelease(_6333); + return x546; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21096: rt.u8): rt.u8 => { + const x547: rt.u8 = _21096; + const _6334: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6334.value, x547 ^ 2); + rt.refMutRelease(_6334); + return x547; + }), [true, true]), (_21097: [rt.u8, rt.u8]): boolean => { + return _21097[0] < 128; })) & 0xff); - } else if (_79 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2278: rt.u8): rt.u8 => { - const x220: rt.u8 = _2278; - const _6230: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6230.value, x220 ^ 1); - rt.refMutRelease(_6230); - return x220; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2279: rt.u8): rt.u8 => { - const x221: rt.u8 = _2279; - const _6231: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6231.value, x221 ^ 2); - rt.refMutRelease(_6231); - return x221; - }), [true, true])), (_2280: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2280[0] & 0xff; + } else if (_274 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21092: rt.u8): rt.u8 => { + const x544: rt.u8 = _21092; + const _6331: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6331.value, x544 ^ 1); + rt.refMutRelease(_6331); + return x544; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21093: rt.u8): rt.u8 => { + const x545: rt.u8 = _21093; + const _6332: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6332.value, x545 ^ 2); + rt.refMutRelease(_6332); + return x545; + }), [true, true])), (_21094: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _21094[0] & 0xff; })), 238)); - } else if (_79 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2276: rt.u8): rt.u8 => { - const x218: rt.u8 = _2276; - const _6228: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6228.value, x218 ^ 1); - rt.refMutRelease(_6228); - return x218; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2277: rt.u8): rt.u8 => { - const x219: rt.u8 = _2277; - const _6229: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6229.value, x219 ^ 2); - rt.refMutRelease(_6229); - return x219; + } else if (_274 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21090: rt.u8): rt.u8 => { + const x542: rt.u8 = _21090; + const _6329: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6329.value, x542 ^ 1); + rt.refMutRelease(_6329); + return x542; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21091: rt.u8): rt.u8 => { + const x543: rt.u8 = _21091; + const _6330: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6330.value, x543 ^ 2); + rt.refMutRelease(_6330); + return x543; }), [true, true]), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_79 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2274: rt.u8): rt.u8 => { - const x216: rt.u8 = _2274; - const _6226: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6226.value, x216 ^ 1); - rt.refMutRelease(_6226); - return x216; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2275: rt.u8): rt.u8 => { - const x217: rt.u8 = _2275; - const _6227: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6227.value, x217 ^ 2); - rt.refMutRelease(_6227); - return x217; + } else if (_274 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21088: rt.u8): rt.u8 => { + const x540: rt.u8 = _21088; + const _6327: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6327.value, x540 ^ 1); + rt.refMutRelease(_6327); + return x540; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21089: rt.u8): rt.u8 => { + const x541: rt.u8 = _21089; + const _6328: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6328.value, x541 ^ 2); + rt.refMutRelease(_6328); + return x541; }), [true, true]), n, undefined, true)) & 0xff); - } else if (_79 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2272: rt.u8): rt.u8 => { - const x214: rt.u8 = _2272; - const _6224: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6224.value, x214 ^ 1); - rt.refMutRelease(_6224); - return x214; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2273: rt.u8): rt.u8 => { - const x215: rt.u8 = _2273; - const _6225: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6225.value, x215 ^ 2); - rt.refMutRelease(_6225); - return x215; + } else if (_274 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21086: rt.u8): rt.u8 => { + const x538: rt.u8 = _21086; + const _6325: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6325.value, x538 ^ 1); + rt.refMutRelease(_6325); + return x538; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21087: rt.u8): rt.u8 => { + const x539: rt.u8 = _21087; + const _6326: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6326.value, x539 ^ 2); + rt.refMutRelease(_6326); + return x539; }), [true, true]), n)) & 0xff); } else { - const p: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2270: rt.u8): rt.u8 => { - const x212: rt.u8 = _2270; - const _6222: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6222.value, x212 ^ 1); - rt.refMutRelease(_6222); - return x212; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2271: rt.u8): rt.u8 => { - const x213: rt.u8 = _2271; - const _6223: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6223.value, x213 ^ 2); - rt.refMutRelease(_6223); - return x213; + const p: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_21084: rt.u8): rt.u8 => { + const x536: rt.u8 = _21084; + const _6323: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6323.value, x536 ^ 1); + rt.refMutRelease(_6323); + return x536; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_21085: rt.u8): rt.u8 => { + const x537: rt.u8 = _21085; + const _6324: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6324.value, x537 ^ 2); + rt.refMutRelease(_6324); + return x537; }), [true, true])); rt.byteVecPush(out, (rt.peekablePeek(p) !== undefined ? 1 : 0) ^ (rt.iterCount(p) & 0xff)); } @@ -2150,1196 +2492,2766 @@ export function zips(kind: rt.u8, data: rt.ByteSlice, out: rt.ByteVec): void { } else if (_28 === 1) { if (!other) { if ((kind & 16) === 0) { - const z3: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2259: rt.u8): rt.u8 => { - const x200: rt.u8 = _2259; - const _6218: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6218.value, x200 ^ 3); - rt.refMutRelease(_6218); - return x200; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2260: rt.u8): rt.u8 => { - const x201: rt.u8 = _2260; - const _6219: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6219.value, x201 ^ 4); - rt.refMutRelease(_6219); - return x201; + const _385: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_385 === 0) { + const z7: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21073: rt.u8): rt.u8 => { + const x524: rt.u8 = _21073; + const _6319: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6319.value, x524 ^ 3); + rt.refMutRelease(_6319); + return x524; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21074: rt.u8): rt.u8 => { + const x525: rt.u8 = _21074; + const _6320: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6320.value, x525 ^ 4); + rt.refMutRelease(_6320); + return x525; + }), "len"); + const _402: rt.usize = rt.usizeRem(data.length, 8); + if (_402 === 0) { + rt.byteVecPush(out, rt.iterCount(z7) & 0xff); + } else if (_402 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z7), 238, (_21083: [rt.u8, rt.u8]): rt.u8 => { + return _21083[0] ^ _21083[1]; + })); + } else if (_402 === 2) { + rt.iterForEach(z7, (p67: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _401(p67)); + }); + } else if (_402 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z7, (_21082: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21082[0] as rt.u32, _21082[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_402 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z7, (_21081: [rt.u8, rt.u8]): rt.u8 => { + return _21081[0] ^ _21081[1]; + }), undefined, true)), undefined, true); + } else if (_402 === 5) { + rt.byteVecPush(out, rt.iterFold(z7, 0, (acc30: rt.u8, p66: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc30, 3) ^ _401(p66); + })); + } else if (_402 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z7, (_21080: [rt.u8, rt.u8]): rt.u8 => { + return _21080[0] ^ _21080[1]; + }), (x532: rt.u8): boolean => { + return x532 === 0; + }) ? 1 : 0); + } else { + const z8: rt.Iter<[rt.u8, rt.u8]> = z7; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z8, (_21075: [rt.u8, rt.u8]): boolean => { + return _21075[0] > _21075[1]; + }), 238, (i36: rt.usize): rt.u8 => { + return i36 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z8, (_21076: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21076[0], 3) === 0; + }), 238, (_21077: [rt.u8, rt.u8]): rt.u8 => { + return _21077[0] ^ _21077[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z8, n), 238, (_21078: [rt.u8, rt.u8]): rt.u8 => { + return _21078[0] ^ _21078[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z8.next()), 238, (_21079: [rt.u8, rt.u8]): rt.u8 => { + return _21079[0] ^ _21079[1]; + })); + } + } else if (_385 === 1) { + const z9: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21062: rt.u8): rt.u8 => { + const x512: rt.u8 = _21062; + const _6315: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6315.value, x512 ^ 3); + rt.refMutRelease(_6315); + return x512; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21063: rt.u8): rt.u8 => { + const x513: rt.u8 = _21063; + const _6316: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6316.value, x513 ^ 4); + rt.refMutRelease(_6316); + return x513; + }), "len"); + const _453: rt.usize = rt.usizeRem(data.length, 8); + if (_453 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z9)) & 0xff); + } else if (_453 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z9)), 238, (_21072: [rt.u8, rt.u8]): rt.u8 => { + return _21072[0] ^ _21072[1]; + })); + } else if (_453 === 2) { + const _460: (a0: [rt.u8, rt.u8]) => undefined = (p65: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _452(p65)); + }; + rt.iterForEach(rt.iterBoxed(z9), _460); + } else if (_453 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z9), (_21071: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21071[0] as rt.u32, _21071[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_453 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z9), (_21070: [rt.u8, rt.u8]): rt.u8 => { + return _21070[0] ^ _21070[1]; + }), "next")), undefined, true); + } else if (_453 === 5) { + const _468: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc29: rt.u8, p64: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc29, 3) ^ _452(p64); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z9), 0, _468)); + } else if (_453 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z9), (_21069: [rt.u8, rt.u8]): rt.u8 => { + return _21069[0] ^ _21069[1]; + }), (x520: rt.u8): boolean => { + return x520 === 0; + }) ? 1 : 0); + } else { + const z10: rt.Iter<[rt.u8, rt.u8]> = z9; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z10), (_21064: [rt.u8, rt.u8]): boolean => { + return _21064[0] > _21064[1]; + }), 238, (i35: rt.usize): rt.u8 => { + return i35 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z10), (_21065: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21065[0], 3) === 0; + }), 238, (_21066: [rt.u8, rt.u8]): rt.u8 => { + return _21066[0] ^ _21066[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z10), n), 238, (_21067: [rt.u8, rt.u8]): rt.u8 => { + return _21067[0] ^ _21067[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z10.next()), 238, (_21068: [rt.u8, rt.u8]): rt.u8 => { + return _21068[0] ^ _21068[1]; + })); + } + } else if (_385 === 2) { + const z11: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21051: rt.u8): rt.u8 => { + const x500: rt.u8 = _21051; + const _6311: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6311.value, x500 ^ 3); + rt.refMutRelease(_6311); + return x500; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21052: rt.u8): rt.u8 => { + const x501: rt.u8 = _21052; + const _6312: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6312.value, x501 ^ 4); + rt.refMutRelease(_6312); + return x501; + }), "len"), n); + const _505: rt.usize = rt.usizeRem(data.length, 8); + if (_505 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z11)) & 0xff); + } else if (_505 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z11)), 238, (_21061: [rt.u8, rt.u8]): rt.u8 => { + return _21061[0] ^ _21061[1]; + })); + } else if (_505 === 2) { + const _512: (a0: [rt.u8, rt.u8]) => undefined = (p63: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _504(p63)); + }; + rt.iterForEach(rt.iterBoxed(z11), _512); + } else if (_505 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z11), (_21060: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21060[0] as rt.u32, _21060[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_505 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z11), (_21059: [rt.u8, rt.u8]): rt.u8 => { + return _21059[0] ^ _21059[1]; + }), "next")), undefined, true); + } else if (_505 === 5) { + const _520: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc28: rt.u8, p62: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc28, 3) ^ _504(p62); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z11), 0, _520)); + } else if (_505 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z11), (_21058: [rt.u8, rt.u8]): rt.u8 => { + return _21058[0] ^ _21058[1]; + }), (x508: rt.u8): boolean => { + return x508 === 0; + }) ? 1 : 0); + } else { + const z12: rt.Iter<[rt.u8, rt.u8]> = z11; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z12), (_21053: [rt.u8, rt.u8]): boolean => { + return _21053[0] > _21053[1]; + }), 238, (i34: rt.usize): rt.u8 => { + return i34 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z12), (_21054: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21054[0], 3) === 0; + }), 238, (_21055: [rt.u8, rt.u8]): rt.u8 => { + return _21055[0] ^ _21055[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z12), n), 238, (_21056: [rt.u8, rt.u8]): rt.u8 => { + return _21056[0] ^ _21056[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z12.next()), 238, (_21057: [rt.u8, rt.u8]): rt.u8 => { + return _21057[0] ^ _21057[1]; + })); + } + } else if (_385 === 3) { + const _544: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21040: rt.u8): rt.u8 => { + const x488: rt.u8 = _21040; + const _6307: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6307.value, x488 ^ 3); + rt.refMutRelease(_6307); + return x488; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21041: rt.u8): rt.u8 => { + const x489: rt.u8 = _21041; + const _6308: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6308.value, x489 ^ 4); + rt.refMutRelease(_6308); + return x489; + }), "len"); + const _557: rt.usize = rt.usizeRem(data.length, 8); + if (_557 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_544))) & 0xff); + } else if (_557 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_544))), 238, (_21050: [rt.u8, rt.u8]): rt.u8 => { + return _21050[0] ^ _21050[1]; + })); + } else if (_557 === 2) { + const _564: (a0: [rt.u8, rt.u8]) => undefined = (p61: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _556(p61)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_544)), _564); + } else if (_557 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_544)), (_21049: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21049[0] as rt.u32, _21049[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_557 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_544)), (_21048: [rt.u8, rt.u8]): rt.u8 => { + return _21048[0] ^ _21048[1]; + }), "next")), undefined, true); + } else if (_557 === 5) { + const _572: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc27: rt.u8, p60: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc27, 3) ^ _556(p60); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_544)), 0, _572)); + } else if (_557 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_544)), (_21047: [rt.u8, rt.u8]): rt.u8 => { + return _21047[0] ^ _21047[1]; + }), (x496: rt.u8): boolean => { + return x496 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_544), (_21042: [rt.u8, rt.u8]): boolean => { + return _21042[0] > _21042[1]; + }), 238, (i33: rt.usize): rt.u8 => { + return i33 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_544), (_21043: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21043[0], 3) === 0; + }), 238, (_21044: [rt.u8, rt.u8]): rt.u8 => { + return _21044[0] ^ _21044[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_544), n), 238, (_21045: [rt.u8, rt.u8]): rt.u8 => { + return _21045[0] ^ _21045[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_544.next()), 238, (_21046: [rt.u8, rt.u8]): rt.u8 => { + return _21046[0] ^ _21046[1]; + })); + } + } else { + const _591: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21029: rt.u8): rt.u8 => { + const x476: rt.u8 = _21029; + const _6303: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6303.value, x476 ^ 3); + rt.refMutRelease(_6303); + return x476; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21030: rt.u8): rt.u8 => { + const x477: rt.u8 = _21030; + const _6304: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6304.value, x477 ^ 4); + rt.refMutRelease(_6304); + return x477; + }), "len"), n); + const _605: rt.usize = rt.usizeRem(data.length, 8); + if (_605 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_591))) & 0xff); + } else if (_605 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_591))), 238, (_21039: [rt.u8, rt.u8]): rt.u8 => { + return _21039[0] ^ _21039[1]; + })); + } else if (_605 === 2) { + const _612: (a0: [rt.u8, rt.u8]) => undefined = (p59: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _604(p59)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_591)), _612); + } else if (_605 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_591)), (_21038: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21038[0] as rt.u32, _21038[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_605 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_591)), (_21037: [rt.u8, rt.u8]): rt.u8 => { + return _21037[0] ^ _21037[1]; + }), "next")), undefined, true); + } else if (_605 === 5) { + const _620: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc26: rt.u8, p58: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc26, 3) ^ _604(p58); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_591)), 0, _620)); + } else if (_605 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_591)), (_21036: [rt.u8, rt.u8]): rt.u8 => { + return _21036[0] ^ _21036[1]; + }), (x484: rt.u8): boolean => { + return x484 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_591), (_21031: [rt.u8, rt.u8]): boolean => { + return _21031[0] > _21031[1]; + }), 238, (i32: rt.usize): rt.u8 => { + return i32 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_591), (_21032: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21032[0], 3) === 0; + }), 238, (_21033: [rt.u8, rt.u8]): rt.u8 => { + return _21033[0] ^ _21033[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_591), n), 238, (_21034: [rt.u8, rt.u8]): rt.u8 => { + return _21034[0] ^ _21034[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_591.next()), 238, (_21035: [rt.u8, rt.u8]): rt.u8 => { + return _21035[0] ^ _21035[1]; + })); + } + } + } else { + const _638: rt.usize = rt.usizeRem(data.length, 8); + if (_638 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21026: rt.u8): rt.u8 => { + const x473: rt.u8 = _21026; + const _6301: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6301.value, x473 ^ 3); + rt.refMutRelease(_6301); + return x473; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21027: rt.u8): rt.u8 => { + const x474: rt.u8 = _21027; + const _6302: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6302.value, x474 ^ 4); + rt.refMutRelease(_6302); + return x474; + }), "len"), (_21028: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21028[0], 2) === 0; + })) & 0xff); + } else if (_638 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21023: rt.u8): rt.u8 => { + const x470: rt.u8 = _21023; + const _6299: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6299.value, x470 ^ 3); + rt.refMutRelease(_6299); + return x470; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21024: rt.u8): rt.u8 => { + const x471: rt.u8 = _21024; + const _6300: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6300.value, x471 ^ 4); + rt.refMutRelease(_6300); + return x471; + }), "len"), (_21025: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_21025[0], _21025[1]); + })) & 0xff); + } else if (_638 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21020: rt.u8): rt.u8 => { + const x467: rt.u8 = _21020; + const _6297: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6297.value, x467 ^ 3); + rt.refMutRelease(_6297); + return x467; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21021: rt.u8): rt.u8 => { + const x468: rt.u8 = _21021; + const _6298: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6298.value, x468 ^ 4); + rt.refMutRelease(_6298); + return x468; + }), "len"), (_21022: [rt.u8, rt.u8]): boolean => { + return _21022[0] < 128; + })) & 0xff); + } else if (_638 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21017: rt.u8): rt.u8 => { + const x465: rt.u8 = _21017; + const _6295: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6295.value, x465 ^ 3); + rt.refMutRelease(_6295); + return x465; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21018: rt.u8): rt.u8 => { + const x466: rt.u8 = _21018; + const _6296: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6296.value, x466 ^ 4); + rt.refMutRelease(_6296); + return x466; + }), "len")), (_21019: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _21019[0] & 0xff; + })), 238)); + } else if (_638 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21015: rt.u8): rt.u8 => { + const x463: rt.u8 = _21015; + const _6293: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6293.value, x463 ^ 3); + rt.refMutRelease(_6293); + return x463; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21016: rt.u8): rt.u8 => { + const x464: rt.u8 = _21016; + const _6294: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6294.value, x464 ^ 4); + rt.refMutRelease(_6294); + return x464; + }), "len"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); + } else if (_638 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21013: rt.u8): rt.u8 => { + const x461: rt.u8 = _21013; + const _6291: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6291.value, x461 ^ 3); + rt.refMutRelease(_6291); + return x461; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21014: rt.u8): rt.u8 => { + const x462: rt.u8 = _21014; + const _6292: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6292.value, x462 ^ 4); + rt.refMutRelease(_6292); + return x462; + }), "len"), n)) & 0xff); + } else if (_638 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21011: rt.u8): rt.u8 => { + const x459: rt.u8 = _21011; + const _6289: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6289.value, x459 ^ 3); + rt.refMutRelease(_6289); + return x459; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21012: rt.u8): rt.u8 => { + const x460: rt.u8 = _21012; + const _6290: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6290.value, x460 ^ 4); + rt.refMutRelease(_6290); + return x460; + }), "len"), n)) & 0xff); + } else { + const p2: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_21009: rt.u8): rt.u8 => { + const x457: rt.u8 = _21009; + const _6287: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6287.value, x457 ^ 3); + rt.refMutRelease(_6287); + return x457; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_21010: rt.u8): rt.u8 => { + const x458: rt.u8 = _21010; + const _6288: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6288.value, x458 ^ 4); + rt.refMutRelease(_6288); + return x458; + }), "len")); + rt.byteVecPush(out, (rt.peekablePeek(p2) !== undefined ? 1 : 0) ^ (rt.iterCount(p2) & 0xff)); + } + } + } else if ((kind & 16) === 0) { + const _765: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_765 === 0) { + const z13: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2998: rt.u8): rt.u8 => { + const x445: rt.u8 = _2998; + const _6283: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6283.value, x445 ^ 5); + rt.refMutRelease(_6283); + return x445; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2999: rt.u8): rt.u8 => { + const x446: rt.u8 = _2999; + const _6284: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6284.value, x446 ^ 6); + rt.refMutRelease(_6284); + return x446; }), "len"); - const _202: rt.usize = rt.usizeRem(data.length, 8); - if (_202 === 0) { - rt.byteVecPush(out, rt.iterCount(z3) & 0xff); - } else if (_202 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z3), 238, (_2269: [rt.u8, rt.u8]): rt.u8 => { - return _2269[0] ^ _2269[1]; + const _784: rt.usize = rt.usizeRem(data.length, 8); + if (_784 === 0) { + rt.byteVecPush(out, rt.iterCount(z13) & 0xff); + } else if (_784 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z13), 238, (_21008: [rt.u8, rt.u8]): rt.u8 => { + return _21008[0] ^ _21008[1]; })); - } else if (_202 === 2) { - rt.iterForEach(z3, (p19: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _201(p19)); + } else if (_784 === 2) { + rt.iterForEach(z13, (p57: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _783(p57)); }); - } else if (_202 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z3, (_2268: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2268[0] as rt.u32, _2268[1] as rt.u32); + } else if (_784 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z13, (_21007: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_21007[0] as rt.u32, _21007[1] as rt.u32); }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_202 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z3, (_2267: [rt.u8, rt.u8]): rt.u8 => { - return _2267[0] ^ _2267[1]; + } else if (_784 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z13, (_21006: [rt.u8, rt.u8]): rt.u8 => { + return _21006[0] ^ _21006[1]; }), undefined, true)), undefined, true); - } else if (_202 === 5) { - rt.byteVecPush(out, rt.iterFold(z3, 0, (acc6: rt.u8, p18: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc6, 3) ^ _201(p18); + } else if (_784 === 5) { + rt.byteVecPush(out, rt.iterFold(z13, 0, (acc25: rt.u8, p56: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc25, 3) ^ _783(p56); })); - } else if (_202 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z3, (_2266: [rt.u8, rt.u8]): rt.u8 => { - return _2266[0] ^ _2266[1]; - }), (x208: rt.u8): boolean => { - return x208 === 0; + } else if (_784 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z13, (_21005: [rt.u8, rt.u8]): rt.u8 => { + return _21005[0] ^ _21005[1]; + }), (x453: rt.u8): boolean => { + return x453 === 0; }) ? 1 : 0); } else { - const z4: rt.Iter<[rt.u8, rt.u8]> = z3; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z4, (_2261: [rt.u8, rt.u8]): boolean => { - return _2261[0] > _2261[1]; - }), 238, (i12: rt.usize): rt.u8 => { - return i12 & 0xff; + const z14: rt.Iter<[rt.u8, rt.u8]> = z13; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z14, (_21000: [rt.u8, rt.u8]): boolean => { + return _21000[0] > _21000[1]; + }), 238, (i30: rt.usize): rt.u8 => { + return i30 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z14, (_21001: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_21001[0], 3) === 0; + }), 238, (_21002: [rt.u8, rt.u8]): rt.u8 => { + return _21002[0] ^ _21002[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z14, n), 238, (_21003: [rt.u8, rt.u8]): rt.u8 => { + return _21003[0] ^ _21003[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z14.next()), 238, (_21004: [rt.u8, rt.u8]): rt.u8 => { + return _21004[0] ^ _21004[1]; + })); + } + } else if (_765 === 1) { + const z15: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2987: rt.u8): rt.u8 => { + const x433: rt.u8 = _2987; + const _6279: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6279.value, x433 ^ 5); + rt.refMutRelease(_6279); + return x433; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2988: rt.u8): rt.u8 => { + const x434: rt.u8 = _2988; + const _6280: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6280.value, x434 ^ 6); + rt.refMutRelease(_6280); + return x434; + }), "len"); + const _837: rt.usize = rt.usizeRem(data.length, 8); + if (_837 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z15)) & 0xff); + } else if (_837 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z15)), 238, (_2997: [rt.u8, rt.u8]): rt.u8 => { + return _2997[0] ^ _2997[1]; + })); + } else if (_837 === 2) { + const _844: (a0: [rt.u8, rt.u8]) => undefined = (p55: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _836(p55)); + }; + rt.iterForEach(rt.iterBoxed(z15), _844); + } else if (_837 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z15), (_2996: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2996[0] as rt.u32, _2996[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_837 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z15), (_2995: [rt.u8, rt.u8]): rt.u8 => { + return _2995[0] ^ _2995[1]; + }), "next")), undefined, true); + } else if (_837 === 5) { + const _852: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc24: rt.u8, p54: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc24, 3) ^ _836(p54); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z15), 0, _852)); + } else if (_837 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z15), (_2994: [rt.u8, rt.u8]): rt.u8 => { + return _2994[0] ^ _2994[1]; + }), (x441: rt.u8): boolean => { + return x441 === 0; + }) ? 1 : 0); + } else { + const z16: rt.Iter<[rt.u8, rt.u8]> = z15; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z16), (_2989: [rt.u8, rt.u8]): boolean => { + return _2989[0] > _2989[1]; + }), 238, (i29: rt.usize): rt.u8 => { + return i29 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z16), (_2990: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2990[0], 3) === 0; + }), 238, (_2991: [rt.u8, rt.u8]): rt.u8 => { + return _2991[0] ^ _2991[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z16), n), 238, (_2992: [rt.u8, rt.u8]): rt.u8 => { + return _2992[0] ^ _2992[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z16.next()), 238, (_2993: [rt.u8, rt.u8]): rt.u8 => { + return _2993[0] ^ _2993[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z4, (_2262: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2262[0], 3) === 0; - }), 238, (_2263: [rt.u8, rt.u8]): rt.u8 => { - return _2263[0] ^ _2263[1]; + } + } else if (_765 === 2) { + const z17: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2976: rt.u8): rt.u8 => { + const x421: rt.u8 = _2976; + const _6275: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6275.value, x421 ^ 5); + rt.refMutRelease(_6275); + return x421; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2977: rt.u8): rt.u8 => { + const x422: rt.u8 = _2977; + const _6276: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6276.value, x422 ^ 6); + rt.refMutRelease(_6276); + return x422; + }), "len"), n); + const _891: rt.usize = rt.usizeRem(data.length, 8); + if (_891 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z17)) & 0xff); + } else if (_891 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z17)), 238, (_2986: [rt.u8, rt.u8]): rt.u8 => { + return _2986[0] ^ _2986[1]; + })); + } else if (_891 === 2) { + const _898: (a0: [rt.u8, rt.u8]) => undefined = (p53: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _890(p53)); + }; + rt.iterForEach(rt.iterBoxed(z17), _898); + } else if (_891 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z17), (_2985: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2985[0] as rt.u32, _2985[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_891 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z17), (_2984: [rt.u8, rt.u8]): rt.u8 => { + return _2984[0] ^ _2984[1]; + }), "next")), undefined, true); + } else if (_891 === 5) { + const _906: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc23: rt.u8, p52: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc23, 3) ^ _890(p52); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z17), 0, _906)); + } else if (_891 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z17), (_2983: [rt.u8, rt.u8]): rt.u8 => { + return _2983[0] ^ _2983[1]; + }), (x429: rt.u8): boolean => { + return x429 === 0; + }) ? 1 : 0); + } else { + const z18: rt.Iter<[rt.u8, rt.u8]> = z17; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z18), (_2978: [rt.u8, rt.u8]): boolean => { + return _2978[0] > _2978[1]; + }), 238, (i28: rt.usize): rt.u8 => { + return i28 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z18), (_2979: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2979[0], 3) === 0; + }), 238, (_2980: [rt.u8, rt.u8]): rt.u8 => { + return _2980[0] ^ _2980[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z4, n), 238, (_2264: [rt.u8, rt.u8]): rt.u8 => { - return _2264[0] ^ _2264[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z18), n), 238, (_2981: [rt.u8, rt.u8]): rt.u8 => { + return _2981[0] ^ _2981[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z4.next()), 238, (_2265: [rt.u8, rt.u8]): rt.u8 => { - return _2265[0] ^ _2265[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z18.next()), 238, (_2982: [rt.u8, rt.u8]): rt.u8 => { + return _2982[0] ^ _2982[1]; + })); + } + } else if (_765 === 3) { + const _930: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2965: rt.u8): rt.u8 => { + const x409: rt.u8 = _2965; + const _6271: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6271.value, x409 ^ 5); + rt.refMutRelease(_6271); + return x409; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2966: rt.u8): rt.u8 => { + const x410: rt.u8 = _2966; + const _6272: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6272.value, x410 ^ 6); + rt.refMutRelease(_6272); + return x410; + }), "len"); + const _945: rt.usize = rt.usizeRem(data.length, 8); + if (_945 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_930))) & 0xff); + } else if (_945 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_930))), 238, (_2975: [rt.u8, rt.u8]): rt.u8 => { + return _2975[0] ^ _2975[1]; + })); + } else if (_945 === 2) { + const _952: (a0: [rt.u8, rt.u8]) => undefined = (p51: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _944(p51)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_930)), _952); + } else if (_945 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_930)), (_2974: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2974[0] as rt.u32, _2974[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_945 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_930)), (_2973: [rt.u8, rt.u8]): rt.u8 => { + return _2973[0] ^ _2973[1]; + }), "next")), undefined, true); + } else if (_945 === 5) { + const _960: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc22: rt.u8, p50: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc22, 3) ^ _944(p50); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_930)), 0, _960)); + } else if (_945 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_930)), (_2972: [rt.u8, rt.u8]): rt.u8 => { + return _2972[0] ^ _2972[1]; + }), (x417: rt.u8): boolean => { + return x417 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_930), (_2967: [rt.u8, rt.u8]): boolean => { + return _2967[0] > _2967[1]; + }), 238, (i27: rt.usize): rt.u8 => { + return i27 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_930), (_2968: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2968[0], 3) === 0; + }), 238, (_2969: [rt.u8, rt.u8]): rt.u8 => { + return _2969[0] ^ _2969[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_930), n), 238, (_2970: [rt.u8, rt.u8]): rt.u8 => { + return _2970[0] ^ _2970[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_930.next()), 238, (_2971: [rt.u8, rt.u8]): rt.u8 => { + return _2971[0] ^ _2971[1]; })); } } else { - const _240: rt.usize = rt.usizeRem(data.length, 8); - if (_240 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2256: rt.u8): rt.u8 => { - const x197: rt.u8 = _2256; - const _6216: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6216.value, x197 ^ 3); - rt.refMutRelease(_6216); - return x197; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2257: rt.u8): rt.u8 => { - const x198: rt.u8 = _2257; - const _6217: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6217.value, x198 ^ 4); - rt.refMutRelease(_6217); - return x198; - }), "len"), (_2258: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2258[0], 2) === 0; + const _979: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2954: rt.u8): rt.u8 => { + const x397: rt.u8 = _2954; + const _6267: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6267.value, x397 ^ 5); + rt.refMutRelease(_6267); + return x397; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2955: rt.u8): rt.u8 => { + const x398: rt.u8 = _2955; + const _6268: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6268.value, x398 ^ 6); + rt.refMutRelease(_6268); + return x398; + }), "len"), n); + const _995: rt.usize = rt.usizeRem(data.length, 8); + if (_995 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_979))) & 0xff); + } else if (_995 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_979))), 238, (_2964: [rt.u8, rt.u8]): rt.u8 => { + return _2964[0] ^ _2964[1]; + })); + } else if (_995 === 2) { + const _1002: (a0: [rt.u8, rt.u8]) => undefined = (p49: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _994(p49)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_979)), _1002); + } else if (_995 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_979)), (_2963: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2963[0] as rt.u32, _2963[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_995 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_979)), (_2962: [rt.u8, rt.u8]): rt.u8 => { + return _2962[0] ^ _2962[1]; + }), "next")), undefined, true); + } else if (_995 === 5) { + const _1010: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc21: rt.u8, p48: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc21, 3) ^ _994(p48); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_979)), 0, _1010)); + } else if (_995 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_979)), (_2961: [rt.u8, rt.u8]): rt.u8 => { + return _2961[0] ^ _2961[1]; + }), (x405: rt.u8): boolean => { + return x405 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_979), (_2956: [rt.u8, rt.u8]): boolean => { + return _2956[0] > _2956[1]; + }), 238, (i26: rt.usize): rt.u8 => { + return i26 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_979), (_2957: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2957[0], 3) === 0; + }), 238, (_2958: [rt.u8, rt.u8]): rt.u8 => { + return _2958[0] ^ _2958[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_979), n), 238, (_2959: [rt.u8, rt.u8]): rt.u8 => { + return _2959[0] ^ _2959[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_979.next()), 238, (_2960: [rt.u8, rt.u8]): rt.u8 => { + return _2960[0] ^ _2960[1]; + })); + } + } + } else { + const _1028: rt.usize = rt.usizeRem(data.length, 8); + if (_1028 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2951: rt.u8): rt.u8 => { + const x394: rt.u8 = _2951; + const _6265: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6265.value, x394 ^ 5); + rt.refMutRelease(_6265); + return x394; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2952: rt.u8): rt.u8 => { + const x395: rt.u8 = _2952; + const _6266: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6266.value, x395 ^ 6); + rt.refMutRelease(_6266); + return x395; + }), "len"), (_2953: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2953[0], 2) === 0; + })) & 0xff); + } else if (_1028 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2948: rt.u8): rt.u8 => { + const x391: rt.u8 = _2948; + const _6263: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6263.value, x391 ^ 5); + rt.refMutRelease(_6263); + return x391; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2949: rt.u8): rt.u8 => { + const x392: rt.u8 = _2949; + const _6264: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6264.value, x392 ^ 6); + rt.refMutRelease(_6264); + return x392; + }), "len"), (_2950: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_2950[0], _2950[1]); + })) & 0xff); + } else if (_1028 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2945: rt.u8): rt.u8 => { + const x388: rt.u8 = _2945; + const _6261: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6261.value, x388 ^ 5); + rt.refMutRelease(_6261); + return x388; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2946: rt.u8): rt.u8 => { + const x389: rt.u8 = _2946; + const _6262: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6262.value, x389 ^ 6); + rt.refMutRelease(_6262); + return x389; + }), "len"), (_2947: [rt.u8, rt.u8]): boolean => { + return _2947[0] < 128; + })) & 0xff); + } else if (_1028 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2942: rt.u8): rt.u8 => { + const x386: rt.u8 = _2942; + const _6259: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6259.value, x386 ^ 5); + rt.refMutRelease(_6259); + return x386; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2943: rt.u8): rt.u8 => { + const x387: rt.u8 = _2943; + const _6260: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6260.value, x387 ^ 6); + rt.refMutRelease(_6260); + return x387; + }), "len")), (_2944: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _2944[0] & 0xff; + })), 238)); + } else if (_1028 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2940: rt.u8): rt.u8 => { + const x384: rt.u8 = _2940; + const _6257: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6257.value, x384 ^ 5); + rt.refMutRelease(_6257); + return x384; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2941: rt.u8): rt.u8 => { + const x385: rt.u8 = _2941; + const _6258: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6258.value, x385 ^ 6); + rt.refMutRelease(_6258); + return x385; + }), "len"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); + } else if (_1028 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2938: rt.u8): rt.u8 => { + const x382: rt.u8 = _2938; + const _6255: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6255.value, x382 ^ 5); + rt.refMutRelease(_6255); + return x382; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2939: rt.u8): rt.u8 => { + const x383: rt.u8 = _2939; + const _6256: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6256.value, x383 ^ 6); + rt.refMutRelease(_6256); + return x383; + }), "len"), n)) & 0xff); + } else if (_1028 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2936: rt.u8): rt.u8 => { + const x380: rt.u8 = _2936; + const _6253: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6253.value, x380 ^ 5); + rt.refMutRelease(_6253); + return x380; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2937: rt.u8): rt.u8 => { + const x381: rt.u8 = _2937; + const _6254: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6254.value, x381 ^ 6); + rt.refMutRelease(_6254); + return x381; + }), "len"), n)) & 0xff); + } else { + const p3: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2934: rt.u8): rt.u8 => { + const x378: rt.u8 = _2934; + const _6251: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6251.value, x378 ^ 5); + rt.refMutRelease(_6251); + return x378; + }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2935: rt.u8): rt.u8 => { + const x379: rt.u8 = _2935; + const _6252: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6252.value, x379 ^ 6); + rt.refMutRelease(_6252); + return x379; + }), "len")); + rt.byteVecPush(out, (rt.peekablePeek(p3) !== undefined ? 1 : 0) ^ (rt.iterCount(p3) & 0xff)); + } + } + } else if (_28 === 2) { + if (!other) { + if ((kind & 16) === 0) { + const _1171: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_1171 === 0) { + const z19: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x366: rt.u8): rt.u8 => { + const _6247: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6247.value, x366 ^ 7); + rt.refMutRelease(_6247); + return x366; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x367: rt.u8): rt.u8 => { + const _6248: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6248.value, x367 ^ 8); + rt.refMutRelease(_6248); + return x367; + }), "index"); + const _1188: rt.usize = rt.usizeRem(data.length, 8); + if (_1188 === 0) { + rt.byteVecPush(out, rt.iterCount(z19) & 0xff); + } else if (_1188 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z19), 238, (_2933: [rt.u8, rt.u8]): rt.u8 => { + return _2933[0] ^ _2933[1]; + })); + } else if (_1188 === 2) { + rt.iterForEach(z19, (p47: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1187(p47)); + }); + } else if (_1188 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z19, (_2932: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2932[0] as rt.u32, _2932[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1188 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z19, (_2931: [rt.u8, rt.u8]): rt.u8 => { + return _2931[0] ^ _2931[1]; + }), "index", true, 1)), undefined, true); + } else if (_1188 === 5) { + rt.byteVecPush(out, rt.iterFold(z19, 0, (acc20: rt.u8, p46: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc20, 3) ^ _1187(p46); + })); + } else if (_1188 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z19, (_2930: [rt.u8, rt.u8]): rt.u8 => { + return _2930[0] ^ _2930[1]; + }), (x374: rt.u8): boolean => { + return x374 === 0; + }) ? 1 : 0); + } else { + const z20: rt.Iter<[rt.u8, rt.u8]> = z19; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z20, (_2925: [rt.u8, rt.u8]): boolean => { + return _2925[0] > _2925[1]; + }), 238, (i24: rt.usize): rt.u8 => { + return i24 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z20, (_2926: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2926[0], 3) === 0; + }), 238, (_2927: [rt.u8, rt.u8]): rt.u8 => { + return _2927[0] ^ _2927[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z20, n), 238, (_2928: [rt.u8, rt.u8]): rt.u8 => { + return _2928[0] ^ _2928[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z20.next()), 238, (_2929: [rt.u8, rt.u8]): rt.u8 => { + return _2929[0] ^ _2929[1]; + })); + } + } else if (_1171 === 1) { + const z21: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x354: rt.u8): rt.u8 => { + const _6243: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6243.value, x354 ^ 7); + rt.refMutRelease(_6243); + return x354; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x355: rt.u8): rt.u8 => { + const _6244: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6244.value, x355 ^ 8); + rt.refMutRelease(_6244); + return x355; + }), "index"); + const _1239: rt.usize = rt.usizeRem(data.length, 8); + if (_1239 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z21)) & 0xff); + } else if (_1239 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z21)), 238, (_2924: [rt.u8, rt.u8]): rt.u8 => { + return _2924[0] ^ _2924[1]; + })); + } else if (_1239 === 2) { + const _1246: (a0: [rt.u8, rt.u8]) => undefined = (p45: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1238(p45)); + }; + rt.iterForEach(rt.iterBoxed(z21), _1246); + } else if (_1239 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z21), (_2923: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2923[0] as rt.u32, _2923[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1239 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z21), (_2922: [rt.u8, rt.u8]): rt.u8 => { + return _2922[0] ^ _2922[1]; + }), "next")), undefined, true); + } else if (_1239 === 5) { + const _1254: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc19: rt.u8, p44: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc19, 3) ^ _1238(p44); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z21), 0, _1254)); + } else if (_1239 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z21), (_2921: [rt.u8, rt.u8]): rt.u8 => { + return _2921[0] ^ _2921[1]; + }), (x362: rt.u8): boolean => { + return x362 === 0; + }) ? 1 : 0); + } else { + const z22: rt.Iter<[rt.u8, rt.u8]> = z21; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z22), (_2916: [rt.u8, rt.u8]): boolean => { + return _2916[0] > _2916[1]; + }), 238, (i23: rt.usize): rt.u8 => { + return i23 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z22), (_2917: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2917[0], 3) === 0; + }), 238, (_2918: [rt.u8, rt.u8]): rt.u8 => { + return _2918[0] ^ _2918[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z22), n), 238, (_2919: [rt.u8, rt.u8]): rt.u8 => { + return _2919[0] ^ _2919[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z22.next()), 238, (_2920: [rt.u8, rt.u8]): rt.u8 => { + return _2920[0] ^ _2920[1]; + })); + } + } else if (_1171 === 2) { + const z23: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x342: rt.u8): rt.u8 => { + const _6239: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6239.value, x342 ^ 7); + rt.refMutRelease(_6239); + return x342; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x343: rt.u8): rt.u8 => { + const _6240: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6240.value, x343 ^ 8); + rt.refMutRelease(_6240); + return x343; + }), "index"), n); + const _1291: rt.usize = rt.usizeRem(data.length, 8); + if (_1291 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z23)) & 0xff); + } else if (_1291 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z23)), 238, (_2915: [rt.u8, rt.u8]): rt.u8 => { + return _2915[0] ^ _2915[1]; + })); + } else if (_1291 === 2) { + const _1298: (a0: [rt.u8, rt.u8]) => undefined = (p43: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1290(p43)); + }; + rt.iterForEach(rt.iterBoxed(z23), _1298); + } else if (_1291 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z23), (_2914: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2914[0] as rt.u32, _2914[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1291 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z23), (_2913: [rt.u8, rt.u8]): rt.u8 => { + return _2913[0] ^ _2913[1]; + }), "next")), undefined, true); + } else if (_1291 === 5) { + const _1306: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc18: rt.u8, p42: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc18, 3) ^ _1290(p42); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z23), 0, _1306)); + } else if (_1291 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z23), (_2912: [rt.u8, rt.u8]): rt.u8 => { + return _2912[0] ^ _2912[1]; + }), (x350: rt.u8): boolean => { + return x350 === 0; + }) ? 1 : 0); + } else { + const z24: rt.Iter<[rt.u8, rt.u8]> = z23; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z24), (_2907: [rt.u8, rt.u8]): boolean => { + return _2907[0] > _2907[1]; + }), 238, (i22: rt.usize): rt.u8 => { + return i22 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z24), (_2908: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2908[0], 3) === 0; + }), 238, (_2909: [rt.u8, rt.u8]): rt.u8 => { + return _2909[0] ^ _2909[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z24), n), 238, (_2910: [rt.u8, rt.u8]): rt.u8 => { + return _2910[0] ^ _2910[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z24.next()), 238, (_2911: [rt.u8, rt.u8]): rt.u8 => { + return _2911[0] ^ _2911[1]; + })); + } + } else if (_1171 === 3) { + const _1330: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x330: rt.u8): rt.u8 => { + const _6235: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6235.value, x330 ^ 7); + rt.refMutRelease(_6235); + return x330; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x331: rt.u8): rt.u8 => { + const _6236: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6236.value, x331 ^ 8); + rt.refMutRelease(_6236); + return x331; + }), "index"); + const _1343: rt.usize = rt.usizeRem(data.length, 8); + if (_1343 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_1330))) & 0xff); + } else if (_1343 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_1330))), 238, (_2906: [rt.u8, rt.u8]): rt.u8 => { + return _2906[0] ^ _2906[1]; + })); + } else if (_1343 === 2) { + const _1350: (a0: [rt.u8, rt.u8]) => undefined = (p41: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1342(p41)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_1330)), _1350); + } else if (_1343 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_1330)), (_2905: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2905[0] as rt.u32, _2905[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1343 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_1330)), (_2904: [rt.u8, rt.u8]): rt.u8 => { + return _2904[0] ^ _2904[1]; + }), "next")), undefined, true); + } else if (_1343 === 5) { + const _1358: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc17: rt.u8, p40: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc17, 3) ^ _1342(p40); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_1330)), 0, _1358)); + } else if (_1343 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_1330)), (_2903: [rt.u8, rt.u8]): rt.u8 => { + return _2903[0] ^ _2903[1]; + }), (x338: rt.u8): boolean => { + return x338 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_1330), (_2898: [rt.u8, rt.u8]): boolean => { + return _2898[0] > _2898[1]; + }), 238, (i21: rt.usize): rt.u8 => { + return i21 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_1330), (_2899: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2899[0], 3) === 0; + }), 238, (_2900: [rt.u8, rt.u8]): rt.u8 => { + return _2900[0] ^ _2900[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_1330), n), 238, (_2901: [rt.u8, rt.u8]): rt.u8 => { + return _2901[0] ^ _2901[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_1330.next()), 238, (_2902: [rt.u8, rt.u8]): rt.u8 => { + return _2902[0] ^ _2902[1]; + })); + } + } else { + const _1377: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x318: rt.u8): rt.u8 => { + const _6231: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6231.value, x318 ^ 7); + rt.refMutRelease(_6231); + return x318; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x319: rt.u8): rt.u8 => { + const _6232: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6232.value, x319 ^ 8); + rt.refMutRelease(_6232); + return x319; + }), "index"), n); + const _1391: rt.usize = rt.usizeRem(data.length, 8); + if (_1391 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_1377))) & 0xff); + } else if (_1391 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_1377))), 238, (_2897: [rt.u8, rt.u8]): rt.u8 => { + return _2897[0] ^ _2897[1]; + })); + } else if (_1391 === 2) { + const _1398: (a0: [rt.u8, rt.u8]) => undefined = (p39: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1390(p39)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_1377)), _1398); + } else if (_1391 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_1377)), (_2896: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2896[0] as rt.u32, _2896[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1391 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_1377)), (_2895: [rt.u8, rt.u8]): rt.u8 => { + return _2895[0] ^ _2895[1]; + }), "next")), undefined, true); + } else if (_1391 === 5) { + const _1406: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc16: rt.u8, p38: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc16, 3) ^ _1390(p38); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_1377)), 0, _1406)); + } else if (_1391 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_1377)), (_2894: [rt.u8, rt.u8]): rt.u8 => { + return _2894[0] ^ _2894[1]; + }), (x326: rt.u8): boolean => { + return x326 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_1377), (_2889: [rt.u8, rt.u8]): boolean => { + return _2889[0] > _2889[1]; + }), 238, (i20: rt.usize): rt.u8 => { + return i20 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_1377), (_2890: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2890[0], 3) === 0; + }), 238, (_2891: [rt.u8, rt.u8]): rt.u8 => { + return _2891[0] ^ _2891[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_1377), n), 238, (_2892: [rt.u8, rt.u8]): rt.u8 => { + return _2892[0] ^ _2892[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_1377.next()), 238, (_2893: [rt.u8, rt.u8]): rt.u8 => { + return _2893[0] ^ _2893[1]; + })); + } + } + } else { + const _1424: rt.usize = rt.usizeRem(data.length, 8); + if (_1424 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x315: rt.u8): rt.u8 => { + const _6229: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6229.value, x315 ^ 7); + rt.refMutRelease(_6229); + return x315; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x316: rt.u8): rt.u8 => { + const _6230: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6230.value, x316 ^ 8); + rt.refMutRelease(_6230); + return x316; + }), "index"), (_2888: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2888[0], 2) === 0; })) & 0xff); - } else if (_240 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2253: rt.u8): rt.u8 => { - const x194: rt.u8 = _2253; - const _6214: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6214.value, x194 ^ 3); - rt.refMutRelease(_6214); - return x194; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2254: rt.u8): rt.u8 => { - const x195: rt.u8 = _2254; - const _6215: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6215.value, x195 ^ 4); - rt.refMutRelease(_6215); - return x195; - }), "len"), (_2255: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2255[0], _2255[1]); + } else if (_1424 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x312: rt.u8): rt.u8 => { + const _6227: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6227.value, x312 ^ 7); + rt.refMutRelease(_6227); + return x312; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x313: rt.u8): rt.u8 => { + const _6228: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6228.value, x313 ^ 8); + rt.refMutRelease(_6228); + return x313; + }), "index"), (_2887: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_2887[0], _2887[1]); })) & 0xff); - } else if (_240 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2250: rt.u8): rt.u8 => { - const x191: rt.u8 = _2250; - const _6212: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6212.value, x191 ^ 3); - rt.refMutRelease(_6212); - return x191; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2251: rt.u8): rt.u8 => { - const x192: rt.u8 = _2251; - const _6213: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6213.value, x192 ^ 4); - rt.refMutRelease(_6213); - return x192; - }), "len"), (_2252: [rt.u8, rt.u8]): boolean => { - return _2252[0] < 128; + } else if (_1424 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x309: rt.u8): rt.u8 => { + const _6225: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6225.value, x309 ^ 7); + rt.refMutRelease(_6225); + return x309; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x310: rt.u8): rt.u8 => { + const _6226: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6226.value, x310 ^ 8); + rt.refMutRelease(_6226); + return x310; + }), "index"), (_2886: [rt.u8, rt.u8]): boolean => { + return _2886[0] < 128; })) & 0xff); - } else if (_240 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2247: rt.u8): rt.u8 => { - const x189: rt.u8 = _2247; - const _6210: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6210.value, x189 ^ 3); - rt.refMutRelease(_6210); - return x189; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2248: rt.u8): rt.u8 => { - const x190: rt.u8 = _2248; - const _6211: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6211.value, x190 ^ 4); - rt.refMutRelease(_6211); - return x190; - }), "len")), (_2249: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2249[0] & 0xff; + } else if (_1424 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x307: rt.u8): rt.u8 => { + const _6223: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6223.value, x307 ^ 7); + rt.refMutRelease(_6223); + return x307; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x308: rt.u8): rt.u8 => { + const _6224: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6224.value, x308 ^ 8); + rt.refMutRelease(_6224); + return x308; + }), "index")), (_2885: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _2885[0] & 0xff; })), 238)); - } else if (_240 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2245: rt.u8): rt.u8 => { - const x187: rt.u8 = _2245; - const _6208: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6208.value, x187 ^ 3); - rt.refMutRelease(_6208); - return x187; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2246: rt.u8): rt.u8 => { - const x188: rt.u8 = _2246; - const _6209: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6209.value, x188 ^ 4); - rt.refMutRelease(_6209); - return x188; - }), "len"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_240 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2243: rt.u8): rt.u8 => { - const x185: rt.u8 = _2243; - const _6206: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6206.value, x185 ^ 3); - rt.refMutRelease(_6206); - return x185; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2244: rt.u8): rt.u8 => { - const x186: rt.u8 = _2244; - const _6207: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6207.value, x186 ^ 4); - rt.refMutRelease(_6207); - return x186; - }), "len"), n)) & 0xff); - } else if (_240 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2241: rt.u8): rt.u8 => { - const x183: rt.u8 = _2241; - const _6204: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6204.value, x183 ^ 3); - rt.refMutRelease(_6204); - return x183; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2242: rt.u8): rt.u8 => { - const x184: rt.u8 = _2242; - const _6205: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6205.value, x184 ^ 4); - rt.refMutRelease(_6205); - return x184; - }), "len"), n)) & 0xff); + } else if (_1424 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x305: rt.u8): rt.u8 => { + const _6221: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6221.value, x305 ^ 7); + rt.refMutRelease(_6221); + return x305; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x306: rt.u8): rt.u8 => { + const _6222: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6222.value, x306 ^ 8); + rt.refMutRelease(_6222); + return x306; + }), "index"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); + } else if (_1424 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x303: rt.u8): rt.u8 => { + const _6219: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6219.value, x303 ^ 7); + rt.refMutRelease(_6219); + return x303; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x304: rt.u8): rt.u8 => { + const _6220: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6220.value, x304 ^ 8); + rt.refMutRelease(_6220); + return x304; + }), "index"), n)) & 0xff); + } else if (_1424 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x301: rt.u8): rt.u8 => { + const _6217: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6217.value, x301 ^ 7); + rt.refMutRelease(_6217); + return x301; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x302: rt.u8): rt.u8 => { + const _6218: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6218.value, x302 ^ 8); + rt.refMutRelease(_6218); + return x302; + }), "index"), n)) & 0xff); } else { - const p2: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2239: rt.u8): rt.u8 => { - const x181: rt.u8 = _2239; - const _6202: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6202.value, x181 ^ 3); - rt.refMutRelease(_6202); - return x181; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2240: rt.u8): rt.u8 => { - const x182: rt.u8 = _2240; - const _6203: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6203.value, x182 ^ 4); - rt.refMutRelease(_6203); - return x182; - }), "len")); - rt.byteVecPush(out, (rt.peekablePeek(p2) !== undefined ? 1 : 0) ^ (rt.iterCount(p2) & 0xff)); + const p4: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x299: rt.u8): rt.u8 => { + const _6215: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6215.value, x299 ^ 7); + rt.refMutRelease(_6215); + return x299; + }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x300: rt.u8): rt.u8 => { + const _6216: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6216.value, x300 ^ 8); + rt.refMutRelease(_6216); + return x300; + }), "index")); + rt.byteVecPush(out, (rt.peekablePeek(p4) !== undefined ? 1 : 0) ^ (rt.iterCount(p4) & 0xff)); } } } else if ((kind & 16) === 0) { - const z5: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2228: rt.u8): rt.u8 => { - const x169: rt.u8 = _2228; - const _6198: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6198.value, x169 ^ 5); - rt.refMutRelease(_6198); - return x169; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2229: rt.u8): rt.u8 => { - const x170: rt.u8 = _2229; - const _6199: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6199.value, x170 ^ 6); - rt.refMutRelease(_6199); - return x170; - }), "len"); - const _381: rt.usize = rt.usizeRem(data.length, 8); - if (_381 === 0) { - rt.byteVecPush(out, rt.iterCount(z5) & 0xff); - } else if (_381 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z5), 238, (_2238: [rt.u8, rt.u8]): rt.u8 => { - return _2238[0] ^ _2238[1]; - })); - } else if (_381 === 2) { - rt.iterForEach(z5, (p17: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _380(p17)); - }); - } else if (_381 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z5, (_2237: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2237[0] as rt.u32, _2237[1] as rt.u32); - }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_381 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z5, (_2236: [rt.u8, rt.u8]): rt.u8 => { - return _2236[0] ^ _2236[1]; - }), undefined, true)), undefined, true); - } else if (_381 === 5) { - rt.byteVecPush(out, rt.iterFold(z5, 0, (acc5: rt.u8, p16: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc5, 3) ^ _380(p16); - })); - } else if (_381 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z5, (_2235: [rt.u8, rt.u8]): rt.u8 => { - return _2235[0] ^ _2235[1]; - }), (x177: rt.u8): boolean => { - return x177 === 0; - }) ? 1 : 0); + const _1551: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_1551 === 0) { + const z25: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x287: rt.u8): rt.u8 => { + const _6211: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6211.value, x287 ^ 9); + rt.refMutRelease(_6211); + return x287; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2875: rt.u8): rt.u8 => { + const x288: rt.u8 = _2875; + const _6212: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6212.value, x288 ^ 10); + rt.refMutRelease(_6212); + return x288; + }), "index"); + const _1568: rt.usize = rt.usizeRem(data.length, 8); + if (_1568 === 0) { + rt.byteVecPush(out, rt.iterCount(z25) & 0xff); + } else if (_1568 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z25), 238, (_2884: [rt.u8, rt.u8]): rt.u8 => { + return _2884[0] ^ _2884[1]; + })); + } else if (_1568 === 2) { + rt.iterForEach(z25, (p37: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1567(p37)); + }); + } else if (_1568 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z25, (_2883: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2883[0] as rt.u32, _2883[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1568 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z25, (_2882: [rt.u8, rt.u8]): rt.u8 => { + return _2882[0] ^ _2882[1]; + }), "index", true, 1)), undefined, true); + } else if (_1568 === 5) { + rt.byteVecPush(out, rt.iterFold(z25, 0, (acc15: rt.u8, p36: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc15, 3) ^ _1567(p36); + })); + } else if (_1568 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z25, (_2881: [rt.u8, rt.u8]): rt.u8 => { + return _2881[0] ^ _2881[1]; + }), (x295: rt.u8): boolean => { + return x295 === 0; + }) ? 1 : 0); + } else { + const z26: rt.Iter<[rt.u8, rt.u8]> = z25; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z26, (_2876: [rt.u8, rt.u8]): boolean => { + return _2876[0] > _2876[1]; + }), 238, (i18: rt.usize): rt.u8 => { + return i18 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z26, (_2877: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2877[0], 3) === 0; + }), 238, (_2878: [rt.u8, rt.u8]): rt.u8 => { + return _2878[0] ^ _2878[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z26, n), 238, (_2879: [rt.u8, rt.u8]): rt.u8 => { + return _2879[0] ^ _2879[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z26.next()), 238, (_2880: [rt.u8, rt.u8]): rt.u8 => { + return _2880[0] ^ _2880[1]; + })); + } + } else if (_1551 === 1) { + const z27: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x275: rt.u8): rt.u8 => { + const _6207: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6207.value, x275 ^ 9); + rt.refMutRelease(_6207); + return x275; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2865: rt.u8): rt.u8 => { + const x276: rt.u8 = _2865; + const _6208: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6208.value, x276 ^ 10); + rt.refMutRelease(_6208); + return x276; + }), "index"); + const _1619: rt.usize = rt.usizeRem(data.length, 8); + if (_1619 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z27)) & 0xff); + } else if (_1619 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z27)), 238, (_2874: [rt.u8, rt.u8]): rt.u8 => { + return _2874[0] ^ _2874[1]; + })); + } else if (_1619 === 2) { + const _1626: (a0: [rt.u8, rt.u8]) => undefined = (p35: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1618(p35)); + }; + rt.iterForEach(rt.iterBoxed(z27), _1626); + } else if (_1619 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z27), (_2873: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2873[0] as rt.u32, _2873[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1619 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z27), (_2872: [rt.u8, rt.u8]): rt.u8 => { + return _2872[0] ^ _2872[1]; + }), "next")), undefined, true); + } else if (_1619 === 5) { + const _1634: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc14: rt.u8, p34: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc14, 3) ^ _1618(p34); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z27), 0, _1634)); + } else if (_1619 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z27), (_2871: [rt.u8, rt.u8]): rt.u8 => { + return _2871[0] ^ _2871[1]; + }), (x283: rt.u8): boolean => { + return x283 === 0; + }) ? 1 : 0); + } else { + const z28: rt.Iter<[rt.u8, rt.u8]> = z27; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z28), (_2866: [rt.u8, rt.u8]): boolean => { + return _2866[0] > _2866[1]; + }), 238, (i17: rt.usize): rt.u8 => { + return i17 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z28), (_2867: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2867[0], 3) === 0; + }), 238, (_2868: [rt.u8, rt.u8]): rt.u8 => { + return _2868[0] ^ _2868[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z28), n), 238, (_2869: [rt.u8, rt.u8]): rt.u8 => { + return _2869[0] ^ _2869[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z28.next()), 238, (_2870: [rt.u8, rt.u8]): rt.u8 => { + return _2870[0] ^ _2870[1]; + })); + } + } else if (_1551 === 2) { + const z29: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x263: rt.u8): rt.u8 => { + const _6203: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6203.value, x263 ^ 9); + rt.refMutRelease(_6203); + return x263; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2855: rt.u8): rt.u8 => { + const x264: rt.u8 = _2855; + const _6204: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6204.value, x264 ^ 10); + rt.refMutRelease(_6204); + return x264; + }), "index"), n); + const _1671: rt.usize = rt.usizeRem(data.length, 8); + if (_1671 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z29)) & 0xff); + } else if (_1671 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z29)), 238, (_2864: [rt.u8, rt.u8]): rt.u8 => { + return _2864[0] ^ _2864[1]; + })); + } else if (_1671 === 2) { + const _1678: (a0: [rt.u8, rt.u8]) => undefined = (p33: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1670(p33)); + }; + rt.iterForEach(rt.iterBoxed(z29), _1678); + } else if (_1671 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z29), (_2863: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2863[0] as rt.u32, _2863[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1671 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z29), (_2862: [rt.u8, rt.u8]): rt.u8 => { + return _2862[0] ^ _2862[1]; + }), "next")), undefined, true); + } else if (_1671 === 5) { + const _1686: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc13: rt.u8, p32: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc13, 3) ^ _1670(p32); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z29), 0, _1686)); + } else if (_1671 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z29), (_2861: [rt.u8, rt.u8]): rt.u8 => { + return _2861[0] ^ _2861[1]; + }), (x271: rt.u8): boolean => { + return x271 === 0; + }) ? 1 : 0); + } else { + const z30: rt.Iter<[rt.u8, rt.u8]> = z29; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z30), (_2856: [rt.u8, rt.u8]): boolean => { + return _2856[0] > _2856[1]; + }), 238, (i16: rt.usize): rt.u8 => { + return i16 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z30), (_2857: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2857[0], 3) === 0; + }), 238, (_2858: [rt.u8, rt.u8]): rt.u8 => { + return _2858[0] ^ _2858[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z30), n), 238, (_2859: [rt.u8, rt.u8]): rt.u8 => { + return _2859[0] ^ _2859[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z30.next()), 238, (_2860: [rt.u8, rt.u8]): rt.u8 => { + return _2860[0] ^ _2860[1]; + })); + } + } else if (_1551 === 3) { + const _1710: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x251: rt.u8): rt.u8 => { + const _6199: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6199.value, x251 ^ 9); + rt.refMutRelease(_6199); + return x251; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2845: rt.u8): rt.u8 => { + const x252: rt.u8 = _2845; + const _6200: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6200.value, x252 ^ 10); + rt.refMutRelease(_6200); + return x252; + }), "index"); + const _1723: rt.usize = rt.usizeRem(data.length, 8); + if (_1723 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_1710))) & 0xff); + } else if (_1723 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_1710))), 238, (_2854: [rt.u8, rt.u8]): rt.u8 => { + return _2854[0] ^ _2854[1]; + })); + } else if (_1723 === 2) { + const _1730: (a0: [rt.u8, rt.u8]) => undefined = (p31: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1722(p31)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_1710)), _1730); + } else if (_1723 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_1710)), (_2853: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2853[0] as rt.u32, _2853[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1723 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_1710)), (_2852: [rt.u8, rt.u8]): rt.u8 => { + return _2852[0] ^ _2852[1]; + }), "next")), undefined, true); + } else if (_1723 === 5) { + const _1738: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc12: rt.u8, p30: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc12, 3) ^ _1722(p30); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_1710)), 0, _1738)); + } else if (_1723 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_1710)), (_2851: [rt.u8, rt.u8]): rt.u8 => { + return _2851[0] ^ _2851[1]; + }), (x259: rt.u8): boolean => { + return x259 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_1710), (_2846: [rt.u8, rt.u8]): boolean => { + return _2846[0] > _2846[1]; + }), 238, (i15: rt.usize): rt.u8 => { + return i15 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_1710), (_2847: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2847[0], 3) === 0; + }), 238, (_2848: [rt.u8, rt.u8]): rt.u8 => { + return _2848[0] ^ _2848[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_1710), n), 238, (_2849: [rt.u8, rt.u8]): rt.u8 => { + return _2849[0] ^ _2849[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_1710.next()), 238, (_2850: [rt.u8, rt.u8]): rt.u8 => { + return _2850[0] ^ _2850[1]; + })); + } } else { - const z6: rt.Iter<[rt.u8, rt.u8]> = z5; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z6, (_2230: [rt.u8, rt.u8]): boolean => { - return _2230[0] > _2230[1]; - }), 238, (i10: rt.usize): rt.u8 => { - return i10 & 0xff; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z6, (_2231: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2231[0], 3) === 0; - }), 238, (_2232: [rt.u8, rt.u8]): rt.u8 => { - return _2232[0] ^ _2232[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z6, n), 238, (_2233: [rt.u8, rt.u8]): rt.u8 => { - return _2233[0] ^ _2233[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z6.next()), 238, (_2234: [rt.u8, rt.u8]): rt.u8 => { - return _2234[0] ^ _2234[1]; - })); - } - } else { - const _419: rt.usize = rt.usizeRem(data.length, 8); - if (_419 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2225: rt.u8): rt.u8 => { - const x166: rt.u8 = _2225; + const _1757: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x239: rt.u8): rt.u8 => { + const _6195: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6195.value, x239 ^ 9); + rt.refMutRelease(_6195); + return x239; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2835: rt.u8): rt.u8 => { + const x240: rt.u8 = _2835; const _6196: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6196.value, x166 ^ 5); + rt.byteVecPush(_6196.value, x240 ^ 10); rt.refMutRelease(_6196); - return x166; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2226: rt.u8): rt.u8 => { - const x167: rt.u8 = _2226; - const _6197: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6197.value, x167 ^ 6); - rt.refMutRelease(_6197); - return x167; - }), "len"), (_2227: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2227[0], 2) === 0; - })) & 0xff); - } else if (_419 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2222: rt.u8): rt.u8 => { - const x163: rt.u8 = _2222; + return x240; + }), "index"), n); + const _1771: rt.usize = rt.usizeRem(data.length, 8); + if (_1771 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_1757))) & 0xff); + } else if (_1771 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_1757))), 238, (_2844: [rt.u8, rt.u8]): rt.u8 => { + return _2844[0] ^ _2844[1]; + })); + } else if (_1771 === 2) { + const _1778: (a0: [rt.u8, rt.u8]) => undefined = (p29: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1770(p29)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_1757)), _1778); + } else if (_1771 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_1757)), (_2843: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2843[0] as rt.u32, _2843[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1771 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_1757)), (_2842: [rt.u8, rt.u8]): rt.u8 => { + return _2842[0] ^ _2842[1]; + }), "next")), undefined, true); + } else if (_1771 === 5) { + const _1786: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc11: rt.u8, p28: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc11, 3) ^ _1770(p28); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_1757)), 0, _1786)); + } else if (_1771 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_1757)), (_2841: [rt.u8, rt.u8]): rt.u8 => { + return _2841[0] ^ _2841[1]; + }), (x247: rt.u8): boolean => { + return x247 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_1757), (_2836: [rt.u8, rt.u8]): boolean => { + return _2836[0] > _2836[1]; + }), 238, (i14: rt.usize): rt.u8 => { + return i14 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_1757), (_2837: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2837[0], 3) === 0; + }), 238, (_2838: [rt.u8, rt.u8]): rt.u8 => { + return _2838[0] ^ _2838[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_1757), n), 238, (_2839: [rt.u8, rt.u8]): rt.u8 => { + return _2839[0] ^ _2839[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_1757.next()), 238, (_2840: [rt.u8, rt.u8]): rt.u8 => { + return _2840[0] ^ _2840[1]; + })); + } + } + } else { + const _1804: rt.usize = rt.usizeRem(data.length, 8); + if (_1804 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x236: rt.u8): rt.u8 => { + const _6193: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6193.value, x236 ^ 9); + rt.refMutRelease(_6193); + return x236; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2833: rt.u8): rt.u8 => { + const x237: rt.u8 = _2833; const _6194: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6194.value, x163 ^ 5); + rt.byteVecPush(_6194.value, x237 ^ 10); rt.refMutRelease(_6194); - return x163; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2223: rt.u8): rt.u8 => { - const x164: rt.u8 = _2223; - const _6195: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6195.value, x164 ^ 6); - rt.refMutRelease(_6195); - return x164; - }), "len"), (_2224: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2224[0], _2224[1]); + return x237; + }), "index"), (_2834: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2834[0], 2) === 0; })) & 0xff); - } else if (_419 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2219: rt.u8): rt.u8 => { - const x160: rt.u8 = _2219; + } else if (_1804 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x233: rt.u8): rt.u8 => { + const _6191: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6191.value, x233 ^ 9); + rt.refMutRelease(_6191); + return x233; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2831: rt.u8): rt.u8 => { + const x234: rt.u8 = _2831; const _6192: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6192.value, x160 ^ 5); + rt.byteVecPush(_6192.value, x234 ^ 10); rt.refMutRelease(_6192); - return x160; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2220: rt.u8): rt.u8 => { - const x161: rt.u8 = _2220; - const _6193: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6193.value, x161 ^ 6); - rt.refMutRelease(_6193); - return x161; - }), "len"), (_2221: [rt.u8, rt.u8]): boolean => { - return _2221[0] < 128; + return x234; + }), "index"), (_2832: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_2832[0], _2832[1]); })) & 0xff); - } else if (_419 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2216: rt.u8): rt.u8 => { - const x158: rt.u8 = _2216; + } else if (_1804 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x230: rt.u8): rt.u8 => { + const _6189: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6189.value, x230 ^ 9); + rt.refMutRelease(_6189); + return x230; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2829: rt.u8): rt.u8 => { + const x231: rt.u8 = _2829; const _6190: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6190.value, x158 ^ 5); + rt.byteVecPush(_6190.value, x231 ^ 10); rt.refMutRelease(_6190); - return x158; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2217: rt.u8): rt.u8 => { - const x159: rt.u8 = _2217; - const _6191: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6191.value, x159 ^ 6); - rt.refMutRelease(_6191); - return x159; - }), "len")), (_2218: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2218[0] & 0xff; - })), 238)); - } else if (_419 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2214: rt.u8): rt.u8 => { - const x156: rt.u8 = _2214; + return x231; + }), "index"), (_2830: [rt.u8, rt.u8]): boolean => { + return _2830[0] < 128; + })) & 0xff); + } else if (_1804 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x228: rt.u8): rt.u8 => { + const _6187: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6187.value, x228 ^ 9); + rt.refMutRelease(_6187); + return x228; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2827: rt.u8): rt.u8 => { + const x229: rt.u8 = _2827; const _6188: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6188.value, x156 ^ 5); + rt.byteVecPush(_6188.value, x229 ^ 10); rt.refMutRelease(_6188); - return x156; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2215: rt.u8): rt.u8 => { - const x157: rt.u8 = _2215; - const _6189: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6189.value, x157 ^ 6); - rt.refMutRelease(_6189); - return x157; - }), "len"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_419 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2212: rt.u8): rt.u8 => { - const x154: rt.u8 = _2212; + return x229; + }), "index")), (_2828: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _2828[0] & 0xff; + })), 238)); + } else if (_1804 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x226: rt.u8): rt.u8 => { + const _6185: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6185.value, x226 ^ 9); + rt.refMutRelease(_6185); + return x226; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2826: rt.u8): rt.u8 => { + const x227: rt.u8 = _2826; const _6186: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6186.value, x154 ^ 5); + rt.byteVecPush(_6186.value, x227 ^ 10); rt.refMutRelease(_6186); - return x154; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2213: rt.u8): rt.u8 => { - const x155: rt.u8 = _2213; - const _6187: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6187.value, x155 ^ 6); - rt.refMutRelease(_6187); - return x155; - }), "len"), n)) & 0xff); - } else if (_419 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2210: rt.u8): rt.u8 => { - const x152: rt.u8 = _2210; + return x227; + }), "index"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); + } else if (_1804 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x224: rt.u8): rt.u8 => { + const _6183: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6183.value, x224 ^ 9); + rt.refMutRelease(_6183); + return x224; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2825: rt.u8): rt.u8 => { + const x225: rt.u8 = _2825; const _6184: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6184.value, x152 ^ 5); + rt.byteVecPush(_6184.value, x225 ^ 10); rt.refMutRelease(_6184); - return x152; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2211: rt.u8): rt.u8 => { - const x153: rt.u8 = _2211; - const _6185: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6185.value, x153 ^ 6); - rt.refMutRelease(_6185); - return x153; - }), "len"), n)) & 0xff); - } else { - const p3: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterChain(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2208: rt.u8): rt.u8 => { - const x150: rt.u8 = _2208; + return x225; + }), "index"), n)) & 0xff); + } else if (_1804 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x222: rt.u8): rt.u8 => { + const _6181: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6181.value, x222 ^ 9); + rt.refMutRelease(_6181); + return x222; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2824: rt.u8): rt.u8 => { + const x223: rt.u8 = _2824; const _6182: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6182.value, x150 ^ 5); + rt.byteVecPush(_6182.value, x223 ^ 10); rt.refMutRelease(_6182); - return x150; - }), rt.iterSlice(rt.byteSliceView(b2))), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2209: rt.u8): rt.u8 => { - const x151: rt.u8 = _2209; - const _6183: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6183.value, x151 ^ 6); - rt.refMutRelease(_6183); - return x151; - }), "len")); - rt.byteVecPush(out, (rt.peekablePeek(p3) !== undefined ? 1 : 0) ^ (rt.iterCount(p3) & 0xff)); - } - } - } else if (_28 === 2) { - if (!other) { - if ((kind & 16) === 0) { - const z7: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x138: rt.u8): rt.u8 => { - const _6178: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6178.value, x138 ^ 7); - rt.refMutRelease(_6178); - return x138; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x139: rt.u8): rt.u8 => { + return x223; + }), "index"), n)) & 0xff); + } else { + const p5: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x220: rt.u8): rt.u8 => { const _6179: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6179.value, x139 ^ 8); + rt.byteVecPush(_6179.value, x220 ^ 9); rt.refMutRelease(_6179); - return x139; - }), "index"); - const _574: rt.usize = rt.usizeRem(data.length, 8); - if (_574 === 0) { - rt.byteVecPush(out, rt.iterCount(z7) & 0xff); - } else if (_574 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z7), 238, (_2207: [rt.u8, rt.u8]): rt.u8 => { - return _2207[0] ^ _2207[1]; + return x220; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2823: rt.u8): rt.u8 => { + const x221: rt.u8 = _2823; + const _6180: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6180.value, x221 ^ 10); + rt.refMutRelease(_6180); + return x221; + }), "index")); + rt.byteVecPush(out, (rt.peekablePeek(p5) !== undefined ? 1 : 0) ^ (rt.iterCount(p5) & 0xff)); + } + } + } else if (!other) { + if ((kind & 16) === 0) { + const _1931: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_1931 === 0) { + const z31: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2811: rt.u8): rt.u8 => { + const x208: rt.u8 = _2811; + const _6175: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6175.value, x208 ^ 11); + rt.refMutRelease(_6175); + return x208; + }), (_2812: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2813: rt.u8): rt.u8 => { + const x209: rt.u8 = _2813; + const _6176: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6176.value, x209 ^ 12); + rt.refMutRelease(_6176); + return x209; + })); + const _1947: rt.usize = rt.usizeRem(data.length, 8); + if (_1947 === 0) { + rt.byteVecPush(out, rt.iterCount(z31) & 0xff); + } else if (_1947 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z31), 238, (_2822: [rt.u8, rt.u8]): rt.u8 => { + return _2822[0] ^ _2822[1]; })); - } else if (_574 === 2) { - rt.iterForEach(z7, (p15: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _573(p15)); + } else if (_1947 === 2) { + rt.iterForEach(z31, (p27: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1946(p27)); }); - } else if (_574 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z7, (_2206: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2206[0] as rt.u32, _2206[1] as rt.u32); + } else if (_1947 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z31, (_2821: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2821[0] as rt.u32, _2821[1] as rt.u32); }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_574 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z7, (_2205: [rt.u8, rt.u8]): rt.u8 => { - return _2205[0] ^ _2205[1]; - }), "index", true, 1)), undefined, true); - } else if (_574 === 5) { - rt.byteVecPush(out, rt.iterFold(z7, 0, (acc4: rt.u8, p14: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc4, 3) ^ _573(p14); + } else if (_1947 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z31, (_2820: [rt.u8, rt.u8]): rt.u8 => { + return _2820[0] ^ _2820[1]; + }), "next")), undefined, true); + } else if (_1947 === 5) { + rt.byteVecPush(out, rt.iterFold(z31, 0, (acc10: rt.u8, p26: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc10, 3) ^ _1946(p26); })); - } else if (_574 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z7, (_2204: [rt.u8, rt.u8]): rt.u8 => { - return _2204[0] ^ _2204[1]; - }), (x146: rt.u8): boolean => { - return x146 === 0; + } else if (_1947 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z31, (_2819: [rt.u8, rt.u8]): rt.u8 => { + return _2819[0] ^ _2819[1]; + }), (x216: rt.u8): boolean => { + return x216 === 0; }) ? 1 : 0); } else { - const z8: rt.Iter<[rt.u8, rt.u8]> = z7; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z8, (_2199: [rt.u8, rt.u8]): boolean => { - return _2199[0] > _2199[1]; - }), 238, (i8: rt.usize): rt.u8 => { - return i8 & 0xff; + const z32: rt.Iter<[rt.u8, rt.u8]> = z31; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z32, (_2814: [rt.u8, rt.u8]): boolean => { + return _2814[0] > _2814[1]; + }), 238, (i12: rt.usize): rt.u8 => { + return i12 & 0xff; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z8, (_2200: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2200[0], 3) === 0; - }), 238, (_2201: [rt.u8, rt.u8]): rt.u8 => { - return _2201[0] ^ _2201[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z32, (_2815: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2815[0], 3) === 0; + }), 238, (_2816: [rt.u8, rt.u8]): rt.u8 => { + return _2816[0] ^ _2816[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z8, n), 238, (_2202: [rt.u8, rt.u8]): rt.u8 => { - return _2202[0] ^ _2202[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z32, n), 238, (_2817: [rt.u8, rt.u8]): rt.u8 => { + return _2817[0] ^ _2817[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z8.next()), 238, (_2203: [rt.u8, rt.u8]): rt.u8 => { - return _2203[0] ^ _2203[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z32.next()), 238, (_2818: [rt.u8, rt.u8]): rt.u8 => { + return _2818[0] ^ _2818[1]; })); } - } else { - const _612: rt.usize = rt.usizeRem(data.length, 8); - if (_612 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x135: rt.u8): rt.u8 => { - const _6176: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6176.value, x135 ^ 7); - rt.refMutRelease(_6176); - return x135; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x136: rt.u8): rt.u8 => { - const _6177: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6177.value, x136 ^ 8); - rt.refMutRelease(_6177); - return x136; - }), "index"), (_2198: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2198[0], 2) === 0; - })) & 0xff); - } else if (_612 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x132: rt.u8): rt.u8 => { - const _6174: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6174.value, x132 ^ 7); - rt.refMutRelease(_6174); - return x132; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x133: rt.u8): rt.u8 => { - const _6175: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6175.value, x133 ^ 8); - rt.refMutRelease(_6175); - return x133; - }), "index"), (_2197: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2197[0], _2197[1]); - })) & 0xff); - } else if (_612 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x129: rt.u8): rt.u8 => { - const _6172: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6172.value, x129 ^ 7); - rt.refMutRelease(_6172); - return x129; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x130: rt.u8): rt.u8 => { - const _6173: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6173.value, x130 ^ 8); - rt.refMutRelease(_6173); - return x130; - }), "index"), (_2196: [rt.u8, rt.u8]): boolean => { - return _2196[0] < 128; - })) & 0xff); - } else if (_612 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x127: rt.u8): rt.u8 => { - const _6170: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6170.value, x127 ^ 7); - rt.refMutRelease(_6170); - return x127; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x128: rt.u8): rt.u8 => { - const _6171: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6171.value, x128 ^ 8); - rt.refMutRelease(_6171); - return x128; - }), "index")), (_2195: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2195[0] & 0xff; - })), 238)); - } else if (_612 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x125: rt.u8): rt.u8 => { - const _6168: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6168.value, x125 ^ 7); - rt.refMutRelease(_6168); - return x125; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x126: rt.u8): rt.u8 => { - const _6169: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6169.value, x126 ^ 8); - rt.refMutRelease(_6169); - return x126; - }), "index"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_612 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x123: rt.u8): rt.u8 => { - const _6166: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6166.value, x123 ^ 7); - rt.refMutRelease(_6166); - return x123; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x124: rt.u8): rt.u8 => { - const _6167: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6167.value, x124 ^ 8); - rt.refMutRelease(_6167); - return x124; - }), "index"), n)) & 0xff); - } else if (_612 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x121: rt.u8): rt.u8 => { - const _6164: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6164.value, x121 ^ 7); - rt.refMutRelease(_6164); - return x121; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x122: rt.u8): rt.u8 => { - const _6165: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6165.value, x122 ^ 8); - rt.refMutRelease(_6165); - return x122; - }), "index"), n)) & 0xff); + } else if (_1931 === 1) { + const z33: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2799: rt.u8): rt.u8 => { + const x196: rt.u8 = _2799; + const _6171: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6171.value, x196 ^ 11); + rt.refMutRelease(_6171); + return x196; + }), (_2800: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2801: rt.u8): rt.u8 => { + const x197: rt.u8 = _2801; + const _6172: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6172.value, x197 ^ 12); + rt.refMutRelease(_6172); + return x197; + })); + const _1997: rt.usize = rt.usizeRem(data.length, 8); + if (_1997 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z33)) & 0xff); + } else if (_1997 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z33)), 238, (_2810: [rt.u8, rt.u8]): rt.u8 => { + return _2810[0] ^ _2810[1]; + })); + } else if (_1997 === 2) { + const _2004: (a0: [rt.u8, rt.u8]) => undefined = (p25: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _1996(p25)); + }; + rt.iterForEach(rt.iterBoxed(z33), _2004); + } else if (_1997 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z33), (_2809: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2809[0] as rt.u32, _2809[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_1997 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z33), (_2808: [rt.u8, rt.u8]): rt.u8 => { + return _2808[0] ^ _2808[1]; + }), "next")), undefined, true); + } else if (_1997 === 5) { + const _2012: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc9: rt.u8, p24: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc9, 3) ^ _1996(p24); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z33), 0, _2012)); + } else if (_1997 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z33), (_2807: [rt.u8, rt.u8]): rt.u8 => { + return _2807[0] ^ _2807[1]; + }), (x204: rt.u8): boolean => { + return x204 === 0; + }) ? 1 : 0); } else { - const p4: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), (x119: rt.u8): rt.u8 => { - const _6162: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6162.value, x119 ^ 7); - rt.refMutRelease(_6162); - return x119; - }), rt.iterMap(rt.byteVecIntoIter(rt.byteSliceToByteVec(b2)), (x120: rt.u8): rt.u8 => { - const _6163: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6163.value, x120 ^ 8); - rt.refMutRelease(_6163); - return x120; - }), "index")); - rt.byteVecPush(out, (rt.peekablePeek(p4) !== undefined ? 1 : 0) ^ (rt.iterCount(p4) & 0xff)); + const z34: rt.Iter<[rt.u8, rt.u8]> = z33; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z34), (_2802: [rt.u8, rt.u8]): boolean => { + return _2802[0] > _2802[1]; + }), 238, (i11: rt.usize): rt.u8 => { + return i11 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z34), (_2803: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2803[0], 3) === 0; + }), 238, (_2804: [rt.u8, rt.u8]): rt.u8 => { + return _2804[0] ^ _2804[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z34), n), 238, (_2805: [rt.u8, rt.u8]): rt.u8 => { + return _2805[0] ^ _2805[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z34.next()), 238, (_2806: [rt.u8, rt.u8]): rt.u8 => { + return _2806[0] ^ _2806[1]; + })); } - } - } else if ((kind & 16) === 0) { - const z9: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x107: rt.u8): rt.u8 => { - const _6158: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6158.value, x107 ^ 9); - rt.refMutRelease(_6158); - return x107; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2185: rt.u8): rt.u8 => { - const x108: rt.u8 = _2185; - const _6159: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6159.value, x108 ^ 10); - rt.refMutRelease(_6159); - return x108; - }), "index"); - const _751: rt.usize = rt.usizeRem(data.length, 8); - if (_751 === 0) { - rt.byteVecPush(out, rt.iterCount(z9) & 0xff); - } else if (_751 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z9), 238, (_2194: [rt.u8, rt.u8]): rt.u8 => { - return _2194[0] ^ _2194[1]; - })); - } else if (_751 === 2) { - rt.iterForEach(z9, (p13: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _750(p13)); - }); - } else if (_751 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z9, (_2193: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2193[0] as rt.u32, _2193[1] as rt.u32); - }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_751 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z9, (_2192: [rt.u8, rt.u8]): rt.u8 => { - return _2192[0] ^ _2192[1]; - }), "index", true, 1)), undefined, true); - } else if (_751 === 5) { - rt.byteVecPush(out, rt.iterFold(z9, 0, (acc3: rt.u8, p12: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc3, 3) ^ _750(p12); + } else if (_1931 === 2) { + const z35: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2787: rt.u8): rt.u8 => { + const x184: rt.u8 = _2787; + const _6167: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6167.value, x184 ^ 11); + rt.refMutRelease(_6167); + return x184; + }), (_2788: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2789: rt.u8): rt.u8 => { + const x185: rt.u8 = _2789; + const _6168: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6168.value, x185 ^ 12); + rt.refMutRelease(_6168); + return x185; + })), n); + const _2048: rt.usize = rt.usizeRem(data.length, 8); + if (_2048 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z35)) & 0xff); + } else if (_2048 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z35)), 238, (_2798: [rt.u8, rt.u8]): rt.u8 => { + return _2798[0] ^ _2798[1]; + })); + } else if (_2048 === 2) { + const _2055: (a0: [rt.u8, rt.u8]) => undefined = (p23: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2047(p23)); + }; + rt.iterForEach(rt.iterBoxed(z35), _2055); + } else if (_2048 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z35), (_2797: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2797[0] as rt.u32, _2797[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2048 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z35), (_2796: [rt.u8, rt.u8]): rt.u8 => { + return _2796[0] ^ _2796[1]; + }), "next")), undefined, true); + } else if (_2048 === 5) { + const _2063: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc8: rt.u8, p22: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc8, 3) ^ _2047(p22); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z35), 0, _2063)); + } else if (_2048 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z35), (_2795: [rt.u8, rt.u8]): rt.u8 => { + return _2795[0] ^ _2795[1]; + }), (x192: rt.u8): boolean => { + return x192 === 0; + }) ? 1 : 0); + } else { + const z36: rt.Iter<[rt.u8, rt.u8]> = z35; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z36), (_2790: [rt.u8, rt.u8]): boolean => { + return _2790[0] > _2790[1]; + }), 238, (i10: rt.usize): rt.u8 => { + return i10 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z36), (_2791: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2791[0], 3) === 0; + }), 238, (_2792: [rt.u8, rt.u8]): rt.u8 => { + return _2792[0] ^ _2792[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z36), n), 238, (_2793: [rt.u8, rt.u8]): rt.u8 => { + return _2793[0] ^ _2793[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z36.next()), 238, (_2794: [rt.u8, rt.u8]): rt.u8 => { + return _2794[0] ^ _2794[1]; + })); + } + } else if (_1931 === 3) { + const _2087: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2775: rt.u8): rt.u8 => { + const x172: rt.u8 = _2775; + const _6163: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6163.value, x172 ^ 11); + rt.refMutRelease(_6163); + return x172; + }), (_2776: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2777: rt.u8): rt.u8 => { + const x173: rt.u8 = _2777; + const _6164: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6164.value, x173 ^ 12); + rt.refMutRelease(_6164); + return x173; })); - } else if (_751 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z9, (_2191: [rt.u8, rt.u8]): rt.u8 => { - return _2191[0] ^ _2191[1]; - }), (x115: rt.u8): boolean => { - return x115 === 0; - }) ? 1 : 0); + const _2099: rt.usize = rt.usizeRem(data.length, 8); + if (_2099 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_2087))) & 0xff); + } else if (_2099 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_2087))), 238, (_2786: [rt.u8, rt.u8]): rt.u8 => { + return _2786[0] ^ _2786[1]; + })); + } else if (_2099 === 2) { + const _2106: (a0: [rt.u8, rt.u8]) => undefined = (p21: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2098(p21)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_2087)), _2106); + } else if (_2099 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_2087)), (_2785: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2785[0] as rt.u32, _2785[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2099 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_2087)), (_2784: [rt.u8, rt.u8]): rt.u8 => { + return _2784[0] ^ _2784[1]; + }), "next")), undefined, true); + } else if (_2099 === 5) { + const _2114: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc7: rt.u8, p20: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc7, 3) ^ _2098(p20); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_2087)), 0, _2114)); + } else if (_2099 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_2087)), (_2783: [rt.u8, rt.u8]): rt.u8 => { + return _2783[0] ^ _2783[1]; + }), (x180: rt.u8): boolean => { + return x180 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_2087), (_2778: [rt.u8, rt.u8]): boolean => { + return _2778[0] > _2778[1]; + }), 238, (i9: rt.usize): rt.u8 => { + return i9 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_2087), (_2779: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2779[0], 3) === 0; + }), 238, (_2780: [rt.u8, rt.u8]): rt.u8 => { + return _2780[0] ^ _2780[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_2087), n), 238, (_2781: [rt.u8, rt.u8]): rt.u8 => { + return _2781[0] ^ _2781[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_2087.next()), 238, (_2782: [rt.u8, rt.u8]): rt.u8 => { + return _2782[0] ^ _2782[1]; + })); + } } else { - const z10: rt.Iter<[rt.u8, rt.u8]> = z9; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z10, (_2186: [rt.u8, rt.u8]): boolean => { - return _2186[0] > _2186[1]; - }), 238, (i6: rt.usize): rt.u8 => { - return i6 & 0xff; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z10, (_2187: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2187[0], 3) === 0; - }), 238, (_2188: [rt.u8, rt.u8]): rt.u8 => { - return _2188[0] ^ _2188[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z10, n), 238, (_2189: [rt.u8, rt.u8]): rt.u8 => { - return _2189[0] ^ _2189[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z10.next()), 238, (_2190: [rt.u8, rt.u8]): rt.u8 => { - return _2190[0] ^ _2190[1]; - })); + const _2133: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2763: rt.u8): rt.u8 => { + const x160: rt.u8 = _2763; + const _6159: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6159.value, x160 ^ 11); + rt.refMutRelease(_6159); + return x160; + }), (_2764: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2765: rt.u8): rt.u8 => { + const x161: rt.u8 = _2765; + const _6160: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6160.value, x161 ^ 12); + rt.refMutRelease(_6160); + return x161; + })), n); + const _2146: rt.usize = rt.usizeRem(data.length, 8); + if (_2146 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_2133))) & 0xff); + } else if (_2146 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_2133))), 238, (_2774: [rt.u8, rt.u8]): rt.u8 => { + return _2774[0] ^ _2774[1]; + })); + } else if (_2146 === 2) { + const _2153: (a0: [rt.u8, rt.u8]) => undefined = (p19: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2145(p19)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_2133)), _2153); + } else if (_2146 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_2133)), (_2773: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2773[0] as rt.u32, _2773[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2146 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_2133)), (_2772: [rt.u8, rt.u8]): rt.u8 => { + return _2772[0] ^ _2772[1]; + }), "next")), undefined, true); + } else if (_2146 === 5) { + const _2161: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc6: rt.u8, p18: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc6, 3) ^ _2145(p18); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_2133)), 0, _2161)); + } else if (_2146 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_2133)), (_2771: [rt.u8, rt.u8]): rt.u8 => { + return _2771[0] ^ _2771[1]; + }), (x168: rt.u8): boolean => { + return x168 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_2133), (_2766: [rt.u8, rt.u8]): boolean => { + return _2766[0] > _2766[1]; + }), 238, (i8: rt.usize): rt.u8 => { + return i8 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_2133), (_2767: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2767[0], 3) === 0; + }), 238, (_2768: [rt.u8, rt.u8]): rt.u8 => { + return _2768[0] ^ _2768[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_2133), n), 238, (_2769: [rt.u8, rt.u8]): rt.u8 => { + return _2769[0] ^ _2769[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_2133.next()), 238, (_2770: [rt.u8, rt.u8]): rt.u8 => { + return _2770[0] ^ _2770[1]; + })); + } } } else { - const _789: rt.usize = rt.usizeRem(data.length, 8); - if (_789 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x104: rt.u8): rt.u8 => { - const _6156: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6156.value, x104 ^ 9); - rt.refMutRelease(_6156); - return x104; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2183: rt.u8): rt.u8 => { - const x105: rt.u8 = _2183; + const _2179: rt.usize = rt.usizeRem(data.length, 8); + if (_2179 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2758: rt.u8): rt.u8 => { + const x157: rt.u8 = _2758; const _6157: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6157.value, x105 ^ 10); + rt.byteVecPush(_6157.value, x157 ^ 11); rt.refMutRelease(_6157); - return x105; - }), "index"), (_2184: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2184[0], 2) === 0; + return x157; + }), (_2760: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2761: rt.u8): rt.u8 => { + const x158: rt.u8 = _2761; + const _6158: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6158.value, x158 ^ 12); + rt.refMutRelease(_6158); + return x158; + })), (_2762: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2762[0], 2) === 0; })) & 0xff); - } else if (_789 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x101: rt.u8): rt.u8 => { - const _6154: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6154.value, x101 ^ 9); - rt.refMutRelease(_6154); - return x101; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2181: rt.u8): rt.u8 => { - const x102: rt.u8 = _2181; + } else if (_2179 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2747: rt.u8): rt.u8 => { + const x154: rt.u8 = _2747; const _6155: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6155.value, x102 ^ 10); + rt.byteVecPush(_6155.value, x154 ^ 11); rt.refMutRelease(_6155); - return x102; - }), "index"), (_2182: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2182[0], _2182[1]); + return x154; + }), (_2749: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2750: rt.u8): rt.u8 => { + const x155: rt.u8 = _2750; + const _6156: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6156.value, x155 ^ 12); + rt.refMutRelease(_6156); + return x155; + })), (_2755: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_2755[0], _2755[1]); })) & 0xff); - } else if (_789 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x98: rt.u8): rt.u8 => { - const _6152: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6152.value, x98 ^ 9); - rt.refMutRelease(_6152); - return x98; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2179: rt.u8): rt.u8 => { - const x99: rt.u8 = _2179; + } else if (_2179 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2734: rt.u8): rt.u8 => { + const x151: rt.u8 = _2734; const _6153: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6153.value, x99 ^ 10); + rt.byteVecPush(_6153.value, x151 ^ 11); rt.refMutRelease(_6153); - return x99; - }), "index"), (_2180: [rt.u8, rt.u8]): boolean => { - return _2180[0] < 128; + return x151; + }), (_2739: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2744: rt.u8): rt.u8 => { + const x152: rt.u8 = _2744; + const _6154: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6154.value, x152 ^ 12); + rt.refMutRelease(_6154); + return x152; + })), (_2745: [rt.u8, rt.u8]): boolean => { + return _2745[0] < 128; })) & 0xff); - } else if (_789 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x96: rt.u8): rt.u8 => { - const _6150: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6150.value, x96 ^ 9); - rt.refMutRelease(_6150); - return x96; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2177: rt.u8): rt.u8 => { - const x97: rt.u8 = _2177; + } else if (_2179 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2716: rt.u8): rt.u8 => { + const x149: rt.u8 = _2716; const _6151: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6151.value, x97 ^ 10); + rt.byteVecPush(_6151.value, x149 ^ 11); rt.refMutRelease(_6151); - return x97; - }), "index")), (_2178: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2178[0] & 0xff; + return x149; + }), (_2721: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2726: rt.u8): rt.u8 => { + const x150: rt.u8 = _2726; + const _6152: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6152.value, x150 ^ 12); + rt.refMutRelease(_6152); + return x150; + }))), (_2727: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _2727[0] & 0xff; })), 238)); - } else if (_789 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x94: rt.u8): rt.u8 => { - const _6148: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6148.value, x94 ^ 9); - rt.refMutRelease(_6148); - return x94; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2176: rt.u8): rt.u8 => { - const x95: rt.u8 = _2176; + } else if (_2179 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2696: rt.u8): rt.u8 => { + const x147: rt.u8 = _2696; const _6149: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6149.value, x95 ^ 10); + rt.byteVecPush(_6149.value, x147 ^ 11); rt.refMutRelease(_6149); - return x95; - }), "index"), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_789 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x92: rt.u8): rt.u8 => { - const _6146: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6146.value, x92 ^ 9); - rt.refMutRelease(_6146); - return x92; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2175: rt.u8): rt.u8 => { - const x93: rt.u8 = _2175; + return x147; + }), (_2701: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2706: rt.u8): rt.u8 => { + const x148: rt.u8 = _2706; + const _6150: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6150.value, x148 ^ 12); + rt.refMutRelease(_6150); + return x148; + })), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); + } else if (_2179 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2674: rt.u8): rt.u8 => { + const x145: rt.u8 = _2674; const _6147: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6147.value, x93 ^ 10); + rt.byteVecPush(_6147.value, x145 ^ 11); rt.refMutRelease(_6147); - return x93; - }), "index"), n)) & 0xff); - } else if (_789 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x90: rt.u8): rt.u8 => { - const _6144: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6144.value, x90 ^ 9); - rt.refMutRelease(_6144); - return x90; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2174: rt.u8): rt.u8 => { - const x91: rt.u8 = _2174; + return x145; + }), (_2679: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2684: rt.u8): rt.u8 => { + const x146: rt.u8 = _2684; + const _6148: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6148.value, x146 ^ 12); + rt.refMutRelease(_6148); + return x146; + })), n)) & 0xff); + } else if (_2179 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2654: rt.u8): rt.u8 => { + const x143: rt.u8 = _2654; const _6145: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6145.value, x91 ^ 10); + rt.byteVecPush(_6145.value, x143 ^ 11); rt.refMutRelease(_6145); - return x91; - }), "index"), n)) & 0xff); + return x143; + }), (_2659: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2664: rt.u8): rt.u8 => { + const x144: rt.u8 = _2664; + const _6146: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6146.value, x144 ^ 12); + rt.refMutRelease(_6146); + return x144; + })), n)) & 0xff); } else { - const p5: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterMap(rt.iterSkip(rt.byteVecIntoIter(rt.byteSliceToByteVec(a2)), 1), (x88: rt.u8): rt.u8 => { - const _6142: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6142.value, x88 ^ 9); - rt.refMutRelease(_6142); - return x88; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2173: rt.u8): rt.u8 => { - const x89: rt.u8 = _2173; + const p6: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2633: rt.u8): rt.u8 => { + const x141: rt.u8 = _2633; const _6143: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6143.value, x89 ^ 10); + rt.byteVecPush(_6143.value, x141 ^ 11); rt.refMutRelease(_6143); - return x89; - }), "index")); - rt.byteVecPush(out, (rt.peekablePeek(p5) !== undefined ? 1 : 0) ^ (rt.iterCount(p5) & 0xff)); + return x141; + }), (_2638: rt.u8): boolean => { + return true; + }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2643: rt.u8): rt.u8 => { + const x142: rt.u8 = _2643; + const _6144: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6144.value, x142 ^ 12); + rt.refMutRelease(_6144); + return x142; + }))); + rt.byteVecPush(out, (rt.peekablePeek(p6) !== undefined ? 1 : 0) ^ (rt.iterCount(p6) & 0xff)); } } - } else if (!other) { - if ((kind & 16) === 0) { - const z11: rt.Iter<[rt.u8, rt.u8]> = rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2161: rt.u8): rt.u8 => { - const x76: rt.u8 = _2161; + } else if ((kind & 16) === 0) { + const _2298: rt.usize = rt.usizeRem(rt.usizeDiv(data.length, 8), 5); + if (_2298 === 0) { + const z37: rt.Iter<[rt.u8, rt.u8]> = rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2556: rt.u8): rt.u8 => { + const x127: rt.u8 = _2556; + const _6137: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6137.value, x127 ^ 13); + rt.refMutRelease(_6137); + return x127; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2564: rt.u8): rt.u8 => { + const x128: rt.u8 = _2564; const _6138: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6138.value, x76 ^ 11); + rt.byteVecPush(_6138.value, x128 ^ 14); rt.refMutRelease(_6138); - return x76; - }), (_2162: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2163: rt.u8): rt.u8 => { - const x77: rt.u8 = _2163; + return x128; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2567: rt.u8): rt.u8 => { + const x129: rt.u8 = _2567; const _6139: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6139.value, x77 ^ 12); + rt.byteVecPush(_6139.value, x129 ^ 15); rt.refMutRelease(_6139); - return x77; - })); - const _927: rt.usize = rt.usizeRem(data.length, 8); - if (_927 === 0) { - rt.byteVecPush(out, rt.iterCount(z11) & 0xff); - } else if (_927 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z11), 238, (_2172: [rt.u8, rt.u8]): rt.u8 => { - return _2172[0] ^ _2172[1]; + return x129; + }), "len"), (_2569: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2569[0][0] ^ _2569[1], _2569[0][1]] as [rt.u8, rt.u8]; + }); + const _2321: rt.usize = rt.usizeRem(data.length, 8); + if (_2321 === 0) { + rt.byteVecPush(out, rt.iterCount(z37) & 0xff); + } else if (_2321 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z37), 238, (_2623: [rt.u8, rt.u8]): rt.u8 => { + return _2623[0] ^ _2623[1]; })); - } else if (_927 === 2) { - rt.iterForEach(z11, (p11: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _926(p11)); + } else if (_2321 === 2) { + rt.iterForEach(z37, (p17: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2320(p17)); }); - } else if (_927 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z11, (_2171: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2171[0] as rt.u32, _2171[1] as rt.u32); + } else if (_2321 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z37, (_2618: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2618[0] as rt.u32, _2618[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2321 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z37, (_2613: [rt.u8, rt.u8]): rt.u8 => { + return _2613[0] ^ _2613[1]; + }), undefined, true)), undefined, true); + } else if (_2321 === 5) { + rt.byteVecPush(out, rt.iterFold(z37, 0, (acc5: rt.u8, p16: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc5, 3) ^ _2320(p16); + })); + } else if (_2321 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(z37, (_2603: [rt.u8, rt.u8]): rt.u8 => { + return _2603[0] ^ _2603[1]; + }), (x137: rt.u8): boolean => { + return x137 === 0; + }) ? 1 : 0); + } else { + const z38: rt.Iter<[rt.u8, rt.u8]> = z37; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z38, (_2572: [rt.u8, rt.u8]): boolean => { + return _2572[0] > _2572[1]; + }), 238, (i6: rt.usize): rt.u8 => { + return i6 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z38, (_2575: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2575[0], 3) === 0; + }), 238, (_2578: [rt.u8, rt.u8]): rt.u8 => { + return _2578[0] ^ _2578[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z38, n), 238, (_2593: [rt.u8, rt.u8]): rt.u8 => { + return _2593[0] ^ _2593[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z38.next()), 238, (_2598: [rt.u8, rt.u8]): rt.u8 => { + return _2598[0] ^ _2598[1]; + })); + } + } else if (_2298 === 1) { + const z39: rt.Iter<[rt.u8, rt.u8]> = rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2487: rt.u8): rt.u8 => { + const x113: rt.u8 = _2487; + const _6131: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6131.value, x113 ^ 13); + rt.refMutRelease(_6131); + return x113; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2492: rt.u8): rt.u8 => { + const x114: rt.u8 = _2492; + const _6132: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6132.value, x114 ^ 14); + rt.refMutRelease(_6132); + return x114; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2502: rt.u8): rt.u8 => { + const x115: rt.u8 = _2502; + const _6133: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6133.value, x115 ^ 15); + rt.refMutRelease(_6133); + return x115; + }), "len"), (_2510: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2510[0][0] ^ _2510[1], _2510[0][1]] as [rt.u8, rt.u8]; + }); + const _2378: rt.usize = rt.usizeRem(data.length, 8); + if (_2378 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z39)) & 0xff); + } else if (_2378 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z39)), 238, (_2546: [rt.u8, rt.u8]): rt.u8 => { + return _2546[0] ^ _2546[1]; + })); + } else if (_2378 === 2) { + const _2385: (a0: [rt.u8, rt.u8]) => undefined = (p15: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2377(p15)); + }; + rt.iterForEach(rt.iterBoxed(z39), _2385); + } else if (_2378 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z39), (_2541: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2541[0] as rt.u32, _2541[1] as rt.u32); }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_927 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z11, (_2170: [rt.u8, rt.u8]): rt.u8 => { - return _2170[0] ^ _2170[1]; + } else if (_2378 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z39), (_2536: [rt.u8, rt.u8]): rt.u8 => { + return _2536[0] ^ _2536[1]; }), "next")), undefined, true); - } else if (_927 === 5) { - rt.byteVecPush(out, rt.iterFold(z11, 0, (acc2: rt.u8, p10: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc2, 3) ^ _926(p10); + } else if (_2378 === 5) { + const _2393: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc4: rt.u8, p14: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc4, 3) ^ _2377(p14); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z39), 0, _2393)); + } else if (_2378 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z39), (_2527: [rt.u8, rt.u8]): rt.u8 => { + return _2527[0] ^ _2527[1]; + }), (x123: rt.u8): boolean => { + return x123 === 0; + }) ? 1 : 0); + } else { + const z40: rt.Iter<[rt.u8, rt.u8]> = z39; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z40), (_2513: [rt.u8, rt.u8]): boolean => { + return _2513[0] > _2513[1]; + }), 238, (i5: rt.usize): rt.u8 => { + return i5 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z40), (_2515: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2515[0], 3) === 0; + }), 238, (_2518: [rt.u8, rt.u8]): rt.u8 => { + return _2518[0] ^ _2518[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z40), n), 238, (_2521: [rt.u8, rt.u8]): rt.u8 => { + return _2521[0] ^ _2521[1]; })); - } else if (_927 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z11, (_2169: [rt.u8, rt.u8]): rt.u8 => { - return _2169[0] ^ _2169[1]; - }), (x84: rt.u8): boolean => { - return x84 === 0; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z40.next()), 238, (_2524: [rt.u8, rt.u8]): rt.u8 => { + return _2524[0] ^ _2524[1]; + })); + } + } else if (_2298 === 2) { + const z41: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2452: rt.u8): rt.u8 => { + const x99: rt.u8 = _2452; + const _6125: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6125.value, x99 ^ 13); + rt.refMutRelease(_6125); + return x99; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2455: rt.u8): rt.u8 => { + const x100: rt.u8 = _2455; + const _6126: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6126.value, x100 ^ 14); + rt.refMutRelease(_6126); + return x100; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2457: rt.u8): rt.u8 => { + const x101: rt.u8 = _2457; + const _6127: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6127.value, x101 ^ 15); + rt.refMutRelease(_6127); + return x101; + }), "len"), (_2458: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2458[0][0] ^ _2458[1], _2458[0][1]] as [rt.u8, rt.u8]; + }), n); + const _2436: rt.usize = rt.usizeRem(data.length, 8); + if (_2436 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBoxed(z41)) & 0xff); + } else if (_2436 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBoxed(z41)), 238, (_2482: [rt.u8, rt.u8]): rt.u8 => { + return _2482[0] ^ _2482[1]; + })); + } else if (_2436 === 2) { + const _2443: (a0: [rt.u8, rt.u8]) => undefined = (p13: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2435(p13)); + }; + rt.iterForEach(rt.iterBoxed(z41), _2443); + } else if (_2436 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBoxed(z41), (_2474: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2474[0] as rt.u32, _2474[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2436 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBoxed(z41), (_2473: [rt.u8, rt.u8]): rt.u8 => { + return _2473[0] ^ _2473[1]; + }), "next")), undefined, true); + } else if (_2436 === 5) { + const _2451: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc3: rt.u8, p12: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc3, 3) ^ _2435(p12); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(z41), 0, _2451)); + } else if (_2436 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBoxed(z41), (_2470: [rt.u8, rt.u8]): rt.u8 => { + return _2470[0] ^ _2470[1]; + }), (x109: rt.u8): boolean => { + return x109 === 0; }) ? 1 : 0); } else { - const z12: rt.Iter<[rt.u8, rt.u8]> = z11; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z12, (_2164: [rt.u8, rt.u8]): boolean => { - return _2164[0] > _2164[1]; + const z42: rt.Iter<[rt.u8, rt.u8]> = z41; + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(z42), (_2461: [rt.u8, rt.u8]): boolean => { + return _2461[0] > _2461[1]; }), 238, (i4: rt.usize): rt.u8 => { return i4 & 0xff; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z12, (_2165: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2165[0], 3) === 0; - }), 238, (_2166: [rt.u8, rt.u8]): rt.u8 => { - return _2166[0] ^ _2166[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(z42), (_2462: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2462[0], 3) === 0; + }), 238, (_2465: [rt.u8, rt.u8]): rt.u8 => { + return _2465[0] ^ _2465[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z12, n), 238, (_2167: [rt.u8, rt.u8]): rt.u8 => { - return _2167[0] ^ _2167[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(z42), n), 238, (_2466: [rt.u8, rt.u8]): rt.u8 => { + return _2466[0] ^ _2466[1]; })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z12.next()), 238, (_2168: [rt.u8, rt.u8]): rt.u8 => { - return _2168[0] ^ _2168[1]; + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z42.next()), 238, (_2469: [rt.u8, rt.u8]): rt.u8 => { + return _2469[0] ^ _2469[1]; })); } - } else { - const _965: rt.usize = rt.usizeRem(data.length, 8); - if (_965 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2157: rt.u8): rt.u8 => { - const x73: rt.u8 = _2157; - const _6136: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6136.value, x73 ^ 11); - rt.refMutRelease(_6136); - return x73; - }), (_2158: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2159: rt.u8): rt.u8 => { - const x74: rt.u8 = _2159; - const _6137: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6137.value, x74 ^ 12); - rt.refMutRelease(_6137); - return x74; - })), (_2160: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2160[0], 2) === 0; - })) & 0xff); - } else if (_965 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2153: rt.u8): rt.u8 => { - const x70: rt.u8 = _2153; - const _6134: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6134.value, x70 ^ 11); - rt.refMutRelease(_6134); - return x70; - }), (_2154: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2155: rt.u8): rt.u8 => { - const x71: rt.u8 = _2155; - const _6135: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6135.value, x71 ^ 12); - rt.refMutRelease(_6135); - return x71; - })), (_2156: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2156[0], _2156[1]); - })) & 0xff); - } else if (_965 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2149: rt.u8): rt.u8 => { - const x67: rt.u8 = _2149; - const _6132: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6132.value, x67 ^ 11); - rt.refMutRelease(_6132); - return x67; - }), (_2150: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2151: rt.u8): rt.u8 => { - const x68: rt.u8 = _2151; - const _6133: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6133.value, x68 ^ 12); - rt.refMutRelease(_6133); - return x68; - })), (_2152: [rt.u8, rt.u8]): boolean => { - return _2152[0] < 128; - })) & 0xff); - } else if (_965 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2145: rt.u8): rt.u8 => { - const x65: rt.u8 = _2145; - const _6130: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6130.value, x65 ^ 11); - rt.refMutRelease(_6130); - return x65; - }), (_2146: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2147: rt.u8): rt.u8 => { - const x66: rt.u8 = _2147; - const _6131: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6131.value, x66 ^ 12); - rt.refMutRelease(_6131); - return x66; - }))), (_2148: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2148[0] & 0xff; - })), 238)); - } else if (_965 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2142: rt.u8): rt.u8 => { - const x63: rt.u8 = _2142; - const _6128: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6128.value, x63 ^ 11); - rt.refMutRelease(_6128); - return x63; - }), (_2143: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2144: rt.u8): rt.u8 => { - const x64: rt.u8 = _2144; - const _6129: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6129.value, x64 ^ 12); - rt.refMutRelease(_6129); - return x64; - })), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_965 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2139: rt.u8): rt.u8 => { - const x61: rt.u8 = _2139; - const _6126: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6126.value, x61 ^ 11); - rt.refMutRelease(_6126); - return x61; - }), (_2140: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2141: rt.u8): rt.u8 => { - const x62: rt.u8 = _2141; - const _6127: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6127.value, x62 ^ 12); - rt.refMutRelease(_6127); - return x62; - })), n)) & 0xff); - } else if (_965 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2136: rt.u8): rt.u8 => { - const x59: rt.u8 = _2136; - const _6124: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6124.value, x59 ^ 11); - rt.refMutRelease(_6124); - return x59; - }), (_2137: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2138: rt.u8): rt.u8 => { - const x60: rt.u8 = _2138; - const _6125: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6125.value, x60 ^ 12); - rt.refMutRelease(_6125); - return x60; - })), n)) & 0xff); + } else if (_2298 === 3) { + const _2475: rt.Iter<[rt.u8, rt.u8]> = rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2400: rt.u8): rt.u8 => { + const x85: rt.u8 = _2400; + const _6119: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6119.value, x85 ^ 13); + rt.refMutRelease(_6119); + return x85; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2403: rt.u8): rt.u8 => { + const x86: rt.u8 = _2403; + const _6120: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6120.value, x86 ^ 14); + rt.refMutRelease(_6120); + return x86; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2404: rt.u8): rt.u8 => { + const x87: rt.u8 = _2404; + const _6121: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6121.value, x87 ^ 15); + rt.refMutRelease(_6121); + return x87; + }), "len"), (_2407: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2407[0][0] ^ _2407[1], _2407[0][1]] as [rt.u8, rt.u8]; + }); + const _2494: rt.usize = rt.usizeRem(data.length, 8); + if (_2494 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_2475))) & 0xff); + } else if (_2494 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_2475))), 238, (_2444: [rt.u8, rt.u8]): rt.u8 => { + return _2444[0] ^ _2444[1]; + })); + } else if (_2494 === 2) { + const _2501: (a0: [rt.u8, rt.u8]) => undefined = (p11: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2493(p11)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_2475)), _2501); + } else if (_2494 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_2475)), (_2434: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2434[0] as rt.u32, _2434[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2494 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_2475)), (_2429: [rt.u8, rt.u8]): rt.u8 => { + return _2429[0] ^ _2429[1]; + }), "next")), undefined, true); + } else if (_2494 === 5) { + const _2509: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc2: rt.u8, p10: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc2, 3) ^ _2493(p10); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_2475)), 0, _2509)); + } else if (_2494 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_2475)), (_2424: [rt.u8, rt.u8]): rt.u8 => { + return _2424[0] ^ _2424[1]; + }), (x95: rt.u8): boolean => { + return x95 === 0; + }) ? 1 : 0); } else { - const p6: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterZip(rt.iterFilter(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2133: rt.u8): rt.u8 => { - const x57: rt.u8 = _2133; - const _6122: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6122.value, x57 ^ 11); - rt.refMutRelease(_6122); - return x57; - }), (_2134: rt.u8): boolean => { - return true; - }), rt.iterMap(rt.iterSlice(rt.byteSliceView(b2)), (_2135: rt.u8): rt.u8 => { - const x58: rt.u8 = _2135; - const _6123: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6123.value, x58 ^ 12); - rt.refMutRelease(_6123); - return x58; - }))); - rt.byteVecPush(out, (rt.peekablePeek(p6) !== undefined ? 1 : 0) ^ (rt.iterCount(p6) & 0xff)); + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_2475), (_2408: [rt.u8, rt.u8]): boolean => { + return _2408[0] > _2408[1]; + }), 238, (i3: rt.usize): rt.u8 => { + return i3 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_2475), (_2411: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2411[0], 3) === 0; + }), 238, (_2412: [rt.u8, rt.u8]): rt.u8 => { + return _2412[0] ^ _2412[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_2475), n), 238, (_2415: [rt.u8, rt.u8]): rt.u8 => { + return _2415[0] ^ _2415[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_2475.next()), 238, (_2416: [rt.u8, rt.u8]): rt.u8 => { + return _2416[0] ^ _2416[1]; + })); } - } - } else if ((kind & 16) === 0) { - const z13: rt.Iter<[rt.u8, rt.u8]> = rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2120: rt.u8): rt.u8 => { - const x43: rt.u8 = _2120; - const _6116: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6116.value, x43 ^ 13); - rt.refMutRelease(_6116); - return x43; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2121: rt.u8): rt.u8 => { - const x44: rt.u8 = _2121; - const _6117: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6117.value, x44 ^ 14); - rt.refMutRelease(_6117); - return x44; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2122: rt.u8): rt.u8 => { - const x45: rt.u8 = _2122; - const _6118: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6118.value, x45 ^ 15); - rt.refMutRelease(_6118); - return x45; - }), "len"), (_2123: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_2123[0][0] ^ _2123[1], _2123[0][1]] as [rt.u8, rt.u8]; - }); - const _1102: rt.usize = rt.usizeRem(data.length, 8); - if (_1102 === 0) { - rt.byteVecPush(out, rt.iterCount(z13) & 0xff); - } else if (_1102 === 1) { - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(z13), 238, (_2132: [rt.u8, rt.u8]): rt.u8 => { - return _2132[0] ^ _2132[1]; - })); - } else if (_1102 === 2) { - rt.iterForEach(z13, (p9: [rt.u8, rt.u8]): undefined => { - rt.byteVecPush(out, _1101(p9)); - }); - } else if (_1102 === 3) { - rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(z13, (_2131: [rt.u8, rt.u8]): rt.u32 => { - return rt.u32Add(_2131[0] as rt.u32, _2131[1] as rt.u32); - }), rt.u32Add, 0)).reverse()), undefined, true); - } else if (_1102 === 4) { - rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(z13, (_2130: [rt.u8, rt.u8]): rt.u8 => { - return _2130[0] ^ _2130[1]; - }), undefined, true)), undefined, true); - } else if (_1102 === 5) { - rt.byteVecPush(out, rt.iterFold(z13, 0, (acc: rt.u8, p8: [rt.u8, rt.u8]): rt.u8 => { - return rt.u8WrappingMul(acc, 3) ^ _1101(p8); - })); - } else if (_1102 === 6) { - rt.byteVecPush(out, rt.iterAny(rt.iterMap(z13, (_2129: [rt.u8, rt.u8]): rt.u8 => { - return _2129[0] ^ _2129[1]; - }), (x53: rt.u8): boolean => { - return x53 === 0; - }) ? 1 : 0); } else { - const z14: rt.Iter<[rt.u8, rt.u8]> = z13; - rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(z14, (_2124: [rt.u8, rt.u8]): boolean => { - return _2124[0] > _2124[1]; - }), 238, (i2: rt.usize): rt.u8 => { - return i2 & 0xff; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(z14, (_2125: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2125[0], 3) === 0; - }), 238, (_2126: [rt.u8, rt.u8]): rt.u8 => { - return _2126[0] ^ _2126[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(z14, n), 238, (_2127: [rt.u8, rt.u8]): rt.u8 => { - return _2127[0] ^ _2127[1]; - })); - rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(z14.next()), 238, (_2128: [rt.u8, rt.u8]): rt.u8 => { - return _2128[0] ^ _2128[1]; - })); - } - } else { - const _1140: rt.usize = rt.usizeRem(data.length, 8); - if (_1140 === 0) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2115: rt.u8): rt.u8 => { - const x38: rt.u8 = _2115; - const _6112: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6112.value, x38 ^ 13); - rt.refMutRelease(_6112); - return x38; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2116: rt.u8): rt.u8 => { - const x39: rt.u8 = _2116; + const _2528: rt.Iter<[rt.u8, rt.u8]> = rt.iterSkip(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2350: rt.u8): rt.u8 => { + const x71: rt.u8 = _2350; const _6113: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6113.value, x39 ^ 14); + rt.byteVecPush(_6113.value, x71 ^ 13); rt.refMutRelease(_6113); - return x39; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2117: rt.u8): rt.u8 => { - const x40: rt.u8 = _2117; + return x71; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2351: rt.u8): rt.u8 => { + const x72: rt.u8 = _2351; const _6114: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6114.value, x40 ^ 15); + rt.byteVecPush(_6114.value, x72 ^ 14); rt.refMutRelease(_6114); - return x40; - }), "len"), (_2118: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_2118[0][0] ^ _2118[1], _2118[0][1]] as [rt.u8, rt.u8]; - }), (_2119: [rt.u8, rt.u8]): boolean => { - return rt.u8Rem(_2119[0], 2) === 0; - })) & 0xff); - } else if (_1140 === 1) { - rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2110: rt.u8): rt.u8 => { - const x33: rt.u8 = _2110; - const _6108: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6108.value, x33 ^ 13); - rt.refMutRelease(_6108); - return x33; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2111: rt.u8): rt.u8 => { - const x34: rt.u8 = _2111; + return x72; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2354: rt.u8): rt.u8 => { + const x73: rt.u8 = _2354; + const _6115: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6115.value, x73 ^ 15); + rt.refMutRelease(_6115); + return x73; + }), "len"), (_2355: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2355[0][0] ^ _2355[1], _2355[0][1]] as [rt.u8, rt.u8]; + }), n); + const _2548: rt.usize = rt.usizeRem(data.length, 8); + if (_2548 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterBorrow(rt.iterBoxed(_2528))) & 0xff); + } else if (_2548 === 1) { + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterLast(rt.iterBorrow(rt.iterBoxed(_2528))), 238, (_2399: [rt.u8, rt.u8]): rt.u8 => { + return _2399[0] ^ _2399[1]; + })); + } else if (_2548 === 2) { + const _2555: (a0: [rt.u8, rt.u8]) => undefined = (p9: [rt.u8, rt.u8]): undefined => { + rt.byteVecPush(out, _2547(p9)); + }; + rt.iterForEach(rt.iterBorrow(rt.iterBoxed(_2528)), _2555); + } else if (_2548 === 3) { + rt.iterExtendBytes(out, rt.iterSlice(rt.u32ToBeBytes(rt.iterSum(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_2528)), (_2397: [rt.u8, rt.u8]): rt.u32 => { + return rt.u32Add(_2397[0] as rt.u32, _2397[1] as rt.u32); + }), rt.u32Add, 0)).reverse()), undefined, true); + } else if (_2548 === 4) { + rt.iterExtendBytes(out, rt.byteVecIntoIter(rt.iterToByteVec(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_2528)), (_2394: [rt.u8, rt.u8]): rt.u8 => { + return _2394[0] ^ _2394[1]; + }), "next")), undefined, true); + } else if (_2548 === 5) { + const _2563: (a0: rt.u8, a1: [rt.u8, rt.u8]) => rt.u8 = (acc: rt.u8, p8: [rt.u8, rt.u8]): rt.u8 => { + return rt.u8WrappingMul(acc, 3) ^ _2547(p8); + }; + rt.byteVecPush(out, rt.iterFold(rt.iterBorrow(rt.iterBoxed(_2528)), 0, _2563)); + } else if (_2548 === 6) { + rt.byteVecPush(out, rt.iterAny(rt.iterMap(rt.iterBorrow(rt.iterBoxed(_2528)), (_2386: [rt.u8, rt.u8]): rt.u8 => { + return _2386[0] ^ _2386[1]; + }), (x81: rt.u8): boolean => { + return x81 === 0; + }) ? 1 : 0); + } else { + rt.byteVecPush(out, option_mapOr$02k4ito(rt.iterPosition(rt.iterBoxed(_2528), (_2358: [rt.u8, rt.u8]): boolean => { + return _2358[0] > _2358[1]; + }), 238, (i2: rt.usize): rt.u8 => { + return i2 & 0xff; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterFind(rt.iterBoxed(_2528), (_2359: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2359[0], 3) === 0; + }), 238, (_2366: [rt.u8, rt.u8]): rt.u8 => { + return _2366[0] ^ _2366[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterNth(rt.iterBoxed(_2528), n), 238, (_2371: [rt.u8, rt.u8]): rt.u8 => { + return _2371[0] ^ _2371[1]; + })); + rt.byteVecPush(out, option_mapOr$0mmpeqx(rt.iterToOption(_2528.next()), 238, (_2376: [rt.u8, rt.u8]): rt.u8 => { + return _2376[0] ^ _2376[1]; + })); + } + } + } else { + const _2581: rt.usize = rt.usizeRem(data.length, 8); + if (_2581 === 0) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilter(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2340: rt.u8): rt.u8 => { + const x66: rt.u8 = _2340; const _6109: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6109.value, x34 ^ 14); + rt.byteVecPush(_6109.value, x66 ^ 13); rt.refMutRelease(_6109); - return x34; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2112: rt.u8): rt.u8 => { - const x35: rt.u8 = _2112; + return x66; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2342: rt.u8): rt.u8 => { + const x67: rt.u8 = _2342; const _6110: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6110.value, x35 ^ 15); + rt.byteVecPush(_6110.value, x67 ^ 14); rt.refMutRelease(_6110); - return x35; - }), "len"), (_2113: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_2113[0][0] ^ _2113[1], _2113[0][1]] as [rt.u8, rt.u8]; - }), (_2114: [rt.u8, rt.u8]): rt.u8 | undefined => { - return rt.u8CheckedSub(_2114[0], _2114[1]); + return x67; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2343: rt.u8): rt.u8 => { + const x68: rt.u8 = _2343; + const _6111: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6111.value, x68 ^ 15); + rt.refMutRelease(_6111); + return x68; + }), "len"), (_2346: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2346[0][0] ^ _2346[1], _2346[0][1]] as [rt.u8, rt.u8]; + }), (_2347: [rt.u8, rt.u8]): boolean => { + return rt.u8Rem(_2347[0], 2) === 0; })) & 0xff); - } else if (_1140 === 2) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2105: rt.u8): rt.u8 => { - const x28: rt.u8 = _2105; - const _6104: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6104.value, x28 ^ 13); - rt.refMutRelease(_6104); - return x28; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2106: rt.u8): rt.u8 => { - const x29: rt.u8 = _2106; + } else if (_2581 === 1) { + rt.byteVecPush(out, rt.iterCount(rt.iterFilterMap(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2309: rt.u8): rt.u8 => { + const x61: rt.u8 = _2309; const _6105: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6105.value, x29 ^ 14); + rt.byteVecPush(_6105.value, x61 ^ 13); rt.refMutRelease(_6105); - return x29; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2107: rt.u8): rt.u8 => { - const x30: rt.u8 = _2107; + return x61; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2314: rt.u8): rt.u8 => { + const x62: rt.u8 = _2314; const _6106: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6106.value, x30 ^ 15); + rt.byteVecPush(_6106.value, x62 ^ 14); rt.refMutRelease(_6106); - return x30; - }), "len"), (_2108: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_2108[0][0] ^ _2108[1], _2108[0][1]] as [rt.u8, rt.u8]; - }), (_2109: [rt.u8, rt.u8]): boolean => { - return _2109[0] < 128; + return x62; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2319: rt.u8): rt.u8 => { + const x63: rt.u8 = _2319; + const _6107: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6107.value, x63 ^ 15); + rt.refMutRelease(_6107); + return x63; + }), "len"), (_2329: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2329[0][0] ^ _2329[1], _2329[0][1]] as [rt.u8, rt.u8]; + }), (_2337: [rt.u8, rt.u8]): rt.u8 | undefined => { + return rt.u8CheckedSub(_2337[0], _2337[1]); })) & 0xff); - } else if (_1140 === 3) { - rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2100: rt.u8): rt.u8 => { - const x24: rt.u8 = _2100; - const _6100: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6100.value, x24 ^ 13); - rt.refMutRelease(_6100); - return x24; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2101: rt.u8): rt.u8 => { - const x25: rt.u8 = _2101; + } else if (_2581 === 2) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkipWhile(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2287: rt.u8): rt.u8 => { + const x56: rt.u8 = _2287; const _6101: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6101.value, x25 ^ 14); + rt.byteVecPush(_6101.value, x56 ^ 13); rt.refMutRelease(_6101); - return x25; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2102: rt.u8): rt.u8 => { - const x26: rt.u8 = _2102; + return x56; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2289: rt.u8): rt.u8 => { + const x57: rt.u8 = _2289; const _6102: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_6102.value, x26 ^ 15); + rt.byteVecPush(_6102.value, x57 ^ 14); rt.refMutRelease(_6102); - return x26; - }), "len"), (_2103: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_2103[0][0] ^ _2103[1], _2103[0][1]] as [rt.u8, rt.u8]; - })), (_2104: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { - return _2104[0] & 0xff; + return x57; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2291: rt.u8): rt.u8 => { + const x58: rt.u8 = _2291; + const _6103: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_6103.value, x58 ^ 15); + rt.refMutRelease(_6103); + return x58; + }), "len"), (_2292: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2292[0][0] ^ _2292[1], _2292[0][1]] as [rt.u8, rt.u8]; + }), (_2303: [rt.u8, rt.u8]): boolean => { + return _2303[0] < 128; + })) & 0xff); + } else if (_2581 === 3) { + rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterLast(rt.iterMap(rt.iterEnumerate(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2271: rt.u8): rt.u8 => { + const x52: rt.u8 = _2271; + const _682: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_682.value, x52 ^ 13); + rt.refMutRelease(_682); + return x52; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2275: rt.u8): rt.u8 => { + const x53: rt.u8 = _2275; + const _692: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_692.value, x53 ^ 14); + rt.refMutRelease(_692); + return x53; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2276: rt.u8): rt.u8 => { + const x54: rt.u8 = _2276; + const _697: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_697.value, x54 ^ 15); + rt.refMutRelease(_697); + return x54; + }), "len"), (_2282: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2282[0][0] ^ _2282[1], _2282[0][1]] as [rt.u8, rt.u8]; + })), (_2286: [rt.usize, [rt.u8, rt.u8]]): rt.u8 => { + return _2286[0] & 0xff; })), 238)); - } else if (_1140 === 4) { - rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_279: rt.u8): rt.u8 => { - const x20: rt.u8 = _279; - const _671: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_671.value, x20 ^ 13); - rt.refMutRelease(_671); - return x20; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_284: rt.u8): rt.u8 => { - const x21: rt.u8 = _284; - const _680: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_680.value, x21 ^ 14); - rt.refMutRelease(_680); - return x21; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_294: rt.u8): rt.u8 => { - const x22: rt.u8 = _294; - const _685: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_685.value, x22 ^ 15); - rt.refMutRelease(_685); - return x22; - }), "len"), (_299: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_299[0][0] ^ _299[1], _299[0][1]] as [rt.u8, rt.u8]; + } else if (_2581 === 4) { + rt.byteVecPush(out, rt.iterCount(rt.iterChain(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2243: rt.u8): rt.u8 => { + const x48: rt.u8 = _2243; + const _654: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_654.value, x48 ^ 13); + rt.refMutRelease(_654); + return x48; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2247: rt.u8): rt.u8 => { + const x49: rt.u8 = _2247; + const _663: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_663.value, x49 ^ 14); + rt.refMutRelease(_663); + return x49; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2258: rt.u8): rt.u8 => { + const x50: rt.u8 = _2258; + const _668: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_668.value, x50 ^ 15); + rt.refMutRelease(_668); + return x50; + }), "len"), (_2262: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2262[0][0] ^ _2262[1], _2262[0][1]] as [rt.u8, rt.u8]; }), rt.iterSlice([[1, 2] as [rt.u8, rt.u8]]))) & 0xff); - } else if (_1140 === 5) { - rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_251: rt.u8): rt.u8 => { - const x16: rt.u8 = _251; - const _642: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_642.value, x16 ^ 13); - rt.refMutRelease(_642); - return x16; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_256: rt.u8): rt.u8 => { - const x17: rt.u8 = _256; - const _651: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_651.value, x17 ^ 14); - rt.refMutRelease(_651); - return x17; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_265: rt.u8): rt.u8 => { - const x18: rt.u8 = _265; - const _656: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_656.value, x18 ^ 15); - rt.refMutRelease(_656); - return x18; - }), "len"), (_270: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_270[0][0] ^ _270[1], _270[0][1]] as [rt.u8, rt.u8]; + } else if (_2581 === 5) { + rt.byteVecPush(out, rt.iterCount(rt.iterTake(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2216: rt.u8): rt.u8 => { + const x44: rt.u8 = _2216; + const _629: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_629.value, x44 ^ 13); + rt.refMutRelease(_629); + return x44; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2220: rt.u8): rt.u8 => { + const x45: rt.u8 = _2220; + const _632: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_632.value, x45 ^ 14); + rt.refMutRelease(_632); + return x45; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2230: rt.u8): rt.u8 => { + const x46: rt.u8 = _2230; + const _635: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_635.value, x46 ^ 15); + rt.refMutRelease(_635); + return x46; + }), "len"), (_2234: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2234[0][0] ^ _2234[1], _2234[0][1]] as [rt.u8, rt.u8]; }), n)) & 0xff); - } else if (_1140 === 6) { - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_232: rt.u8): rt.u8 => { - const x12: rt.u8 = _232; - const _611: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_611.value, x12 ^ 13); - rt.refMutRelease(_611); - return x12; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_235: rt.u8): rt.u8 => { - const x13: rt.u8 = _235; - const _623: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_623.value, x13 ^ 14); - rt.refMutRelease(_623); - return x13; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_236: rt.u8): rt.u8 => { - const x14: rt.u8 = _236; - const _628: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_628.value, x14 ^ 15); - rt.refMutRelease(_628); - return x14; - }), "len"), (_239: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_239[0][0] ^ _239[1], _239[0][1]] as [rt.u8, rt.u8]; + } else if (_2581 === 6) { + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2190: rt.u8): rt.u8 => { + const x40: rt.u8 = _2190; + const _613: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_613.value, x40 ^ 13); + rt.refMutRelease(_613); + return x40; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2194: rt.u8): rt.u8 => { + const x41: rt.u8 = _2194; + const _621: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_621.value, x41 ^ 14); + rt.refMutRelease(_621); + return x41; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2203: rt.u8): rt.u8 => { + const x42: rt.u8 = _2203; + const _624: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_624.value, x42 ^ 15); + rt.refMutRelease(_624); + return x42; + }), "len"), (_2207: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2207[0][0] ^ _2207[1], _2207[0][1]] as [rt.u8, rt.u8]; }), n)) & 0xff); } else { - const p7: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_224: rt.u8): rt.u8 => { - const x8: rt.u8 = _224; + const p7: rt.Peekable<[rt.u8, rt.u8]> = rt.iterPeekable(rt.iterMap(rt.iterZip(rt.iterZip(rt.iterMap(rt.iterSlice(rt.byteSliceView(a2)), (_2167: rt.u8): rt.u8 => { + const x36: rt.u8 = _2167; const _62: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_62.value, x8 ^ 13); + rt.byteVecPush(_62.value, x36 ^ 13); rt.refMutRelease(_62); - return x8; - }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_227: rt.u8): rt.u8 => { - const x9: rt.u8 = _227; - const _63: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_63.value, x9 ^ 14); - rt.refMutRelease(_63); - return x9; - }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_228: rt.u8): rt.u8 => { - const x10: rt.u8 = _228; - const _66: rt.RefCell = rt.refCellBorrowMut(log); - rt.byteVecPush(_66.value, x10 ^ 15); - rt.refMutRelease(_66); - return x10; - }), "len"), (_231: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { - return [_231[0][0] ^ _231[1], _231[0][1]] as [rt.u8, rt.u8]; + return x36; + }), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(b2))), (_2170: rt.u8): rt.u8 => { + const x37: rt.u8 = _2170; + const _65: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_65.value, x37 ^ 14); + rt.refMutRelease(_65); + return x37; + }), "len"), rt.iterMap(rt.iterRev(rt.iterSlice(rt.byteSliceView(a2))), (_2173: rt.u8): rt.u8 => { + const x38: rt.u8 = _2173; + const _67: rt.RefCell = rt.refCellBorrowMut(log); + rt.byteVecPush(_67.value, x38 ^ 15); + rt.refMutRelease(_67); + return x38; + }), "len"), (_2176: [[rt.u8, rt.u8], rt.u8]): [rt.u8, rt.u8] => { + return [_2176[0][0] ^ _2176[1], _2176[0][1]] as [rt.u8, rt.u8]; })); rt.byteVecPush(out, (rt.peekablePeek(p7) !== undefined ? 1 : 0) ^ (rt.iterCount(p7) & 0xff)); } } - const _1318: rt.RefCell = rt.refCellBorrow(log); - rt.byteVecExtendFromSlice(out, rt.byteVecSlice(_1318.value)); - rt.refRelease(_1318); + const _2759: rt.RefCell = rt.refCellBorrow(log); + rt.byteVecExtendFromSlice(out, rt.byteVecSlice(_2759.value)); + rt.refRelease(_2759); } /** @@ -9534,7 +11446,7 @@ export function lent(data: rt.ByteSlice, out: rt.ByteVec): void { rt.byteVecPush(out, option_unwrapOr$0r2bmpr(rt.iterToOption(erased.next()), 238)); rt.iterExtendBytes(out, range, undefined, true); let boxed: rt.Iter = rt.iterDyn(rt.iterRev(rt.iterSlice(rt.byteSliceView(data)))); - rt.iterExtendBytes(out, rt.iterTake(rt.iterBorrow(boxed), n), "next"); + rt.iterExtendBytes(out, rt.iterTake(rt.iterBorrow(rt.iterBoxed(boxed)), n), "next"); rt.iterExtendBytes(out, rt.iterTake(boxed, 1), "next"); const rest: rt.Iter = rt.iterSlice(rt.byteSliceView(data)); rt.iterExtendBytes(out, rt.byteVecIntoIter(halves$mut_iter_Copied_slice_Iter_u8(rest, n)), undefined, true); diff --git a/ts/fixtures/lang/iters/src/iters.rs b/ts/fixtures/lang/iters/src/iters.rs index d66cee380..bc246dbeb 100644 --- a/ts/fixtures/lang/iters/src/iters.rs +++ b/ts/fixtures/lang/iters/src/iters.rs @@ -1190,7 +1190,8 @@ fn at(items: &[T], i: usize) -> Option<&T> { /// A zip of each kind std specializes, of sides whose closures log each item they make, and /// either side shorter or empty: by index (`TrustedRandomAccess`), folded by its size hint /// (`TrustedLen`, or only `TrustedRandomAccessNoCoerce`), and by `next` (neither), read by -/// each of std's consumers, and through adaptors that fold it or read it by `try_fold`. +/// each of std's consumers, through adaptors that fold it or read it by `try_fold`, and +/// through a box. pub fn zips(kind: u8, data: &[u8], out: &mut Vec) { let split = (kind >> 5) as usize % (data.len() + 1); let (a, b) = data.split_at(split); @@ -1228,6 +1229,7 @@ pub fn zips(kind: u8, data: &[u8], out: &mut Vec) { 5 => out.push(z.fold(0u8, |acc, p| acc.wrapping_mul(3) ^ at(p))), 6 => out.push(z.map(at).any(|x| x == 0) as u8), _ => { + #[allow(unused_mut, reason = "a zip read through a `&mut` needs none")] let mut z = z; out.push(z.position(|(x, y)| x > y).map_or(0xee, |i| i as u8)); out.push(z.find(|&(x, _)| x % 3 == 0).map_or(0xee, at)); @@ -1237,11 +1239,19 @@ pub fn zips(kind: u8, data: &[u8], out: &mut Vec) { } }}; } - // `$zip` and then adaptors of it, each folding it or reading it by `try_fold`. + // `$zip` and then adaptors of it, each folding it or reading it by `try_fold`, or a box + // of it, owned or borrowed, which std's reads by `next` for each consumer but `nth` and + // `last`. macro_rules! adapt { ($zip:expr) => {{ match kind & 16 { - 0 => read!($zip), + 0 => match data.len() / 8 % 5 { + 0 => read!($zip), + 1 => read!(Box::new($zip)), + 2 => read!(Box::new($zip.skip(n))), + 3 => read!(&mut Box::new($zip)), + _ => read!(&mut Box::new($zip.skip(n))), + }, _ => match data.len() % 8 { 0 => out.push($zip.filter(|&(x, _)| x % 2 == 0).count() as u8), 1 => out.push($zip.filter_map(|(x, y)| x.checked_sub(y)).count() as u8), diff --git a/ts/runtime/rt/iter.ts b/ts/runtime/rt/iter.ts index f256f417f..3b6656fc8 100644 --- a/ts/runtime/rt/iter.ts +++ b/ts/runtime/rt/iter.ts @@ -598,6 +598,11 @@ export function iterBorrow(it: Iter): Iter { return new Borrowed(it); } +/** A box of the sized iterator `it`, read as std's `Iterator` for `Box` reads it. */ +export function iterBoxed(it: Iter): Iter { + return new Boxed(it); +} + /** * A `dyn Iterator` of `it`: what std's vtable has, as `it` does it, and the rest by `next`, as * std's default methods read a trait object. It drops `it` as it drops. @@ -916,6 +921,7 @@ export function iterCount(it: Iter): number { export function iterLast(it: Iter): T | undefined; export function iterLast(it: Iter, none: None): T | None; export function iterLast(it: Iter, none?: None): T | undefined | None { + if (it instanceof Boxed) return iterLast(it.inner, none as None); const folded = it.folded(true); let last: T | Done = DONE; for (let item = folded.next(); item !== DONE; item = folded.next()) last = item; @@ -1545,6 +1551,7 @@ function count(it: Iter, drop: Drop | undefined): number { */ function last(it: Iter, drop: Drop | undefined): T | Done { if (it instanceof FromNext && it.own?.last !== undefined) return it.taken(it.own.last); + if (it instanceof Boxed) return last(it.inner, drop); if ((it instanceof SliceIter && drop !== undefined) || (it instanceof BTreeIter && it.back)) { // std's, of a `Vec`'s or an array's, and of a B-tree's `into_keys` and // `into_values`: the last item, and then the rest drop with it. @@ -2193,6 +2200,56 @@ class Dyn extends Iter implements Disposable { } } +/** + * A box of a sized iterator, which forwards only what std's `impl Iterator for Box` + * does, `last` included, as std's specializes it for a sized `I`, and reads the rest by + * `next` and `next_back`. It drops `inner` as it drops. + */ +class Boxed extends Iter implements Disposable { + readonly inner: Iter; + + constructor(inner: Iter) { + super(); + this.inner = inner; + } + + override sizeHint(): SizeHint { + return this.inner.sizeHint(); + } + + next(): T | Done { + return this.inner.next(); + } + + nextBack(): T | Done { + return this.inner.nextBack(); + } + + len(): number { + return this.inner.len(); + } + + override nth(n: number, drop?: Drop): T | Done { + return this.inner.nth(n, drop); + } + + override nthBack(n: number, drop?: Drop): T | Done { + return this.inner.nthBack(n, drop); + } + + remaining(): Iterable { + return this.inner.remaining(); + } + + clone(h?: Clones): Iter { + return new Boxed(this.inner.clone(h)); + } + + [Symbol.dispose](): void { + dispose(this.inner); + } +} + /** * An iterator borrowed by `&mut`, which forwards only what std's `impl Iterator for &mut * I` does, its folds included, as std's specializes them for a sized `I`, and which diff --git a/ts/src/lower/iter.rs b/ts/src/lower/iter.rs index dacdd502a..a75c87477 100644 --- a/ts/src/lower/iter.rs +++ b/ts/src/lower/iter.rs @@ -368,13 +368,12 @@ fn folds_own<'tcx>(b: &Body<'_, '_, 'tcx>, ty: Ty<'tcx>) -> bool { /// The `rt.Own` of the crate's iterator of type `ty`: each method of `OWN` but `next` that /// it has of its own, as a function of its source, and those in `BY_VALUE` only if it is -/// `owned`, of which only `last` if `boxed`, as std's `Iterator` for a box forwards no other. -/// `undefined` if it has none. -fn own_methods<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, owned: bool, boxed: bool, span: Span) -> Expr { +/// `owned`. `undefined` if it has none. +fn own_methods<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, owned: bool, span: Span) -> Expr { let none = b.t.iter_item(ty.peel_refs()).and_then(|item| b.t.none_arg(item)); let mut props = Vec::new(); for (tr, name) in &OWN[1..] { - if BY_VALUE.contains(&(tr, name)) && (!owned || boxed && *name != "last") { + if !owned && BY_VALUE.contains(&(tr, name)) { continue; } let Some(instance) = own_method(b, ty, tr, name) else { @@ -487,9 +486,13 @@ impl<'tcx> Body<'_, '_, 'tcx> { /// each, and the crate's own iterator what drops it. pub fn into_iter<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, value: Expr, span: Span) -> Option { let tcx = b.t.tcx; + let boxed = boxes_iter(b, ty); let (peeled, value) = peel_iter(b, ty, value); - // std's `Iterator` for a box forwards only some of the crate's own methods. - let boxed = peeled != ty && !peeled.is_ref(); + // A box, by value, which std's `Iterator` for `Box` reads by `next` where it forwards + // nothing else. + if peeled != ty && !peeled.is_ref() { + return into_iter(b, peeled, value, span).map(|it| Expr::rt("iterBoxed", vec![it])); + } let (ty, value) = match unbox_ref(tcx, peeled) { unboxed if unboxed != peeled => (unboxed, b.t.pointee_value(peeled, value)), _ => (peeled, value), @@ -514,12 +517,14 @@ pub fn into_iter<'tcx>(b: &mut Body<'_, '_, 'tcx>, ty: Ty<'tcx>, value: Expr, sp true => b.t.dropper(ty, span), false => Expr::undefined(), }; - let own = own_methods(b, ty, owned, boxed, span); + let own = own_methods(b, ty, owned, span); Expr::rt("iterFrom", tail(vec![value, next], vec![drop, own])) } // One borrowed by `&mut`, which std's adaptors may drop once it ends, but which // is its owner's to drop, and which a consumer reads on through the borrow - // rather than by its by-value overrides, as `Chain::count` ends both halves. + // rather than by its by-value overrides, as `Chain::count` ends both halves. Through + // a box, which folds by `next`. + None if !owned && boxed => Expr::rt("iterBorrow", vec![Expr::rt("iterBoxed", vec![value])]), None if !owned => Expr::rt("iterBorrow", vec![value]), None => value, }); @@ -648,6 +653,14 @@ pub fn unbox_ref<'tcx>(tcx: TyCtxt<'tcx>, ty: Ty<'tcx>) -> Ty<'tcx> { } } +/// Whether `ty`, read through each reference, is a box of an iterator. +fn boxes_iter<'tcx>(b: &Body<'_, '_, 'tcx>, ty: Ty<'tcx>) -> bool { + match *ty.kind() { + ty::Ref(_, inner, _) => boxes_iter(b, inner), + _ => ty.boxed_ty().is_some_and(|held| b.t.iter_item(held).is_some()), + } +} + /// Whether `ty` is a `&mut` to a `&mut`, which is an `rt.Place` of it, or a box of one, /// which is what it holds. pub fn through_mut(ty: Ty<'_>) -> bool { From afe5a215c4e8268f73d977fc669f9d8c14046831 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 22:02:51 -0800 Subject: [PATCH 19/23] test(ts): dyns' borrowed boxes read as rt.iterBoxed Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/lang/dyns/expected/dyns.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ts/fixtures/lang/dyns/expected/dyns.ts b/ts/fixtures/lang/dyns/expected/dyns.ts index 94771d3aa..60b8e1ad0 100644 --- a/ts/fixtures/lang/dyns/expected/dyns.ts +++ b/ts/fixtures/lang/dyns/expected/dyns.ts @@ -877,7 +877,7 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { const first: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterFrom(inner, Countdown.next$iter_Iterator)).next()); const second: rt.u8 | undefined = rt.iterToOption(Countdown.next$iter_Iterator(inner)); const erased: rt.Iter = rt.iterDyn(new rt.Range(rt.u8Rem(a, 4), rt.u8Rem(b, 8))); - const third: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterBorrow(erased)).next()); + const third: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterBorrow(rt.iterBoxed(erased))).next()); const doubled: Countdown.Countdown = new Countdown.Countdown(rt.u8Rem(a, 8)); const fourth: rt.u8 | undefined = rt.iterToOption(rt.iterDyn(rt.iterFrom(doubled, Countdown.next$iter_Iterator)).next()); const mapped: rt.ByteVec = rt.iterToByteVec(rt.iterMap(rt.iterBoxed(rt.iterFrom(new Countdown.Countdown(rt.u8Rem(b, 8)), Countdown.next$iter_Iterator, rt.drop)), (x3: rt.u8): rt.u8 => { @@ -894,7 +894,7 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { const _262: [Countdown.Countdown, rt.Range] = [new Countdown.Countdown(rt.u8Rem(a, 8)), new rt.Range(rt.u8Rem(a, 4), rt.u8Rem(b, 8))]; const own2: Countdown.Countdown = _262[0]; const range: rt.Range = _262[1]; - const hints: [rt.usize, rt.usize | undefined][] = rt.arrayMap([rt.iterDyn(rt.iterFrom(own2, Countdown.next$iter_Iterator)), rt.iterDyn(rt.iterBorrow(range))], (it: rt.Iter): [rt.usize, rt.usize | undefined] => { + const hints: [rt.usize, rt.usize | undefined][] = rt.arrayMap([rt.iterDyn(rt.iterFrom(own2, Countdown.next$iter_Iterator)), rt.iterDyn(rt.iterBorrow(rt.iterBoxed(range)))], (it: rt.Iter): [rt.usize, rt.usize | undefined] => { return it.sizeHint(); }); let held: Countdown.Countdown = new Countdown.Countdown(rt.u8Rem(b, 8)); @@ -918,7 +918,7 @@ export function iters(data: rt.ByteSlice, out: rt.ByteVec): void { }), new rt.Range(0, rt.u8Rem(b, 4)), "len"); }; const owned: [rt.u8, rt.u8][] = rt.iterToArray(rt.iterBoxed(zipped()), "next", 2); - const lent3: [rt.u8, rt.u8][] = rt.iterToArray(rt.iterBorrow(zipped()), "next", 2); + const lent3: [rt.u8, rt.u8][] = rt.iterToArray(rt.iterBorrow(rt.iterBoxed(zipped())), "next", 2); const _339: rt.RefCell = rt.refCellBorrow(seen2); const args18: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(owned, f, (value: [rt.u8, rt.u8], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u8Debug(value[0], f), (f: rt.Formatter) => rt.u8Debug(value[1], f)], f)), (f: rt.Formatter) => rt.fmtList(lent3, f, (value: [rt.u8, rt.u8], f: rt.Formatter) => rt.fmtTuple([(f: rt.Formatter) => rt.u8Debug(value[0], f), (f: rt.Formatter) => rt.u8Debug(value[1], f)], f)), (f: rt.Formatter) => rt.fmtList(rt.byteVecView(_339.value), f, rt.u8Debug)]; const _335: string = rt.fmtFormat([args18[0], " ", args18[1], " ", args18[2], " "]); From 3ae727bb301e847897f9c26467c2d3e7c4e09086 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 22:05:52 -0800 Subject: [PATCH 20/23] fix(ts): Cell::update calls its function on the value itself A translated function already copies a value JS shares before it changes or keeps it, so cellUpdate's own copy could not be observed: the mutant dropping it survived every case, a `mut` parameter and a let-bound copy included. Also regenerates lang's ends and iters snapshots after the last merge. Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/lang/ends/expected/ends.ts | 229 ++++++++++++++-------- ts/fixtures/lang/iters/expected/iters.ts | 5 +- ts/fixtures/task/expected/drops/called.ts | 2 +- ts/fixtures/task/src/drops/called.rs | 2 +- ts/runtime/rt/task.ts | 6 +- ts/src/lower/task.rs | 6 +- 6 files changed, 160 insertions(+), 90 deletions(-) diff --git a/ts/fixtures/lang/ends/expected/ends.ts b/ts/fixtures/lang/ends/expected/ends.ts index dfdd68141..15ac22c80 100644 --- a/ts/fixtures/lang/ends/expected/ends.ts +++ b/ts/fixtures/lang/ends/expected/ends.ts @@ -501,86 +501,133 @@ export function consumed$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, out: rt * fold panics past `k` items, with what was logged so far. */ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; }, true)); } else if (pick === 1) { const _10: Overrides.Overrides = it; - const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; }; rt.byteVecPush(out, rt.iterRfold(rt.iterFrom(_10, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 1, _11, true)); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 0, _19, true)); rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 0, _60); + } else { + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 0, _63); + } + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); } else { - _38 = Uint8Array.of(1, r2.error); + _66 = Uint8Array.of(1, r3.error); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(Overrides.next$iter_Iterator(it))); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }).len() & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }).len() & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }).len() & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, rt.ownedCount(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })) & 0xff); @@ -592,10 +639,22 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r put(out, rt.ownedLast(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }, true); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: Overrides.Overrides = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterFrom(_140, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart(), true); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }, true); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -603,8 +662,8 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt, true)); } else { put(out, rt.iterMax(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), rt.lt, true)); @@ -617,39 +676,53 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: Overrides.Overrides = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.ownedLast(rt.iterSkip(rt.iterFrom(_118, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _119))); + const _175: Overrides.Overrides = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterFrom(_175, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _176))); } else { - const _113: Overrides.Overrides = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterFrom(_113, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _114)) & 0xff); + const _170: Overrides.Overrides = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterFrom(_170, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; }, true)); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; }, true)); } } else if (pick === 12) { - const _139: Overrides.Overrides = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _140); + const _196: Overrides.Overrides = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_196, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: Overrides.Overrides = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: Overrides.Overrides = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterFrom(_216, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + }, true)); + } else { + const _210: Overrides.Overrides = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_210, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })); @@ -659,9 +732,9 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r put(out, rt.ownedLast(rt.iterFuse(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))); rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }).len() & 0xff); diff --git a/ts/fixtures/lang/iters/expected/iters.ts b/ts/fixtures/lang/iters/expected/iters.ts index 2f3a1730f..671788b12 100644 --- a/ts/fixtures/lang/iters/expected/iters.ts +++ b/ts/fixtures/lang/iters/expected/iters.ts @@ -1,10 +1,11 @@ // Generated by rust2-ts. Do not edit. import * as rt from "./rt.ts"; +import { of$u8 } from "./lib.ts"; import { thenSome$185ufyt, thenSome$0b23a33, thenSome$0d5am30, thenSome$1j8foe9 } from "./core/bool.ts"; import { unwrapOr$0k15iai as option_unwrapOr$0k15iai, unwrapOr$00uis1j as option_unwrapOr$00uis1j, unwrapOr$0r2bmpr as option_unwrapOr$0r2bmpr, unwrapOr$14m5xjm as option_unwrapOr$14m5xjm, unwrapOr$1tvry1i as option_unwrapOr$1tvry1i, unwrapOrDefault$165pyh5 as option_unwrapOrDefault$165pyh5, unwrapOrDefault$0wx44sw as option_unwrapOrDefault$0wx44sw, map$1uo1d4o as option_map$1uo1d4o, map$1httady as option_map$1httady, map$0of9gds as option_map$0of9gds, map$1c7zybz as option_map$1c7zybz, map$0cs071d as option_map$0cs071d, map$0p22lts as option_map$0p22lts, mapOr$0lcrgk1 as option_mapOr$0lcrgk1, mapOr$1kiffmd as option_mapOr$1kiffmd, mapOr$1a3irjf as option_mapOr$1a3irjf, mapOr$0sl5app as option_mapOr$0sl5app, mapOr$0atjiti as option_mapOr$0atjiti, mapOr$0okqj9y as option_mapOr$0okqj9y, mapOr$1e4a1e0 as option_mapOr$1e4a1e0, mapOr$1lznlgz as option_mapOr$1lznlgz, mapOr$0tmtgfi as option_mapOr$0tmtgfi, mapOr$0ev76sb as option_mapOr$0ev76sb, mapOr$1surhce as option_mapOr$1surhce, mapOr$1t0muvr as option_mapOr$1t0muvr, mapOr$0a96v80 as option_mapOr$0a96v80, mapOr$1vjqo89 as option_mapOr$1vjqo89, mapOr$1h04da8 as option_mapOr$1h04da8, mapOr$0f73bb7 as option_mapOr$0f73bb7, mapOr$0mmpeqx as option_mapOr$0mmpeqx, mapOr$06gg5x7 as option_mapOr$06gg5x7, mapOr$1dmz9kd as option_mapOr$1dmz9kd, mapOr$1sxa8ki as option_mapOr$1sxa8ki, mapOr$02k4ito as option_mapOr$02k4ito, asDeref$0w8at8i as option_asDeref$0w8at8i, filter$0v80fk8 } from "./core/option.ts"; import { unwrapOr$01jdcm7 as result_unwrapOr$01jdcm7 } from "./core/result.ts"; -import * as Badge from "./iters.Badge.ts"; +import type * as Badge from "./iters.Badge.ts"; import * as Bumped from "./iters.Bumped.ts"; import * as Countdown from "./iters.Countdown.ts"; import * as Doubled from "./iters.Doubled.ts"; @@ -1417,7 +1418,7 @@ export function optionItems(data: rt.ByteSlice, out: rt.ByteVec): void { }), undefined, 2, true); const badges: Array = rt.iterToArray(rt.iterMap(rt.iterSlice(rt.byteSliceView(data)), (b8: rt.u8): Badge.Badge | undefined => { return option_map$0of9gds(_3(b8), (_24: rt.u8): Badge.Badge => { - return new Badge.of$u8(b8); + return new of$u8(b8); }); }), undefined, 8, true); for (const _26 of words) { diff --git a/ts/fixtures/task/expected/drops/called.ts b/ts/fixtures/task/expected/drops/called.ts index dbb0e8e02..343bb47b5 100644 --- a/ts/fixtures/task/expected/drops/called.ts +++ b/ts/fixtures/task/expected/drops/called.ts @@ -464,7 +464,7 @@ export function called(log: Log.Log, id: rt.u32, arg: rt.u8): void { const args66: rt.Fmt[] = [(f: rt.Formatter) => rt.u32Display(part2, f), (f: rt.Formatter) => rt.u32Display(part3, f)]; Log.note(log, rt.fmtFormat(["pair ", args66[0], " ", args66[1]])); return copy$array_u32(p); - }, copy$array_u32); + }); const part4 = copy$array_u32(pair.v); const args48: rt.Fmt[] = [(f: rt.Formatter) => rt.fmtList(part4, f, rt.u32Debug)]; Log.note(log, rt.fmtFormat(["paired ", args48[0]])); diff --git a/ts/fixtures/task/src/drops/called.rs b/ts/fixtures/task/src/drops/called.rs index f29261514..1086e9020 100644 --- a/ts/fixtures/task/src/drops/called.rs +++ b/ts/fixtures/task/src/drops/called.rs @@ -183,7 +183,7 @@ pub(super) fn called(log: &Log, id: u32, arg: u8) { let add = move |n: u32| n + e.id() - e.id() + 1; let doubled = move |n: &mut u32| *n * 2 + f.id() - f.id(); Cell::new(1u32).update(add); - // A copy of what JS shares, which the function changes and the cell keeps. + // Of what JS shares, which the function changes and the cell keeps. let pair = Cell::new([1u32, 2]); pair.update(|mut p| { p[0] += 10; diff --git a/ts/runtime/rt/task.ts b/ts/runtime/rt/task.ts index b6e4ea6a7..190cf93b8 100644 --- a/ts/runtime/rt/task.ts +++ b/ts/runtime/rt/task.ts @@ -737,9 +737,9 @@ export function cellReplace(cell: Cell, v: T): T { return old; } -/** `Cell::update`: what `f` returns of a copy of its value, by `copy` where JS shares it, in its place. */ -export function cellUpdate(cell: Cell, f: (v: T) => T, copy?: (v: T) => T): void { - cell.v = f(copy === undefined ? cell.v : copy(cell.v)); +/** `Cell::update`: what `f` returns of its value, in its place. */ +export function cellUpdate(cell: Cell, f: (v: T) => T): void { + cell.v = f(cell.v); } /** `Cell::set`: `v` in place of the value it held, which `dropOld` drops after. */ diff --git a/ts/src/lower/task.rs b/ts/src/lower/task.rs index f7252dea6..66aa130fc 100644 --- a/ts/src/lower/task.rs +++ b/ts/src/lower/task.rs @@ -526,11 +526,7 @@ fn cell<'tcx>( "get" => b.t.copied(first(args).member("v"), ty, call.span), "into_inner" => first(args).member("v"), "replace" => Expr::rt("cellReplace", args), - // With what copies the value where JS would share it. - "update" => { - let copy = b.t.copy_fn(ty, call.span); - Expr::rt("cellUpdate", args.into_iter().chain(copy).collect()) - } + "update" => Expr::rt("cellUpdate", args), // With what drops the value it replaces. "set" => { let Some(droppers) = b.t.droppers([ty], call.span) else { From aa6616ef3f8f531133e347f9c37a6c17f68efaa3 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 22:15:27 -0800 Subject: [PATCH 21/23] test(ts): regenerate ends after merging #463's box reader Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/lang/ends/expected/ends.ts | 1147 ++++++++++++++++-------- 1 file changed, 756 insertions(+), 391 deletions(-) diff --git a/ts/fixtures/lang/ends/expected/ends.ts b/ts/fixtures/lang/ends/expected/ends.ts index 03f47d313..4826f2223 100644 --- a/ts/fixtures/lang/ends/expected/ends.ts +++ b/ts/fixtures/lang/ends/expected/ends.ts @@ -1,7 +1,7 @@ // Generated by rust2-ts. Do not edit. import * as rt from "./rt.ts"; -import { thenSome$0d5am30 } from "./core/bool.ts"; +import { thenSome$0d5am30, then$19svsql } from "./core/bool.ts"; import { unwrapOr$0r2bmpr as option_unwrapOr$0r2bmpr, map$1sj2ls1 as option_map$1sj2ls1, map$05nbzug as option_map$05nbzug, mapOr$02k4ito as option_mapOr$02k4ito, or$1loyskh as option_or$1loyskh } from "./core/option.ts"; import * as Counted from "./ends.Counted.ts"; import * as Flicker from "./ends.Flicker.ts"; @@ -601,86 +601,133 @@ export function consumed$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, out: rt * fold panics past `k` items, with what was logged so far. */ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; }, true)); } else if (pick === 1) { const _10: Overrides.Overrides = it; - const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; }; rt.byteVecPush(out, rt.iterRfold(rt.iterBoxed(rt.iterFrom(_10, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, _11, true)); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _19, true)); rt.iterExtendBytes(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _60); } else { - _38 = Uint8Array.of(1, r2.error); + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _63); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); + } else { + _66 = Uint8Array.of(1, r3.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(Overrides.next$iter_Iterator(it))); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, rt.ownedCount(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))) & 0xff); @@ -692,10 +739,22 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r put(out, rt.ownedLast(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }, true); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: Overrides.Overrides = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterBoxed(rt.iterFrom(_140, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart(), true); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }, true); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -703,8 +762,8 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt, true)); } else { put(out, rt.iterMax(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.lt, true)); @@ -717,39 +776,53 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: Overrides.Overrides = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.ownedLast(rt.iterSkip(rt.iterBoxed(rt.iterFrom(_118, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _119))); + const _175: Overrides.Overrides = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterBoxed(rt.iterFrom(_175, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _176))); } else { - const _113: Overrides.Overrides = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterBoxed(rt.iterFrom(_113, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _114)) & 0xff); + const _170: Overrides.Overrides = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterBoxed(rt.iterFrom(_170, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; }, true)); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.ownedLast(rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; }, true)); } } else if (pick === 12) { - const _139: Overrides.Overrides = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterBoxed(rt.iterFrom(_139, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _140); + const _196: Overrides.Overrides = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterBoxed(rt.iterFrom(_196, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: Overrides.Overrides = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterBoxed(rt.iterFrom(_150, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: Overrides.Overrides = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterBoxed(rt.iterFrom(_216, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + }, true)); + } else { + const _210: Overrides.Overrides = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterBoxed(rt.iterFrom(_210, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))); @@ -759,9 +832,9 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r put(out, rt.ownedLast(rt.iterFuse(rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))); rt.byteVecPush(out, rt.iterBoxed(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); @@ -774,86 +847,133 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r * fold panics past `k` items, with what was logged so far. */ export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: rt.Iter, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(it), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, rt.iterFold(rt.iterBoxed(it), 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; }, true)); } else if (pick === 1) { const _10: rt.Iter = it; - const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; }; rt.byteVecPush(out, rt.iterRfold(rt.iterBoxed(_10), 1, _11, true)); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterBoxed(it), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterBoxed(it), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterBoxed(it), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterBoxed(it), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterBoxed(it), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterBoxed(it), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterBoxed(it), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterBoxed(it), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterBoxed(it), 0, _19, true)); rt.iterExtendBytes(out, rt.iterBoxed(it), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterBoxed(it), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterBoxed(it), 0, _60); + } else { + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterBoxed(it), 0, _63); + } + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); } else { - _38 = Uint8Array.of(1, r2.error); + _66 = Uint8Array.of(1, r3.error); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(it.next())); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterBorrow(rt.iterBoxed(it))), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterBorrow(rt.iterBoxed(it))), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, rt.iterBoxed(it).len() & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterBorrow(rt.iterBoxed(it))), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, rt.iterBoxed(it).len() & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, rt.iterBoxed(it).len() & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterBoxed(it), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterBoxed(it), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, rt.ownedCount(rt.iterBoxed(it)) & 0xff); @@ -865,10 +985,22 @@ export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: put(out, rt.ownedLast(rt.iterBoxed(it))); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterBoxed(it), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }, true); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: rt.Iter = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterBoxed(_140), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart(), true); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterBoxed(it), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }, true); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterBoxed(it), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -876,8 +1008,8 @@ export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterBoxed(it), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterBoxed(it), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt, true)); } else { put(out, rt.iterMax(rt.iterBoxed(it), rt.lt, true)); @@ -890,39 +1022,53 @@ export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: rt.Iter = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.ownedLast(rt.iterSkip(rt.iterBoxed(_118), _119))); + const _175: rt.Iter = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterBoxed(_175), _176))); } else { - const _113: rt.Iter = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterBoxed(_113), _114)) & 0xff); + const _170: rt.Iter = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterBoxed(_170), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterBoxed(it)), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterBoxed(it)), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; }, true)); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterBoxed(it)), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.ownedLast(rt.iterRev(rt.iterBoxed(it)))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterBoxed(it)), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterBoxed(it)), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; }, true)); } } else if (pick === 12) { - const _139: rt.Iter = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterBoxed(_139), _140); + const _196: rt.Iter = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterBoxed(_196), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: rt.Iter = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterBoxed(_150), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: rt.Iter = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterBoxed(_216), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + }, true)); + } else { + const _210: rt.Iter = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterBoxed(_210), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterBoxed(it)); @@ -932,9 +1078,9 @@ export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: put(out, rt.ownedLast(rt.iterFuse(rt.iterBoxed(it)))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterBorrow(rt.iterBoxed(it)), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterBorrow(rt.iterBoxed(it)), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterBorrow(rt.iterBoxed(it)))); rt.byteVecPush(out, rt.iterBoxed(it).len() & 0xff); @@ -947,86 +1093,133 @@ export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: * fold panics past `k` items, with what was logged so far. */ export function folded$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; })); } else if (pick === 1) { const _10: Counted.Counted = it; - const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; }; rt.byteVecPush(out, rt.iterRfold(rt.iterFrom(_10, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 1, _11)); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _19, true)); rt.iterExtendBytes(out, rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _60); + } else { + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _63); + } + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); } else { - _38 = Uint8Array.of(1, r2.error); + _66 = Uint8Array.of(1, r3.error); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(Counted.next$iter_Iterator(it))); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, Counted.len$iter_ExactSizeIterator(it) & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, Counted.len$iter_ExactSizeIterator(it) & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, Counted.len$iter_ExactSizeIterator(it) & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, rt.iterCount(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })) & 0xff); @@ -1038,10 +1231,22 @@ export function folded$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usiz put(out, rt.iterLast(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }))); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: Counted.Counted = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterFrom(_140, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart()); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -1049,8 +1254,8 @@ export function folded$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usiz } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt)); } else { put(out, rt.iterMax(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), rt.lt)); @@ -1063,39 +1268,53 @@ export function folded$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usiz } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: Counted.Counted = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_118, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _119))); + const _175: Counted.Counted = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_175, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _176))); } else { - const _113: Counted.Counted = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_113, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _114)) & 0xff); + const _170: Counted.Counted = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_170, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; })); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; })); } } else if (pick === 12) { - const _139: Counted.Counted = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _140); + const _196: Counted.Counted = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_196, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: Counted.Counted = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: Counted.Counted = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterFrom(_216, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + })); + } else { + const _210: Counted.Counted = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_210, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })); @@ -1105,9 +1324,9 @@ export function folded$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usiz put(out, rt.iterLast(rt.iterFuse(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }))); rt.byteVecPush(out, Counted.len$iter_ExactSizeIterator(it) & 0xff); @@ -1120,84 +1339,131 @@ export function folded$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usiz * fold panics past `k` items, with what was logged so far. */ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, Overrides.fold$iter_Iterator_u8_ends_folded_closure0_ends_Overrides(it, 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, Overrides.fold$iter_Iterator_u8_ends_folded_closure0_ends_Overrides(it, 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; })); } else if (pick === 1) { - rt.byteVecPush(out, Overrides.rfold$iter_DoubleEndedIterator_u8_ends_folded_closure1_ends_Overrides(it, 1, (a11: rt.u8, b12: rt.u8): rt.u8 => { + rt.byteVecPush(out, Overrides.rfold$iter_DoubleEndedIterator_u8_ends_folded_closure1_ends_Overrides(it, 1, (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; })); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _19, true)); rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _60); + } else { + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _63); + } + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); } else { - _38 = Uint8Array.of(1, r2.error); + _66 = Uint8Array.of(1, r3.error); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(Overrides.next$iter_Iterator(it))); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, Overrides.count$iter_Iterator(it) & 0xff); @@ -1209,10 +1475,22 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r put(out, Overrides.last$iter_Iterator(it)); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }, true); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: Overrides.Overrides = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterFrom(_140, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart(), true); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }, true); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -1220,8 +1498,8 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt, true)); } else { put(out, rt.iterMax(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), rt.lt, true)); @@ -1234,39 +1512,53 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: Overrides.Overrides = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.ownedLast(rt.iterSkip(rt.iterFrom(_118, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _119))); + const _175: Overrides.Overrides = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterFrom(_175, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _176))); } else { - const _113: Overrides.Overrides = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterFrom(_113, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _114)) & 0xff); + const _170: Overrides.Overrides = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterFrom(_170, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; }, true)); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; }, true)); } } else if (pick === 12) { - const _139: Overrides.Overrides = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _140); + const _196: Overrides.Overrides = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_196, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: Overrides.Overrides = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: Overrides.Overrides = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterFrom(_216, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + }, true)); + } else { + const _210: Overrides.Overrides = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_210, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })); @@ -1276,9 +1568,9 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r put(out, rt.ownedLast(rt.iterFuse(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))); rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); @@ -1291,86 +1583,133 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r * fold panics past `k` items, with what was logged so far. */ export function folded$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; })); } else if (pick === 1) { const _10: Run.Run = it; - const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; }; rt.byteVecPush(out, rt.iterRfold(rt.iterFrom(_10, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 1, _11)); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _19, true)); rt.iterExtendBytes(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _60); + } else { + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _63); + } + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); } else { - _38 = Uint8Array.of(1, r2.error); + _66 = Uint8Array.of(1, r3.error); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(Run.next$iter_Iterator(it))); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, rt.iterCount(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })) & 0xff); @@ -1382,10 +1721,22 @@ export function folded$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, log: rt.R put(out, rt.iterLast(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }))); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: Run.Run = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterFrom(_140, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart()); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -1393,8 +1744,8 @@ export function folded$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, log: rt.R } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt)); } else { put(out, rt.iterMax(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), rt.lt)); @@ -1407,39 +1758,53 @@ export function folded$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, log: rt.R } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: Run.Run = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_118, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _119))); + const _175: Run.Run = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_175, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _176))); } else { - const _113: Run.Run = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_113, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _114)) & 0xff); + const _170: Run.Run = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_170, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; })); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; })); } } else if (pick === 12) { - const _139: Run.Run = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _140); + const _196: Run.Run = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_196, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: Run.Run = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: Run.Run = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterFrom(_216, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + })); + } else { + const _210: Run.Run = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_210, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })); @@ -1449,9 +1814,9 @@ export function folded$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, log: rt.R put(out, rt.iterLast(rt.iterFuse(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }))); rt.byteVecPush(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); From 99af98109fa49a38cd1931286af2e665db03bbf1 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 22:19:32 -0800 Subject: [PATCH 22/23] style(ts): format the closure-call cases Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/lang/ends/src/ends.rs | 11 +++++++---- ts/fixtures/task/src/drops/called.rs | 24 ++++++++++++++++-------- ts/src/lower/task.rs | 5 ++++- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/ts/fixtures/lang/ends/src/ends.rs b/ts/fixtures/lang/ends/src/ends.rs index ef26b2404..b4d7c8f97 100644 --- a/ts/fixtures/lang/ends/src/ends.rs +++ b/ts/fixtures/lang/ends/src/ends.rs @@ -390,10 +390,13 @@ fn folded + ExactSizeIterator>( true => ControlFlow::Break(b), false => ControlFlow::Continue(out.push(b)), }); - put(out, match r { - ControlFlow::Break(b) => Some(b), - ControlFlow::Continue(()) => None, - }); + put( + out, + match r { + ControlFlow::Break(b) => Some(b), + ControlFlow::Continue(()) => None, + }, + ); out.push(it.len() as u8); } 4 => { diff --git a/ts/fixtures/task/src/drops/called.rs b/ts/fixtures/task/src/drops/called.rs index 1086e9020..9f2db5220 100644 --- a/ts/fixtures/task/src/drops/called.rs +++ b/ts/fixtures/task/src/drops/called.rs @@ -4,8 +4,8 @@ use std::cell::{Cell, LazyCell, RefCell}; use std::ops::ControlFlow; -use crate::log::Log; use super::Key; +use crate::log::Log; use crate::model::Guard; /// Run scenario `arg % 12`. The last panics in a `try_fold`, with the log so far. @@ -49,7 +49,9 @@ pub(super) fn called(log: &Log, id: u32, arg: u8) { ControlFlow::Continue(_) => None, }; log.note(format!("break {broke:?}")); - let none = Vec::::new().into_iter().try_fold(0u32, move |n, g| Some(n + g.id() + d.id())); + let none = Vec::::new() + .into_iter() + .try_fold(0u32, move |n, g| Some(n + g.id() + d.id())); log.note(format!("none {none:?}")); } 3 => { @@ -98,7 +100,12 @@ pub(super) fn called(log: &Log, id: u32, arg: u8) { .collect(); log.note(format!("made {}", made.len())); let mut it = std::iter::repeat_with(move || d.id()); - log.note(format!("first {:?} {:?} {:?}", it.next(), it.size_hint(), it.by_ref().take(2).size_hint())); + log.note(format!( + "first {:?} {:?} {:?}", + it.next(), + it.size_hint(), + it.by_ref().take(2).size_hint() + )); drop(it); log.note("dropped".into()); } @@ -113,11 +120,12 @@ pub(super) fn called(log: &Log, id: u32, arg: u8) { let sums: Vec = it.by_ref().collect(); log.note(format!("sums {sums:?} {:?}", it.next())); drop(it); - let total: u32 = (1..4).scan(1u32, |n, k| { - *n *= k; - Some(*n) - }) - .sum(); + let total: u32 = (1..4) + .scan(1u32, |n, k| { + *n *= k; + Some(*n) + }) + .sum(); log.note(format!("total {total}")); // Of a state that drops, after the closure, and folded through `flatten`. let e = guard(22); diff --git a/ts/src/lower/task.rs b/ts/src/lower/task.rs index 66aa130fc..7fc8e462b 100644 --- a/ts/src/lower/task.rs +++ b/ts/src/lower/task.rs @@ -283,7 +283,10 @@ pub fn call<'tcx>( // With the value's place where JS would copy it. ("RefCell", "replace_with") => { let copied = b.t.needs_place(call.args.type_at(0)); - Expr::rt("refCellReplaceWith", super::iter::tail(args, vec![Expr::lit(copied.to_string())])) + Expr::rt( + "refCellReplaceWith", + super::iter::tail(args, vec![Expr::lit(copied.to_string())]), + ) } ("RefCell", "take") => { let ty = call.args.type_at(0); From f2b3bf8ff7816fa79d0139c40622e82268e03a21 Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 2 Nov 2026 22:41:56 -0800 Subject: [PATCH 23/23] test(ts): regenerate ends after merging #463 Co-Authored-By: Claude Opus 5.5 --- ts/fixtures/lang/ends/expected/ends.ts | 1147 ++++++++++++++++-------- 1 file changed, 756 insertions(+), 391 deletions(-) diff --git a/ts/fixtures/lang/ends/expected/ends.ts b/ts/fixtures/lang/ends/expected/ends.ts index 378cbacdc..80c633d2a 100644 --- a/ts/fixtures/lang/ends/expected/ends.ts +++ b/ts/fixtures/lang/ends/expected/ends.ts @@ -1,7 +1,7 @@ // Generated by rust2-ts. Do not edit. import * as rt from "./rt.ts"; -import { thenSome$0d5am30 } from "./core/bool.ts"; +import { thenSome$0d5am30, then$19svsql } from "./core/bool.ts"; import { unwrapOr$0r2bmpr as option_unwrapOr$0r2bmpr, map$1sj2ls1 as option_map$1sj2ls1, map$05nbzug as option_map$05nbzug, mapOr$02k4ito as option_mapOr$02k4ito, or$1loyskh as option_or$1loyskh } from "./core/option.ts"; import * as Counted from "./ends.Counted.ts"; import * as Flicker from "./ends.Flicker.ts"; @@ -601,86 +601,133 @@ export function consumed$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, out: rt * fold panics past `k` items, with what was logged so far. */ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; }, true)); } else if (pick === 1) { const _10: Overrides.Overrides = it; - const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; }; rt.byteVecPush(out, rt.iterRfold(rt.iterBox(rt.iterFrom(_10, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, _11, true)); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _19, true)); rt.iterExtendBytes(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _60); } else { - _38 = Uint8Array.of(1, r2.error); + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _63); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); + } else { + _66 = Uint8Array.of(1, r3.error); + } + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(Overrides.next$iter_Iterator(it))); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterBorrow(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterBorrow(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterBorrow(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })))), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, rt.ownedCount(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))) & 0xff); @@ -692,10 +739,22 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r put(out, rt.ownedLast(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }, true); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: Overrides.Overrides = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterBox(rt.iterFrom(_140, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart(), true); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }, true); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -703,8 +762,8 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt, true)); } else { put(out, rt.iterMax(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.lt, true)); @@ -717,39 +776,53 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: Overrides.Overrides = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.ownedLast(rt.iterSkip(rt.iterBox(rt.iterFrom(_118, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _119))); + const _175: Overrides.Overrides = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterBox(rt.iterFrom(_175, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _176))); } else { - const _113: Overrides.Overrides = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterBox(rt.iterFrom(_113, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _114)) & 0xff); + const _170: Overrides.Overrides = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterBox(rt.iterFrom(_170, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; }, true)); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.ownedLast(rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; }, true)); } } else if (pick === 12) { - const _139: Overrides.Overrides = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterBox(rt.iterFrom(_139, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _140); + const _196: Overrides.Overrides = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterBox(rt.iterFrom(_196, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: Overrides.Overrides = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterBox(rt.iterFrom(_150, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: Overrides.Overrides = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterBox(rt.iterFrom(_216, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + }, true)); + } else { + const _210: Overrides.Overrides = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterBox(rt.iterFrom(_210, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))); @@ -759,9 +832,9 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r put(out, rt.ownedLast(rt.iterFuse(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }))))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterBorrow(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterBorrow(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))))); rt.byteVecPush(out, rt.iterBox(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })).len() & 0xff); @@ -774,86 +847,133 @@ export function folded$boxed_Box_ends_Overrides(it: Overrides.Overrides, pick: r * fold panics past `k` items, with what was logged so far. */ export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: rt.Iter, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterBox(it), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, rt.iterFold(rt.iterBox(it), 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; }, true)); } else if (pick === 1) { const _10: rt.Iter = it; - const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; }; rt.byteVecPush(out, rt.iterRfold(rt.iterBox(_10), 1, _11, true)); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterBox(it), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterBox(it), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterBox(it), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterBox(it), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterBox(it), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterBox(it), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterBox(it), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterBox(it), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterBox(it), 0, _19, true)); rt.iterExtendBytes(out, rt.iterBox(it), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterBox(it), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterBox(it), 0, _60); + } else { + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterBox(it), 0, _63); + } + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); } else { - _38 = Uint8Array.of(1, r2.error); + _66 = Uint8Array.of(1, r3.error); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(it.next())); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterBorrow(rt.iterBox(rt.iterBorrow(it)))), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterBorrow(rt.iterBox(rt.iterBorrow(it)))), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, rt.iterBox(it).len() & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterBorrow(rt.iterBox(rt.iterBorrow(it)))), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, rt.iterBox(it).len() & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, rt.iterBox(it).len() & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterBox(it), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterBox(it), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, rt.ownedCount(rt.iterBox(it)) & 0xff); @@ -865,10 +985,22 @@ export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: put(out, rt.ownedLast(rt.iterBox(it))); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterBox(it), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }, true); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: rt.Iter = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterBox(_140), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart(), true); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterBox(it), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }, true); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterBox(it), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -876,8 +1008,8 @@ export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterBox(it), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterBox(it), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt, true)); } else { put(out, rt.iterMax(rt.iterBox(it), rt.lt, true)); @@ -890,39 +1022,53 @@ export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: rt.Iter = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.ownedLast(rt.iterSkip(rt.iterBox(_118), _119))); + const _175: rt.Iter = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterBox(_175), _176))); } else { - const _113: rt.Iter = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterBox(_113), _114)) & 0xff); + const _170: rt.Iter = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterBox(_170), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterBox(it)), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterBox(it)), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; }, true)); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterBox(it)), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.ownedLast(rt.iterRev(rt.iterBox(it)))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterBox(it)), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterBox(it)), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; }, true)); } } else if (pick === 12) { - const _139: rt.Iter = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterBox(_139), _140); + const _196: rt.Iter = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterBox(_196), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: rt.Iter = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterBox(_150), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: rt.Iter = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterBox(_216), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + }, true)); + } else { + const _210: rt.Iter = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterBox(_210), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterBox(it)); @@ -932,9 +1078,9 @@ export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: put(out, rt.ownedLast(rt.iterFuse(rt.iterBox(it)))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterBorrow(rt.iterBox(rt.iterBorrow(it))), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterBorrow(rt.iterBox(rt.iterBorrow(it))), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterBorrow(rt.iterBox(rt.iterBorrow(it))))); rt.byteVecPush(out, rt.iterBox(it).len() & 0xff); @@ -947,86 +1093,133 @@ export function folded$boxed_Box_iter_Map_ends_Overrides_ends_ends_closure1(it: * fold panics past `k` items, with what was logged so far. */ export function folded$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; })); } else if (pick === 1) { const _10: Counted.Counted = it; - const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; }; rt.byteVecPush(out, rt.iterRfold(rt.iterFrom(_10, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 1, _11)); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _19, true)); rt.iterExtendBytes(out, rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _60); + } else { + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _63); + } + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); } else { - _38 = Uint8Array.of(1, r2.error); + _66 = Uint8Array.of(1, r3.error); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(Counted.next$iter_Iterator(it))); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, Counted.len$iter_ExactSizeIterator(it) & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, Counted.len$iter_ExactSizeIterator(it) & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, Counted.len$iter_ExactSizeIterator(it) & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, rt.iterCount(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })) & 0xff); @@ -1038,10 +1231,22 @@ export function folded$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usiz put(out, rt.iterLast(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }))); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: Counted.Counted = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterFrom(_140, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart()); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -1049,8 +1254,8 @@ export function folded$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usiz } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt)); } else { put(out, rt.iterMax(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), rt.lt)); @@ -1063,39 +1268,53 @@ export function folded$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usiz } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: Counted.Counted = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_118, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _119))); + const _175: Counted.Counted = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_175, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _176))); } else { - const _113: Counted.Counted = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_113, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _114)) & 0xff); + const _170: Counted.Counted = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_170, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; })); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; })); } } else if (pick === 12) { - const _139: Counted.Counted = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _140); + const _196: Counted.Counted = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_196, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: Counted.Counted = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: Counted.Counted = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterFrom(_216, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + })); + } else { + const _210: Counted.Counted = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_210, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })); @@ -1105,9 +1324,9 @@ export function folded$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usiz put(out, rt.iterLast(rt.iterFuse(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator })))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterFrom(it, Counted.next$iter_Iterator, undefined, { hint: Counted.sizeHint$iter_Iterator, back: (it: Counted.Counted) => rt.iterFromOption(Counted.nextBack$iter_DoubleEndedIterator(it)), len: Counted.len$iter_ExactSizeIterator }))); rt.byteVecPush(out, Counted.len$iter_ExactSizeIterator(it) & 0xff); @@ -1120,84 +1339,131 @@ export function folded$ends_Counted(it: Counted.Counted, pick: rt.u8, k: rt.usiz * fold panics past `k` items, with what was logged so far. */ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, Overrides.fold$iter_Iterator_u8_ends_folded_closure0_ends_Overrides(it, 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, Overrides.fold$iter_Iterator_u8_ends_folded_closure0_ends_Overrides(it, 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; })); } else if (pick === 1) { - rt.byteVecPush(out, Overrides.rfold$iter_DoubleEndedIterator_u8_ends_folded_closure1_ends_Overrides(it, 1, (a11: rt.u8, b12: rt.u8): rt.u8 => { + rt.byteVecPush(out, Overrides.rfold$iter_DoubleEndedIterator_u8_ends_folded_closure1_ends_Overrides(it, 1, (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; })); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _19, true)); rt.iterExtendBytes(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _60); + } else { + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _63); + } + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); } else { - _38 = Uint8Array.of(1, r2.error); + _66 = Uint8Array.of(1, r3.error); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(Overrides.next$iter_Iterator(it))); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) })), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.ownedCount(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, Overrides.count$iter_Iterator(it) & 0xff); @@ -1209,10 +1475,22 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r put(out, Overrides.last$iter_Iterator(it)); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }, true); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: Overrides.Overrides = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterFrom(_140, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart(), true); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }, true); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -1220,8 +1498,8 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt, true)); } else { put(out, rt.iterMax(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), rt.lt, true)); @@ -1234,39 +1512,53 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: Overrides.Overrides = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.ownedLast(rt.iterSkip(rt.iterFrom(_118, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _119))); + const _175: Overrides.Overrides = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.ownedLast(rt.iterSkip(rt.iterFrom(_175, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _176))); } else { - const _113: Overrides.Overrides = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterFrom(_113, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _114)) & 0xff); + const _170: Overrides.Overrides = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.ownedCount(rt.iterSkip(rt.iterFrom(_170, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; }, true)); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.ownedLast(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; }, true)); } } else if (pick === 12) { - const _139: Overrides.Overrides = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _140); + const _196: Overrides.Overrides = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_196, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: Overrides.Overrides = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: Overrides.Overrides = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterFrom(_216, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + }, true)); + } else { + const _210: Overrides.Overrides = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_210, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })); @@ -1276,9 +1568,9 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r put(out, rt.ownedLast(rt.iterFuse(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 })))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)) }))); rt.byteVecPush(out, rt.iterFrom(it, Overrides.next$iter_Iterator, undefined, { hint: Overrides.sizeHint$iter_Iterator, nth: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nth$iter_Iterator(it, n)), fold: Overrides.fold$iter_Iterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32, count: Overrides.count$iter_Iterator, last: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.last$iter_Iterator(it)), back: (it: Overrides.Overrides) => rt.iterFromOption(Overrides.nextBack$iter_DoubleEndedIterator(it)), nthBack: (it: Overrides.Overrides, n) => rt.iterFromOption(Overrides.nthBack$iter_DoubleEndedIterator(it, n)), rfold: Overrides.rfold$iter_DoubleEndedIterator_Option_u32_boxed_Box_dyn_ops_FnMut_tuple2_Option_u32_u8_Option_u32 }).len() & 0xff); @@ -1291,86 +1583,133 @@ export function folded$ends_Overrides(it: Overrides.Overrides, pick: rt.u8, k: r * fold panics past `k` items, with what was logged so far. */ export function folded$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, log: rt.RefCell, out: rt.ByteVec): void { - let _27!: Uint8Array; - let _38!: Uint8Array; - let _53!: Uint8Array; + let _50!: Uint8Array; + let r3!: rt.Result; + let _66!: Uint8Array; + let _84!: rt.u8 | undefined; + let _99!: Uint8Array; const k8: rt.u8 = k & 0xff; if (pick === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 1, (a12: rt.u8, b13: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a12, 3) ^ b13; + rt.byteVecPush(out, rt.iterFold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 1, (a16: rt.u8, b22: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a16, 3) ^ b22; })); } else if (pick === 1) { const _10: Run.Run = it; - const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a11: rt.u8, b12: rt.u8): rt.u8 => { + const _11: (a0: rt.u8, a1: rt.u8) => rt.u8 = (a15: rt.u8, b21: rt.u8): rt.u8 => { if (!(k < 15)) { - if (!(b12 !== 2)) { + if (!(b21 !== 2)) { const _1110: rt.ByteSlice = rt.byteVecSlice(rt.refCellBorrow(log).value); - const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b12, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; + const args2: rt.Fmt[] = [(f: rt.Formatter) => rt.u8Display(b21, f), (f: rt.Formatter) => rt.fmtList(rt.byteSliceView(_1110), f, rt.u8Debug)]; rt.panicFmt(["rfold at ", args2[0], " after ", args2[1]]); } } - return rt.u8WrappingMul(a11, 3) ^ b12; + return rt.u8WrappingMul(a15, 3) ^ b21; }; rt.byteVecPush(out, rt.iterRfold(rt.iterFrom(_10, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 1, _11)); } else if (pick === 2) { - if (!(rt.usizeRem(k, 2) === 0)) { - const r: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), undefined as rt.u8 | undefined, (a10: rt.u8 | undefined, b11: rt.u8): rt.u8 | undefined | rt.None => { - const _410: rt.u8 = rt.u8Rem(b11, 3); - if (_410 === 0) { - return rt.None; - } - if (_410 === 1) { - return undefined; + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 2)) { + if (!(rt.usizeRem(k, 4) === 3)) { + const r2: rt.u8 | undefined | rt.None = rt.iterTryRfold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), undefined as rt.u8 | undefined, (a14: rt.u8 | undefined, b20: rt.u8): rt.u8 | undefined | rt.None => { + const _416: rt.u8 = rt.u8Rem(b20, 3); + if (_416 === 0) { + return rt.None; + } + if (_416 === 1) { + return undefined; + } + return option_or$1loyskh(a14, b20); + }, true, undefined, rt.None); + if (r2 === rt.None) { + _50 = Uint8Array.of(1, 0); + } else { + _50 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r2, 255)); + } + rt.iterExtendBytes(out, rt.iterSlice(_50), undefined, true); + rt.iterExtendBytes(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); + } else { + const _38: (a0: rt.u8) => undefined | rt.None = (b19: rt.u8): undefined | rt.None => { + return then$19svsql(b19 !== rt.u8Div(k8, 4), (): undefined => { + rt.byteVecPush(out, b19); + }); + }; + rt.byteVecPush(out, rt.iterTryForEach(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _38, true, undefined, rt.None) !== rt.None ? 1 : 0); + rt.iterExtendBytes(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); } - return option_or$1loyskh(a10, b11); - }, true, undefined, rt.None); - if (r === rt.None) { - _27 = Uint8Array.of(1, 0); } else { - _27 = Uint8Array.of(0, option_unwrapOr$0r2bmpr(r, 255)); + const _29: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a13: rt.u8, b18: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b18 !== rt.u8Div(k8, 4), a13 ^ b18); + }; + put(out, rt.iterTryFold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _29, true)); + rt.iterExtendBytes(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); } - rt.iterExtendBytes(out, rt.iterSlice(_27), undefined, true); - rt.iterExtendBytes(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); } else { - const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a9: rt.u8, b10: rt.u8): rt.u8 | undefined => { - return thenSome$0d5am30(b10 !== k8, a9 ^ b10); + const _19: (a0: rt.u8, a1: rt.u8) => rt.u8 | undefined = (a12: rt.u8, b17: rt.u8): rt.u8 | undefined => { + return thenSome$0d5am30(b17 !== k8, a12 ^ b17); }; put(out, rt.iterTryRfold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _19, true)); rt.iterExtendBytes(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), "next"); } } else if (pick === 3) { - const _35: (a0: rt.u8, a1: rt.u8) => rt.Result = (a8: rt.u8, b9: rt.u8): rt.Result => { - if (!(rt.u8Rem(b9, 4) === rt.u8Rem(k8, 4))) { - return rt.Ok(a8 ^ b9); - } - return rt.Err(b9); - }; - const r2: rt.Result = rt.iterTryRfold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _35); - if (r2.ok) { - _38 = Uint8Array.of(0, r2.value); + if (rt.usizeRem(k, 2) === 0) { + const _60: (a0: rt.u8, a1: rt.u8) => rt.Result = (a11: rt.u8, b16: rt.u8): rt.Result => { + if (!(rt.u8Rem(b16, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a11 ^ b16); + } + return rt.Err(b16); + }; + r3 = rt.iterTryRfold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _60); + } else { + const _63: (a0: rt.u8, a1: rt.u8) => rt.Result = (a10: rt.u8, b15: rt.u8): rt.Result => { + if (!(rt.u8Rem(b15, 4) === rt.u8Rem(k8, 4))) { + return rt.Ok(a10 ^ b15); + } + return rt.Err(b15); + }; + r3 = rt.iterTryFold(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _63); + } + if (r3.ok) { + _66 = Uint8Array.of(0, r3.value); } else { - _38 = Uint8Array.of(1, r2.error); + _66 = Uint8Array.of(1, r3.error); } - rt.iterExtendBytes(out, rt.iterSlice(_38), undefined, true); + rt.iterExtendBytes(out, rt.iterSlice(_66), undefined, true); put(out, rt.iterToOption(Run.next$iter_Iterator(it))); } else if (pick === 4) { - const r3: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 0, (a7: rt.u8, b8: rt.u8): rt.Result => { - if (!(b8 > k8)) { - return rt.Ok(a7 ^ b8); + if (!(rt.usizeRem(k, 2) === 1)) { + const r5: rt.Result = rt.iterTryRfold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 0, (a9: rt.u8, b14: rt.u8): rt.Result => { + if (!(b14 > k8)) { + return rt.Ok(a9 ^ b14); + } + return rt.Err(b14); + }); + if (r5.ok) { + _99 = Uint8Array.of(0, r5.value); + } else { + _99 = Uint8Array.of(1, r5.error); } - return rt.Err(b8); - }); - if (r3.ok) { - _53 = Uint8Array.of(0, r3.value); + rt.iterExtendBytes(out, rt.iterSlice(_99), undefined, true); + rt.byteVecPush(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } else { - _53 = Uint8Array.of(1, r3.error); + const r4: rt.Result = rt.iterTryForEach(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), (b13: rt.u8): rt.Result => { + if (!(b13 > rt.u8Div(k8, 2))) { + rt.byteVecPush(out, b13); + return rt.OK; + } + return rt.Err(b13); + }); + if (r4.ok) { + _84 = undefined; + } else { + _84 = r4.error; + } + put(out, _84); + rt.byteVecPush(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } - rt.iterExtendBytes(out, rt.iterSlice(_53), undefined, true); - rt.byteVecPush(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff); } else if (pick === 5) { if (!(rt.usizeRem(k, 2) === 0)) { - rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b7: rt.u8): rt.u8 => { - return b7 ^ 1; + rt.byteVecPush(out, rt.iterCount(rt.iterMap(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b12: rt.u8): rt.u8 => { + return b12 ^ 1; })) & 0xff); } else { rt.byteVecPush(out, rt.iterCount(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })) & 0xff); @@ -1382,10 +1721,22 @@ export function folded$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, log: rt.R put(out, rt.iterLast(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }))); } } else if (pick === 7) { - if (!(rt.usizeRem(k, 2) === 0)) { - rt.iterForEach(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b6: rt.u8): undefined => { - rt.byteVecPush(out, b6); - }); + if (!(rt.usizeRem(k, 4) === 0)) { + if (!(rt.usizeRem(k, 4) === 1)) { + const _140: Run.Run = it; + const _141: (a0: rt.u8) => boolean = (b11: rt.u8): boolean => { + return rt.u8Rem(b11, 3) === rt.u8Rem(k8, 3); + }; + const _139: [rt.ByteVec, rt.ByteVec] = rt.iterPartition(rt.iterFrom(_140, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _141, [new rt.ByteVec() as rt.ByteVec, new rt.ByteVec() as rt.ByteVec], rt.byteVecPart()); + const a4: rt.ByteVec = _139[0]; + const b4: rt.ByteVec = _139[1]; + putVec(out, a4); + putVec(out, b4); + } else { + rt.iterForEach(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b10: rt.u8): undefined => { + rt.byteVecPush(out, b10); + }); + } } else { rt.byteVecPush(out, rt.iterSum(rt.iterMap(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (a0: rt.u8): rt.u32 => { return a0 as rt.u32; @@ -1393,8 +1744,8 @@ export function folded$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, log: rt.R } } else if (pick === 8) { if (!(rt.usizeRem(k, 2) === 0)) { - put(out, rt.iterMinByKey(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b5: rt.u8): rt.u8 => { - return rt.u8Rem(b5, 3); + put(out, rt.iterMinByKey(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), (b9: rt.u8): rt.u8 => { + return rt.u8Rem(b9, 3); }, rt.lt)); } else { put(out, rt.iterMax(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), rt.lt)); @@ -1407,39 +1758,53 @@ export function folded$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, log: rt.R } } else if (pick === 10) { if (!(rt.usizeRem(k, 2) === 0)) { - const _118: Run.Run = it; - const _119: rt.usize = rt.usizeDiv(k, 2); - put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_118, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _119))); + const _175: Run.Run = it; + const _176: rt.usize = rt.usizeDiv(k, 2); + put(out, rt.iterLast(rt.iterSkip(rt.iterFrom(_175, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _176))); } else { - const _113: Run.Run = it; - const _114: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_113, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _114)) & 0xff); + const _170: Run.Run = it; + const _171: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterCount(rt.iterSkip(rt.iterFrom(_170, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _171)) & 0xff); } } else if (pick === 11) { - const _121: rt.usize = rt.usizeRem(k, 4); - if (_121 === 0) { - rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a6: rt.u8, b4: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a6, 5) ^ b4; + const _178: rt.usize = rt.usizeRem(k, 4); + if (_178 === 0) { + rt.byteVecPush(out, rt.iterFold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a8: rt.u8, b8: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a8, 5) ^ b8; })); - } else if (_121 === 1) { + } else if (_178 === 1) { put(out, rt.iterNth(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), rt.usizeDiv(k, 4))); - } else if (_121 === 2) { + } else if (_178 === 2) { put(out, rt.iterLast(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })))); } else { - rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a5: rt.u8, b3: rt.u8): rt.u8 => { - return rt.u8WrappingMul(a5, 5) ^ b3; + rt.byteVecPush(out, rt.iterRfold(rt.iterRev(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })), 1, (a7: rt.u8, b7: rt.u8): rt.u8 => { + return rt.u8WrappingMul(a7, 5) ^ b7; })); } } else if (pick === 12) { - const _139: Run.Run = it; - const _140: rt.usize = rt.usizeDiv(k, 2); - const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_139, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _140); + const _196: Run.Run = it; + const _197: rt.usize = rt.usizeDiv(k, 2); + const skip: rt.Iter = rt.iterSkip(rt.iterFrom(_196, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _197); put(out, rt.iterToOption(skip.next())); put(out, rt.iterToOption(skip.nextBack())); } else if (pick === 13) { - const _150: Run.Run = it; - const _151: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); - putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_150, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _151), "next")); + if (!(rt.usizeRem(k, 2) === 0)) { + const _216: Run.Run = it; + const _217: (a0: rt.Place, a1: rt.u8) => rt.u8 | undefined = (s: rt.Place, b5: rt.u8): rt.u8 | undefined => { + s.v = s.v ^ b5; + return thenSome$0d5am30(s.v !== rt.u8Div(k8, 2), s.v); + }; + const scan: rt.Iter = rt.iterScan(rt.iterFrom(_216, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), 0, _217, true); + putVec(out, rt.iterToByteVec(rt.iterBorrow(scan), "next")); + put(out, rt.iterToOption(scan.next())); + rt.byteVecPush(out, rt.iterFold(scan, 0, (a6: rt.u8, b6: rt.u8): rt.u8 => { + return a6 ^ b6; + })); + } else { + const _210: Run.Run = it; + const _211: rt.usize = rt.usizeAdd(rt.usizeDiv(k, 4), 1); + putVec(out, rt.iterToByteVec(rt.iterStepBy(rt.iterFrom(_210, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _211), "next")); + } } else if (pick === 14) { if (!(rt.usizeRem(k, 2) === 0)) { const peek: rt.Peekable = rt.iterPeekable(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })); @@ -1449,9 +1814,9 @@ export function folded$ends_Run(it: Run.Run, pick: rt.u8, k: rt.usize, log: rt.R put(out, rt.iterLast(rt.iterFuse(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) })))); } } else { - const _175: rt.usize = rt.usizeDiv(k, 2); - rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _175), 0, (a4: rt.u8, _3: rt.u8): rt.u8 => { - return rt.u8Add(a4, 1); + const _249: rt.usize = rt.usizeDiv(k, 2); + rt.byteVecPush(out, rt.iterFold(rt.iterTake(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }), _249), 0, (a5: rt.u8, _3: rt.u8): rt.u8 => { + return rt.u8Add(a5, 1); })); put(out, rt.iterLast(rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }))); rt.byteVecPush(out, rt.iterFrom(it, Run.next$iter_Iterator, undefined, { hint: Run.sizeHint$iter_Iterator, back: (it: Run.Run) => rt.iterFromOption(Run.nextBack$iter_DoubleEndedIterator(it)) }).len() & 0xff);