3 Commits
lts ... master

Author SHA1 Message Date
27a15a5d07 Fix linter warnings 2024-08-10 23:09:52 +02:00
2b89a4169b Switch to iterators 2020-07-28 10:26:05 +02:00
5b5d3a9b64 Clean up Cargo.toml 2020-07-28 10:13:58 +02:00
3 changed files with 16 additions and 17 deletions

View File

@@ -19,6 +19,6 @@ license = "MIT"
include = ["Cargo.toml", "README.md", "LICENSE", "ACKNOWLEDGEMENTS", "src/**/*.rs"]
[dependencies]
ironsea_index = "^0.1"
ironsea_index = "0.1"
serde = { version = "^1.0", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }

View File

@@ -84,25 +84,23 @@ impl<F, K> IndexedDestructured<F, K> for Index<F, K>
where
K: Clone + Eq + Hash + PartialEq + Ord,
{
fn find(&self, key: &K) -> Vec<&F> {
fn find<'i>(&'i self, key: &K) -> Box<dyn Iterator<Item = &F> + 'i> {
let mut values = vec![];
if let Some(fields) = self.hashmap.get(key) {
values.push(fields);
}
values
Box::new(values.into_iter())
}
fn find_range(&self, start: &K, end: &K) -> Vec<(K, &F)> {
fn find_range<'i>(&'i self, start: &K, end: &K) -> Box<dyn Iterator<Item = (K, &F)> + 'i> {
let start = self.index(start);
let end = self.index(end);
(start..end)
.filter_map(|i| {
let key = &self.keys[i];
self.hashmap.get(key).map(|fields| (key.clone(), fields))
})
.collect()
Box::new((start..=end).filter_map(move |i| {
let key = &self.keys[i];
self.hashmap.get(key).map(|fields| (key.clone(), fields))
}))
}
}

View File

@@ -85,22 +85,23 @@ where
R: Record<K>,
K: Clone + Eq + Hash + PartialEq + Ord,
{
fn find(&self, key: &K) -> Vec<&R> {
fn find<'i>(&'i self, key: &K) -> Box<dyn Iterator<Item = &R> + 'i> {
let mut values = vec![];
if let Some(record) = self.hashmap.get(key) {
values.push(record);
}
values
Box::new(values.into_iter())
}
fn find_range(&self, start: &K, end: &K) -> Vec<&R> {
fn find_range<'i>(&'i self, start: &K, end: &K) -> Box<dyn Iterator<Item = &R> + 'i> {
let start = self.index(start);
let end = self.index(end);
(start..end)
.filter_map(|i| self.hashmap.get(&self.keys[i]))
.collect()
Box::new((start..=end).filter_map(move |i| {
let k = &self.keys[i];
self.hashmap.get(k)
}))
}
}