add to_sequence() in ViewPort<Vec>
This commit is contained in:
parent
4fceafcac4
commit
fffb23cd12
2 changed files with 14 additions and 6 deletions
|
@ -78,11 +78,9 @@ async fn main() {
|
||||||
let vec_port = ViewPort::new();
|
let vec_port = ViewPort::new();
|
||||||
let mut vec_buf = sequence::VecBuffer::<char>::new(vec_port.inner());
|
let mut vec_buf = sequence::VecBuffer::<char>::new(vec_port.inner());
|
||||||
|
|
||||||
// project Vec-Buffer to SequenceView
|
// project Vec-Buffer
|
||||||
let vec_seq_port = ViewPort::new();
|
let vec_term_view = vec_port.outer()
|
||||||
let vec_seq = sequence::VecSequence::new(vec_seq_port.inner());
|
.to_sequence()
|
||||||
vec_port.add_observer(vec_seq.clone());
|
|
||||||
let vec_term_view = vec_seq_port.outer()
|
|
||||||
.to_index()
|
.to_index()
|
||||||
.map_key(
|
.map_key(
|
||||||
|idx: &usize| Point2::<i16>::new(*idx as i16, 0),
|
|idx: &usize| Point2::<i16>::new(*idx as i16, 0),
|
||||||
|
|
|
@ -3,7 +3,7 @@ use {
|
||||||
sync::{Arc, RwLock}
|
sync::{Arc, RwLock}
|
||||||
},
|
},
|
||||||
crate::{
|
crate::{
|
||||||
core::{View, Observer, ObserverExt, ObserverBroadcast, InnerViewPort},
|
core::{View, Observer, ObserverExt, ObserverBroadcast, ViewPort, InnerViewPort, OuterViewPort},
|
||||||
sequence::SequenceView,
|
sequence::SequenceView,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -31,6 +31,16 @@ where T: Clone + Send + Sync + 'static {
|
||||||
cast: Arc<RwLock<ObserverBroadcast<dyn SequenceView<Item = T>>>>
|
cast: Arc<RwLock<ObserverBroadcast<dyn SequenceView<Item = T>>>>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<T> OuterViewPort<RwLock<Vec<T>>>
|
||||||
|
where T: Clone + Send + Sync + 'static {
|
||||||
|
pub fn to_sequence(&self) -> OuterViewPort<dyn SequenceView<Item = T>> {
|
||||||
|
let port = ViewPort::new();
|
||||||
|
let vec_seq = VecSequence::new(port.inner());
|
||||||
|
self.add_observer(vec_seq.clone());
|
||||||
|
port.into_outer()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<T> VecSequence<T>
|
impl<T> VecSequence<T>
|
||||||
where T: Clone + Send + Sync + 'static {
|
where T: Clone + Send + Sync + 'static {
|
||||||
pub fn new(
|
pub fn new(
|
||||||
|
|
Loading…
Reference in a new issue