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<'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}