From 3399cea18a9181663dac02701f882ab616d67269 Mon Sep 17 00:00:00 2001 From: "Carol (Nichols || Goulding)" Date: Mon, 10 Feb 2020 16:26:54 -0500 Subject: [PATCH] refactor: Extract a trait to make read_*_range fns more similar --- src/storage/memdb.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/storage/memdb.rs b/src/storage/memdb.rs index 4a07b44e4c..59fcbfeb9c 100644 --- a/src/storage/memdb.rs +++ b/src/storage/memdb.rs @@ -402,7 +402,7 @@ impl MemDB { }; let data = data.lock().unwrap(); - let buff = match data.i64_series.get(&series_id) { + let buff = match FromSeries::from_series(&data, &series_id) { Some(b) => b, None => return Err(StorageError{description: format!("series {} not found", series_id)}), }; @@ -425,7 +425,7 @@ impl MemDB { }; let data = data.lock().unwrap(); - let buff = match data.f64_series.get(&series_id) { + let buff = match FromSeries::from_series(&data, &series_id) { Some(b) => b, None => return Err(StorageError{description: format!("series {} not found", series_id)}), }; @@ -435,6 +435,22 @@ impl MemDB { } } +trait FromSeries: Clone { + fn from_series<'a>(data: &'a SeriesData, series_id: &u64) -> Option<&'a SeriesRingBuffer>; +} + +impl FromSeries for i64 { + fn from_series<'a>(data: &'a SeriesData, series_id: &u64) -> Option<&'a SeriesRingBuffer> { + data.i64_series.get(series_id) + } +} + +impl FromSeries for f64 { + fn from_series<'a>(data: &'a SeriesData, series_id: &u64) -> Option<&'a SeriesRingBuffer> { + data.f64_series.get(series_id) + } +} + struct PointsIterator { values: Option>>, batch_size: usize,