git.delta.rocks / jrsonnet / refs/commits / bc5db178c13d

difftreelog

feat impl ContextInitializer for Option<impl ContextInitializer>

Yaroslav Bolyukin2024-05-27parent: #60b06d5.patch.diff
in: master

1 file changed

modifiedcrates/jrsonnet-evaluator/src/lib.rsdiffbeforeafterboth
116 }116 }
117}117}
118
119impl<T> ContextInitializer for Option<T>
120where
121 T: ContextInitializer,
122{
123 fn initialize(&self, state: State, for_file: Source) -> Context {
124 if let Some(ctx) = self {
125 ctx.initialize(state, for_file)
126 } else {
127 ().initialize(state, for_file)
128 }
129 }
130
131 fn populate(&self, for_file: Source, builder: &mut ContextBuilder) {
132 if let Some(ctx) = self {
133 ctx.populate(for_file, builder);
134 }
135 }
136
137 fn as_any(&self) -> &dyn Any {
138 self
139 }
140}
118141
119macro_rules! impl_context_initializer {142macro_rules! impl_context_initializer {
120 ($($gen:ident)*) => {143 ($($gen:ident)*) => {