aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/item_tree.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir_def/src/item_tree.rs')
-rw-r--r--crates/ra_hir_def/src/item_tree.rs22
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)]
685pub struct FieldIds {
686 range: Range<u32>,
687}
688
689impl 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
695impl 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)]
685pub enum Fields { 703pub 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