diff --git a/examples/functions.rs b/examples/functions.rs index 7783239..a4b4a7d 100644 --- a/examples/functions.rs +++ b/examples/functions.rs @@ -9,8 +9,9 @@ fn main() { let (input, output) = rally(items, |item: &_| { std::thread::sleep(Duration::from_millis(item * 100)); - return 0; - }); + return Some(0); + }) + .unwrap(); println!("RALLY RESULTS: {input:?} -> {output:?}"); } diff --git a/src/lib.rs b/src/lib.rs index 75d91aa..293521c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -27,7 +27,7 @@ pub static UNION: Lazy< /// Rally Function /// /// This executes a thread for every item executing `f(&item) -> X`. Whatever function returns first is returned while every other thread is killed. -pub fn rally(items: Vec, f: F) -> (T, X) +pub fn rally(items: Vec, f: F) -> Option<(T, X)> where F: Fn(&T) -> Option + Send + Sync + Copy + 'static, { @@ -67,11 +67,11 @@ where log::info!("Rally ended with {items_len} items in {elapsed:?}"); - return (fastest_item, fastest_result.unwrap()); + return Some((fastest_item, fastest_result.unwrap())); } } - panic!("No useable results in rally") + None } pub fn retry Option>(f: F) -> O { diff --git a/src/service.rs b/src/service.rs index 9cf3f37..309dc51 100644 --- a/src/service.rs +++ b/src/service.rs @@ -61,8 +61,6 @@ pub struct ServiceManager { pub mode: ServiceMode, } -// TODO : impl decay mode - /// The mode on which services should operate pub enum ServiceMode { /// Behave like a daemon. Services can never die and will come back to life after beeing killed. They will always haunt you.