diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2024-05-13 08:57:42 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2024-05-13 10:11:29 +1000 |
| commit | 5e7a80b2d2462060e81295ea6a044f7012bba8cb (patch) | |
| tree | 5e84e612d5933795a9f083fc7d53b37736ec0284 /compiler/rustc_codegen_cranelift/example/std_example.rs | |
| parent | 852a78ea8de3aa24c50457340d9560547bc67008 (diff) | |
| download | rust-5e7a80b2d2462060e81295ea6a044f7012bba8cb.tar.gz rust-5e7a80b2d2462060e81295ea6a044f7012bba8cb.zip | |
Make handling of `Comments` more iterator-like.
The current way of stepping through each comment in `Comments` is a bit weird. There is a `Vec<Comments>` and a `current` index, which is fine. The `Comments::next` method clones the current comment but doesn't advance `current`; the advancing instead happens in `print_comment`, which is where each cloned comment is actually finally used (or not, in some cases, if the comment fails to satisfy a predicate). This commit makes things more iterator-like: - `Comments::next` now advances `current` instead of `print_comment`. - `Comments::peek` is added so you can inspect a comment and check a predicate without consuming it. - This requires splitting `PrintState::comments` into immutable and mutable versions. The commit also moves the ref inside the `Option` of the return type, to save callers from having to use `as_ref`/`as_mut`. - It also requires adding `PrintState::peek_comment` alongside the existing `PrintState::next_comment`. (The lifetimes in the signature of `peek_comment` ended up more complex than I expected.) We now have a neat separation between consuming (`next`) and non-consuming (`peek`) uses of each comment. As well as being clearer, this will facilitate the next commit that avoids unnecessary cloning.
Diffstat (limited to 'compiler/rustc_codegen_cranelift/example/std_example.rs')
0 files changed, 0 insertions, 0 deletions
