diff options
author | Jonas Schievink <[email protected]> | 2020-06-25 12:50:27 +0100 |
---|---|---|
committer | Jonas Schievink <[email protected]> | 2020-06-25 12:50:27 +0100 |
commit | 9ba772657950cb8353f37bc2576b78c4f0c8996f (patch) | |
tree | cc63a79f90006ad761202ca7b2a38c3c16be394f /crates/ra_hir_def/src/item_tree.rs | |
parent | e2465ee2e949d81f98270c57afa17666dac6afa4 (diff) |
Allow iterating fields in the ItemTree
Diffstat (limited to 'crates/ra_hir_def/src/item_tree.rs')
-rw-r--r-- | crates/ra_hir_def/src/item_tree.rs | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/crates/ra_hir_def/src/item_tree.rs b/crates/ra_hir_def/src/item_tree.rs index d7bc64e6c..f99e05432 100644 --- a/crates/ra_hir_def/src/item_tree.rs +++ b/crates/ra_hir_def/src/item_tree.rs | |||
@@ -682,9 +682,27 @@ pub struct Variant { | |||
682 | } | 682 | } |
683 | 683 | ||
684 | #[derive(Debug, Clone, PartialEq, Eq)] | 684 | #[derive(Debug, Clone, PartialEq, Eq)] |
685 | pub struct FieldIds { | ||
686 | range: Range<u32>, | ||
687 | } | ||
688 | |||
689 | impl FieldIds { | ||
690 | fn new(range: Range<Idx<Field>>) -> Self { | ||
691 | Self { range: range.start.into_raw().into()..range.end.into_raw().into() } | ||
692 | } | ||
693 | } | ||
694 | |||
695 | impl Iterator for FieldIds { | ||
696 | type Item = Idx<Field>; | ||
697 | fn next(&mut self) -> Option<Self::Item> { | ||
698 | self.range.next().map(|raw| Idx::from_raw(raw.into())) | ||
699 | } | ||
700 | } | ||
701 | |||
702 | #[derive(Debug, Clone, PartialEq, Eq)] | ||
685 | pub enum Fields { | 703 | pub enum Fields { |
686 | Record(Range<Idx<Field>>), | 704 | Record(FieldIds), |
687 | Tuple(Range<Idx<Field>>), | 705 | Tuple(FieldIds), |
688 | Unit, | 706 | Unit, |
689 | } | 707 | } |
690 | 708 | ||