about summary refs log tree commit diff
path: root/compiler/rustc_codegen_cranelift/example/std_example.rs
diff options
context:
space:
mode:
authorNicholas Nethercote <n.nethercote@gmail.com>2024-05-13 08:57:42 +1000
committerNicholas Nethercote <n.nethercote@gmail.com>2024-05-13 10:11:29 +1000
commit5e7a80b2d2462060e81295ea6a044f7012bba8cb (patch)
tree5e84e612d5933795a9f083fc7d53b37736ec0284 /compiler/rustc_codegen_cranelift/example/std_example.rs
parent852a78ea8de3aa24c50457340d9560547bc67008 (diff)
downloadrust-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