ratatui_kit/element/
extend_with_elements.rs

1use 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}