implemented observable types for live updates
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -3,5 +3,5 @@
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "docki-cli"
|
||||
name = "docki"
|
||||
version = "0.1.0"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
mod commands;
|
||||
pub mod builder;
|
||||
pub mod rx;
|
||||
|
||||
use std::collections::HashMap;
|
||||
|
||||
|
||||
24
src/app/rx/mod.rs
Normal file
24
src/app/rx/mod.rs
Normal file
@@ -0,0 +1,24 @@
|
||||
type Subscriber<T> = fn(value: T) -> ();
|
||||
|
||||
pub struct Observable<T: Copy> {
|
||||
subscriber: Vec<Subscriber<T>>
|
||||
}
|
||||
|
||||
impl<T: Copy> Observable<T> {
|
||||
|
||||
pub fn new() -> Observable<T> {
|
||||
return Observable {
|
||||
subscriber: Vec::new(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn next(&self, value: T) {
|
||||
for callback in &self.subscriber {
|
||||
callback(value);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn subscribe(&mut self, subscriber: Subscriber<T>) {
|
||||
self.subscriber.push(subscriber);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
mod app;
|
||||
|
||||
#[cfg(test)]
|
||||
mod test;
|
||||
|
||||
use std::env;
|
||||
|
||||
use app::App;
|
||||
|
||||
13
src/test/mod.rs
Normal file
13
src/test/mod.rs
Normal file
@@ -0,0 +1,13 @@
|
||||
use crate::app::rx::Observable;
|
||||
|
||||
#[test]
|
||||
fn test_observable() {
|
||||
let mut observable: Observable<u32> = Observable::new();
|
||||
|
||||
observable.subscribe(|value| {
|
||||
assert_eq!(5, value);
|
||||
});
|
||||
|
||||
observable.next(5);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user