From 586acef5283e78f19e5e9daf4e8aac40e2a9ff16 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 24 Nov 2019 22:44:24 +0300 Subject: Simplify ADT fields --- crates/ra_arena/src/lib.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'crates/ra_arena') diff --git a/crates/ra_arena/src/lib.rs b/crates/ra_arena/src/lib.rs index 3ec8d3b60..984e1eec3 100644 --- a/crates/ra_arena/src/lib.rs +++ b/crates/ra_arena/src/lib.rs @@ -37,7 +37,7 @@ impl fmt::Display for RawId { } #[derive(Clone, PartialEq, Eq)] -pub struct Arena { +pub struct Arena { data: Vec, _ty: PhantomData, } @@ -67,6 +67,12 @@ pub trait ArenaId { fn into_raw(self) -> RawId; } +impl Arena { + pub const fn new() -> Arena { + Arena { data: Vec::new(), _ty: PhantomData } + } +} + impl Arena { pub fn len(&self) -> usize { self.data.len() -- cgit v1.2.3 From d06904e90cdc1603ffcb714e70dab83905221f72 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 24 Nov 2019 23:48:39 +0300 Subject: Switch to variant-granularity field type inference --- crates/ra_arena/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'crates/ra_arena') diff --git a/crates/ra_arena/src/lib.rs b/crates/ra_arena/src/lib.rs index 984e1eec3..fc0f7c12f 100644 --- a/crates/ra_arena/src/lib.rs +++ b/crates/ra_arena/src/lib.rs @@ -85,7 +85,7 @@ impl Arena { self.data.push(value); ID::from_raw(id) } - pub fn iter(&self) -> impl Iterator + ExactSizeIterator { + pub fn iter(&self) -> impl Iterator + ExactSizeIterator + DoubleEndedIterator { self.data.iter().enumerate().map(|(idx, value)| (ID::from_raw(RawId(idx as u32)), value)) } } -- cgit v1.2.3