]> git.lizzy.rs Git - rust.git/commit
Merge #10995
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>
Sun, 12 Dec 2021 16:38:56 +0000 (16:38 +0000)
committerGitHub <noreply@github.com>
Sun, 12 Dec 2021 16:38:56 +0000 (16:38 +0000)
commitdb2a7087b994e20f264f26ad6db75184282ad120
treedc2644c96f3cea0e29539a236112211d3b82ee6c
parentfc628cfc8952faa370e650d055c06205e923e7e6
parent3b5b988526b9cec74422f46e20ab1b2f9826d39c
Merge #10995

10995: internal: switch from trait-based TokenSource to simple struct of arrays r=matklad a=matklad

cc #10765

The idea here is to try to simplify the interface as best as we can. The original trait-based approach is a bit over-engineered and hard to debug. Here, we replace callback with just data. The next PR in series will replace the output `TreeSink` trait with data as well.

The biggest drawback here is that we now require to materialize all parser's input up-front. This is a bad fit for macro by example: when you parse `$e:expr`, you might consume only part of the input. However, today's trait-based solution doesn't really help -- we were already materializing the whole thing! So, let's keep it simple!

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>