pulumi_gestalt_rust/
input.rs1use crate::{Context, Output};
2
3pub enum Input<T> {
5 StaticValue(T),
6 Output(Output<T>),
7}
8
9impl<T> Input<T>
10where
11 T: Clone + Send + Sync + 'static,
12{
13 #[doc(hidden)]
14 pub fn get_output(self, _engine: &Context) -> Output<T> {
15 match self {
16 Input::StaticValue(value) => Output::new(value),
17 Input::Output(output) => output,
18 }
19 }
20}
21
22impl<T> From<Output<T>> for Input<T> {
23 fn from(output: Output<T>) -> Self {
24 Input::Output(output)
25 }
26}
27
28impl<T: Default> Default for Input<T> {
29 fn default() -> Self {
30 Input::StaticValue(Default::default())
31 }
32}
33
34impl<T> From<T> for Input<T> {
35 fn from(value: T) -> Input<T> {
36 Input::StaticValue(value)
37 }
38}
39
40impl<T> From<T> for Input<Option<T>> {
41 fn from(value: T) -> Self {
42 Input::StaticValue(Some(value))
43 }
44}
45
46impl<T: Clone + Send + Sync + 'static> From<Output<T>> for Input<Option<T>> {
47 fn from(output: Output<T>) -> Self {
48 Input::Output(output.map(|v| Some(v)))
49 }
50}
51
52impl From<&str> for Input<String> {
53 fn from(value: &str) -> Self {
54 Input::StaticValue(value.to_string())
55 }
56}
57
58impl From<&str> for Input<Option<String>> {
59 fn from(value: &str) -> Self {
60 Input::StaticValue(Some(value.to_string()))
61 }
62}
63
64impl From<Vec<&str>> for Input<Vec<String>> {
65 fn from(value: Vec<&str>) -> Self {
66 Input::StaticValue(value.into_iter().map(|s| s.to_string()).collect())
67 }
68}
69
70impl From<Vec<&str>> for Input<Option<Vec<String>>> {
71 fn from(value: Vec<&str>) -> Self {
72 Input::StaticValue(Some(value.into_iter().map(|s| s.to_string()).collect()))
73 }
74}
75
76impl<T, const N: usize> From<[T; N]> for Input<Vec<T>> {
77 fn from(value: [T; N]) -> Self {
78 Input::StaticValue(value.into_iter().collect())
79 }
80}
81
82impl<T, const N: usize> From<[T; N]> for Input<Option<Vec<T>>> {
83 fn from(value: [T; N]) -> Self {
84 Input::StaticValue(Some(value.into_iter().collect()))
85 }
86}
87
88impl<const N: usize> From<[&str; N]> for Input<Vec<String>> {
89 fn from(value: [&str; N]) -> Self {
90 Input::StaticValue(value.into_iter().map(|s| s.to_string()).collect())
91 }
92}
93
94impl<const N: usize> From<[&str; N]> for Input<Option<Vec<String>>> {
95 fn from(value: [&str; N]) -> Self {
96 Input::StaticValue(Some(value.into_iter().map(|s| s.to_string()).collect()))
97 }
98}