MCPcopy Create free account
hub / github.com/cel-rust/cel-rust / balanced_tree

Method balanced_tree

cel/src/parser/parser.rs:1130–1153  ·  view source on GitHub ↗
(&mut self, lo: usize, hi: usize)

Source from the content-addressed store, hash-verified

1128 }
1129
1130 fn balanced_tree(&mut self, lo: usize, hi: usize) -> IdedExpr {
1131 let mid = (lo + hi).div_ceil(2);
1132
1133 let left = if mid == lo {
1134 mem::take(&mut self.terms[mid])
1135 } else {
1136 self.balanced_tree(lo, mid - 1)
1137 };
1138
1139 let right = if mid == hi {
1140 mem::take(&mut self.terms[mid + 1])
1141 } else {
1142 self.balanced_tree(mid + 1, hi)
1143 };
1144
1145 IdedExpr {
1146 id: self.ops[mid],
1147 expr: Expr::Call(CallExpr {
1148 target: None,
1149 func_name: self.function.clone(),
1150 args: vec![left, right],
1151 }),
1152 }
1153 }
1154}
1155
1156#[cfg(test)]

Callers 1

exprMethod · 0.80

Calls 1

cloneMethod · 0.80

Tested by

no test coverage detected