pyo3_stub_gen/stub_type/
either.rs

1use std::collections::HashSet;
2
3use super::{ModuleRef, PyStubType, TypeInfo};
4
5impl<L: PyStubType, R: PyStubType> PyStubType for either::Either<L, R> {
6    fn type_input() -> TypeInfo {
7        let TypeInfo {
8            name: name_l,
9            import: import_l,
10        } = L::type_input();
11        let TypeInfo {
12            name: name_r,
13            import: import_r,
14        } = R::type_input();
15
16        let mut import: HashSet<ModuleRef> = import_l.into_iter().chain(import_r).collect();
17
18        import.insert("typing".into());
19
20        TypeInfo {
21            name: format!("typing.Union[{name_l}, {name_r}]"),
22            import,
23        }
24    }
25    fn type_output() -> TypeInfo {
26        let TypeInfo {
27            name: name_l,
28            import: import_l,
29        } = L::type_output();
30        let TypeInfo {
31            name: name_r,
32            import: import_r,
33        } = R::type_output();
34
35        let mut import: HashSet<ModuleRef> = import_l.into_iter().chain(import_r).collect();
36
37        import.insert("typing".into());
38
39        TypeInfo {
40            name: format!("typing.Union[{name_l}, {name_r}]"),
41            import,
42        }
43    }
44}