diff options
Diffstat (limited to 'crates/ra_hir_def/src/item_tree.rs')
-rw-r--r-- | crates/ra_hir_def/src/item_tree.rs | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/crates/ra_hir_def/src/item_tree.rs b/crates/ra_hir_def/src/item_tree.rs index fd874750e..8c93e3adf 100644 --- a/crates/ra_hir_def/src/item_tree.rs +++ b/crates/ra_hir_def/src/item_tree.rs | |||
@@ -699,18 +699,19 @@ pub struct Variant { | |||
699 | } | 699 | } |
700 | 700 | ||
701 | #[derive(Debug, Clone, PartialEq, Eq)] | 701 | #[derive(Debug, Clone, PartialEq, Eq)] |
702 | pub struct FieldIds { | 702 | pub struct IdRange<T> { |
703 | range: Range<u32>, | 703 | range: Range<u32>, |
704 | _p: PhantomData<T>, | ||
704 | } | 705 | } |
705 | 706 | ||
706 | impl FieldIds { | 707 | impl<T> IdRange<T> { |
707 | fn new(range: Range<Idx<Field>>) -> Self { | 708 | fn new(range: Range<Idx<T>>) -> Self { |
708 | Self { range: range.start.into_raw().into()..range.end.into_raw().into() } | 709 | Self { range: range.start.into_raw().into()..range.end.into_raw().into(), _p: PhantomData } |
709 | } | 710 | } |
710 | } | 711 | } |
711 | 712 | ||
712 | impl Iterator for FieldIds { | 713 | impl<T> Iterator for IdRange<T> { |
713 | type Item = Idx<Field>; | 714 | type Item = Idx<T>; |
714 | fn next(&mut self) -> Option<Self::Item> { | 715 | fn next(&mut self) -> Option<Self::Item> { |
715 | self.range.next().map(|raw| Idx::from_raw(raw.into())) | 716 | self.range.next().map(|raw| Idx::from_raw(raw.into())) |
716 | } | 717 | } |
@@ -718,8 +719,8 @@ impl Iterator for FieldIds { | |||
718 | 719 | ||
719 | #[derive(Debug, Clone, PartialEq, Eq)] | 720 | #[derive(Debug, Clone, PartialEq, Eq)] |
720 | pub enum Fields { | 721 | pub enum Fields { |
721 | Record(FieldIds), | 722 | Record(IdRange<Field>), |
722 | Tuple(FieldIds), | 723 | Tuple(IdRange<Field>), |
723 | Unit, | 724 | Unit, |
724 | } | 725 | } |
725 | 726 | ||