feat: return iterator from list functions
This commit is contained in:
@@ -54,35 +54,30 @@ impl O {
|
|||||||
.map(|item| T::from(item.clone()));
|
.map(|item| T::from(item.clone()));
|
||||||
items.next()
|
items.next()
|
||||||
}
|
}
|
||||||
pub fn list_by_class<T>(&self, class: &str) -> Vec<T>
|
pub fn list_by_class<T>(&self, class: &str) -> impl Iterator<Item = T>
|
||||||
where
|
where
|
||||||
T: From<Entity>,
|
T: From<Entity>,
|
||||||
{
|
{
|
||||||
let items: Vec<T> = self
|
self.items
|
||||||
.items
|
|
||||||
.values()
|
.values()
|
||||||
.filter(|item| item.class == class)
|
.filter(move |item| item.class == class)
|
||||||
.map(|item| T::from(item.clone()))
|
.map(|item| T::from(item.clone()))
|
||||||
.collect();
|
|
||||||
items
|
|
||||||
}
|
}
|
||||||
pub fn list_by_class_and_attribute<T>(
|
pub fn list_by_class_and_attribute<T>(
|
||||||
&self,
|
&self,
|
||||||
class: &str,
|
class: &str,
|
||||||
attribute: &str,
|
attribute: &str,
|
||||||
value: impl Into<Value> + Clone,
|
value: impl Into<Value> + Clone,
|
||||||
) -> Vec<T>
|
) -> impl Iterator<Item = T>
|
||||||
where
|
where
|
||||||
T: From<Entity>,
|
T: From<Entity>,
|
||||||
{
|
{
|
||||||
let items: Vec<T> = self
|
let value: Value = value.into();
|
||||||
.items
|
self.items
|
||||||
.values()
|
.values()
|
||||||
.filter(|item| item.class == class)
|
.filter(move |item| item.class == class)
|
||||||
.filter(|item| item.value_of(attribute) == Some(&value.clone().into()))
|
.filter(move |item| item.value_of(attribute) == Some(&value))
|
||||||
.map(|item| T::from(item.clone()))
|
.map(|item| T::from(item.clone()))
|
||||||
.collect();
|
|
||||||
items
|
|
||||||
}
|
}
|
||||||
pub fn persist(&self) {
|
pub fn persist(&self) {
|
||||||
let path = path::Path::new(&self.path);
|
let path = path::Path::new(&self.path);
|
||||||
|
|||||||
Reference in New Issue
Block a user