MCPcopy Create free account
hub / github.com/FeatureProbe/server-sdk-rust / do_eval

Method do_eval

src/evaluate.rs:191–229  ·  view source on GitHub ↗
(
        &self,
        eval_param: &EvalParams,
        max_depth: u8,
    )

Source from the content-addressed store, hash-verified

189 }
190
191 fn do_eval(
192 &self,
193 eval_param: &EvalParams,
194 max_depth: u8,
195 ) -> Result<EvalDetail<Value>, PrerequisiteError> {
196 if !self.enabled {
197 return Ok(self.disabled_variation(eval_param, None))
198 }
199
200 if !self.meet_prerequisite(eval_param, max_depth)? {
201 return Ok(self.disabled_variation(eval_param, Some(
202 "Prerequisite not match".to_owned())));
203 }
204
205 for (i, rule) in self.rules.iter().enumerate() {
206 match rule.serve_variation(eval_param) {
207 Ok(v) => {
208 if v.is_some() {
209 return Ok(self.serve_variation(
210 v,
211 format!("rule {i}"),
212 Some(i),
213 eval_param.debug_until_time,
214 ));
215 }
216 }
217 Err(e) => {
218 return Ok(self.serve_variation(
219 None,
220 format!("{e:?}"),
221 Some(i),
222 eval_param.debug_until_time,
223 ));
224 }
225 }
226 }
227
228 Ok(self.default_variation(eval_param, None))
229 }
230
231 fn meet_prerequisite(
232 &self,

Callers 2

evalMethod · 0.80
meet_prerequisiteMethod · 0.80

Calls 4

disabled_variationMethod · 0.80
meet_prerequisiteMethod · 0.80
serve_variationMethod · 0.80
default_variationMethod · 0.80

Tested by

no test coverage detected