diff options
author | Jonas Schievink <[email protected]> | 2020-06-25 15:42:59 +0100 |
---|---|---|
committer | Jonas Schievink <[email protected]> | 2020-06-25 15:42:59 +0100 |
commit | b06214d16408e0b699f9d6051ba244e5fe766578 (patch) | |
tree | 0bf8eb18ca876b4b31395c486d20ed6320df836b /crates/ra_hir_def/src/item_tree.rs | |
parent | 2a8fc9e6829c15a54e9094b940312e9485c6b79a (diff) |
Generalize FieldIds -> IdRange<T>
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 | ||