aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/item_tree.rs
diff options
context:
space:
mode:
authorJonas Schievink <[email protected]>2020-06-25 15:42:59 +0100
committerJonas Schievink <[email protected]>2020-06-25 15:42:59 +0100
commitb06214d16408e0b699f9d6051ba244e5fe766578 (patch)
tree0bf8eb18ca876b4b31395c486d20ed6320df836b /crates/ra_hir_def/src/item_tree.rs
parent2a8fc9e6829c15a54e9094b940312e9485c6b79a (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.rs17
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)]
702pub struct FieldIds { 702pub struct IdRange<T> {
703 range: Range<u32>, 703 range: Range<u32>,
704 _p: PhantomData<T>,
704} 705}
705 706
706impl FieldIds { 707impl<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
712impl Iterator for FieldIds { 713impl<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)]
720pub enum Fields { 721pub enum Fields {
721 Record(FieldIds), 722 Record(IdRange<Field>),
722 Tuple(FieldIds), 723 Tuple(IdRange<Field>),
723 Unit, 724 Unit,
724} 725}
725 726