ratatui_kit/element/
extend_with_elements.rs1use super::{AnyElement, Element, ElementType};
2
3pub trait ExtendWithElements<T> {
4 fn extend_with_elements<E: Extend<T>>(self, dest: &mut E);
5}
6
7impl<'a, T, U> ExtendWithElements<T> for Element<'a, U>
8where
9 U: ElementType + 'a,
10 T: From<Element<'a, U>>,
11{
12 fn extend_with_elements<E: Extend<T>>(self, dest: &mut E) {
13 dest.extend([self.into()]);
14 }
15}
16
17impl<'a> ExtendWithElements<AnyElement<'a>> for AnyElement<'a> {
18 fn extend_with_elements<E: Extend<AnyElement<'a>>>(self, dest: &mut E) {
19 dest.extend([self]);
20 }
21}
22
23impl<'a> ExtendWithElements<AnyElement<'a>> for &mut AnyElement<'a> {
24 fn extend_with_elements<E: Extend<AnyElement<'a>>>(self, dest: &mut E) {
25 dest.extend([self.into()]);
26 }
27}
28
29impl<T, U, I> ExtendWithElements<T> for I
30where
31 T: From<U>,
32 I: IntoIterator<Item = U>,
33{
34 fn extend_with_elements<E: Extend<T>>(self, dest: &mut E) {
35 dest.extend(self.into_iter().map(|x| x.into()));
36 }
37}
38
39pub fn extend_with_elements<T, U, E>(dest: &mut T, elements: U)
40where
41 U: ExtendWithElements<E>,
42 T: Extend<E>,
43{
44 elements.extend_with_elements(dest);
45}