feat: modify recipe
- add recipe01 modifier function using callbacks for easing in filtering find loop. Signed-off-by: Pakin <pakin.t@forth.co.th>
This commit is contained in:
parent
2001888cd2
commit
777c5ebd01
1 changed files with 39 additions and 0 deletions
|
|
@ -2,6 +2,7 @@ use std::{
|
||||||
collections::{BTreeMap, HashMap},
|
collections::{BTreeMap, HashMap},
|
||||||
fs::File,
|
fs::File,
|
||||||
io,
|
io,
|
||||||
|
sync::atomic::AtomicBool,
|
||||||
};
|
};
|
||||||
|
|
||||||
use chrono::{DateTime, NaiveDateTime};
|
use chrono::{DateTime, NaiveDateTime};
|
||||||
|
|
@ -708,6 +709,44 @@ impl Recipe {
|
||||||
|
|
||||||
product_code_split.first().unwrap().to_string()
|
product_code_split.first().unwrap().to_string()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Modifying recipes by callback
|
||||||
|
pub fn modify_recipes<F, C>(
|
||||||
|
&mut self,
|
||||||
|
cond: F,
|
||||||
|
callback: C,
|
||||||
|
) -> Result<(), Box<dyn std::error::Error>>
|
||||||
|
where
|
||||||
|
F: Fn(&mut Recipe01) -> bool,
|
||||||
|
C: Fn(&mut Recipe01) -> (),
|
||||||
|
{
|
||||||
|
self.Recipe01.iter_mut().for_each(|x| {
|
||||||
|
if cond(x) {
|
||||||
|
callback(x)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Modifying recipe by callback, and only matched once.
|
||||||
|
pub fn modify_recipe_once<F, C>(
|
||||||
|
&mut self,
|
||||||
|
cond: F,
|
||||||
|
callback: C,
|
||||||
|
) -> Result<(), Box<dyn std::error::Error>>
|
||||||
|
where
|
||||||
|
F: Fn(&mut Recipe01) -> bool,
|
||||||
|
C: Fn(&mut Recipe01) -> (),
|
||||||
|
{
|
||||||
|
let mut ab = AtomicBool::new(false);
|
||||||
|
self.Recipe01.iter_mut().for_each(|x| {
|
||||||
|
if cond(x) && !*ab.get_mut() {
|
||||||
|
callback(x);
|
||||||
|
ab.store(true, std::sync::atomic::Ordering::SeqCst);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// impl CommonCompressTrait for Recipe {
|
// impl CommonCompressTrait for Recipe {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue