Struct flowync::Flower [−][src]
pub struct Flower<SOME, OK> where
SOME: Clone + Send + Sync + 'static,
OK: Clone + Send + Sync + 'static, { /* fields omitted */ }Expand description
Flow loosely and gracefully.
Where:
SOME: type of sender (channel) value
OK: type of Ok value (Result<‘OK’, String>, and Err value always return String)
Quick Example:
use flowync::Flower;
fn main() {
let flower = Flower::<i32, String>::new(1);
std::thread::spawn({
let handle = flower.handle();
move || {
for i in 0..10 {
// Send current value through channel, will block the spawned thread
// until the option value successfully being polled in the main thread.
handle.send(i);
// // Return error if the job is failure, for example:
// if i >= 3 {
// return handle.err("Err".to_string());
// }
}
// And return ok if the job successfully completed.
return handle.ok("Ok".to_string());
}
});
let mut exit = false;
loop {
// Starting from version 1.x.x instead of polling the mutex over and over,
// the fn will be activated automatically if the handle sending or return a value
// and will deactivate itself if the result value successfully received.
// Note: this fn is non-blocking (won't block the current thread).
flower.try_recv(
|value| {
println!("{}", value);
},
|result| {
match result {
Ok(value) => {
println!("{}", value);
}
Err(e) => {
println!("{}", e);
}
}
exit = true;
},
);
if exit {
break;
}
}
}Implementations
Get handle of the flower.
Trait Implementations
Auto Trait Implementations
impl<SOME, OK> !RefUnwindSafe for Flower<SOME, OK>
impl<SOME, OK> !UnwindSafe for Flower<SOME, OK>
Blanket Implementations
Mutably borrows from an owned value. Read more