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<T, U, I> ExtendWithElements<T> for I
24where
25 T: From<U>,
26 I: IntoIterator<Item = U>,
27{
28 fn extend_with_elements<E: Extend<T>>(self, dest: &mut E) {
29 dest.extend(self.into_iter().map(|x| x.into()));
30 }
31}
32
33pub fn extend_with_elements<T, U, E>(dest: &mut T, elements: U)
34where
35 U: ExtendWithElements<E>,
36 T: Extend<E>,
37{
38 elements.extend_with_elements(dest);
39}