git.delta.rocks / jrsonnet / refs/commits / 40d81c2e6699

difftreelog

perf with rfold we can ignore evaluation order

tpzkmxkrYaroslav Bolyukin2026-05-17parent: #5d80d31.patch.diff
in: master

1 file changed

modifiedcrates/jrsonnet-stdlib/src/arrays.rsdiffbeforeafterboth
183 if let (Val::Str(init), Either2::A(arr)) = (&init, &arr)183 if let (Val::Str(init), Either2::A(arr)) = (&init, &arr)
184 && let Some(folder) = func.func().as_folder(FoldKind::Right)184 && let Some(folder) = func.func().as_folder(FoldKind::Right)
185 {185 {
186 let len = arr.len();
187 let mut chunks: Vec<Val> = Vec::with_capacity(len);
188 for i in arr.iter_lazy().rev() {
189 let v = folder.eval(i)?;
190 chunks.push(v);
191 }
192 let mut buf = String::new();186 let mut buf = String::new();
193 for s in chunks.iter().rev() {187 for i in arr.iter_lazy() {
194 ToStringFormat.manifest_buf(s, &mut buf)?;188 ToStringFormat.manifest_buf(&folder.eval(i)?, &mut buf)?;
195 }189 }
196 init.into_flat_in(&mut buf);190 init.into_flat_in(&mut buf);
197 return Ok(Val::string(buf));191 return Ok(Val::string(buf));