1
Fork 0

Rollup merge of #136069 - yotamofek:next-solver-slice, r=compiler-errors

Simplify slice indexing in next trait solver

Unless I'm missing something:
- no need to explicitly specify the end of the slice as the end of the index range
- the `assert` is redundant since the indexing will panic for the same condition

I think this change simplifies it a bit. Also replaced the `for` loop of `push`es with a call to `extend` with an iterator. Might improve performance since it knows how many elements will be added beforehand and can pre-reserve room?

r? `@compiler-errors` , I think
This commit is contained in:
Matthias Krüger 2025-02-06 21:56:25 +01:00 committed by GitHub
commit ae1410e2d8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -453,13 +453,11 @@ where
{ {
// In case any fresh inference variables have been created between `state` // In case any fresh inference variables have been created between `state`
// and the previous instantiation, extend `orig_values` for it. // and the previous instantiation, extend `orig_values` for it.
assert!(orig_values.len() <= state.value.var_values.len()); orig_values.extend(
for &arg in &state.value.var_values.var_values.as_slice() state.value.var_values.var_values.as_slice()[orig_values.len()..]
[orig_values.len()..state.value.var_values.len()] .iter()
{ .map(|&arg| delegate.fresh_var_for_kind_with_span(arg, span)),
let unconstrained = delegate.fresh_var_for_kind_with_span(arg, span); );
orig_values.push(unconstrained);
}
let instantiation = let instantiation =
EvalCtxt::compute_query_response_instantiation_values(delegate, orig_values, &state, span); EvalCtxt::compute_query_response_instantiation_values(delegate, orig_values, &state, span);