pyo3_stub_gen/stub_type/
either.rs1use 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}