1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use crate::widget_sequence::FlexWidget;
use crate::widget_sequence::WidgetSequence;
use either::{Either, Left, Right};
impl<Child: WidgetSequence> WidgetSequence for Option<Child> {
fn widgets(&mut self) -> Vec<&mut dyn FlexWidget> {
self.iter_mut().flat_map(|child| child.widgets()).collect()
}
}
impl<ChildLeft: WidgetSequence, ChildRight: WidgetSequence> WidgetSequence
for Either<ChildLeft, ChildRight>
{
fn widgets(&mut self) -> Vec<&mut dyn FlexWidget> {
match self {
Left(child_left) => child_left.widgets(),
Right(child_right) => child_right.widgets(),
}
}
}