Convert some <InternedSlice>::new_from_iter() to new_from_slice()
It's faster, when you have a slice available.
This commit is contained in:
parent
dc81edaa9e
commit
d92e6c9688
10 changed files with 22 additions and 40 deletions
|
|
@ -780,7 +780,7 @@ impl<'db> InferenceContext<'_, 'db> {
|
|||
Ty::new_adt(
|
||||
self.interner(),
|
||||
adt,
|
||||
GenericArgs::new_from_iter(self.interner(), [GenericArg::from(ty)]),
|
||||
GenericArgs::new_from_slice(&[GenericArg::from(ty)]),
|
||||
)
|
||||
};
|
||||
match (range_type, lhs_ty, rhs_ty) {
|
||||
|
|
@ -2164,10 +2164,8 @@ impl<'db> InferenceContext<'_, 'db> {
|
|||
if let ItemContainerId::TraitId(trait_) = f.lookup(self.db).container {
|
||||
// construct a TraitRef
|
||||
let trait_params_len = generics(self.db, trait_.into()).len();
|
||||
let substs = GenericArgs::new_from_iter(
|
||||
self.interner(),
|
||||
parameters.as_slice()[..trait_params_len].iter().copied(),
|
||||
);
|
||||
let substs =
|
||||
GenericArgs::new_from_slice(¶meters.as_slice()[..trait_params_len]);
|
||||
self.table.register_predicate(Obligation::new(
|
||||
self.interner(),
|
||||
ObligationCause::new(),
|
||||
|
|
|
|||
|
|
@ -240,10 +240,7 @@ impl<'db> InferenceContext<'_, 'db> {
|
|||
|
||||
if let ItemContainerId::TraitId(trait_) = container {
|
||||
let parent_len = generics(self.db, def).parent_generics().map_or(0, |g| g.len_self());
|
||||
let parent_subst = GenericArgs::new_from_iter(
|
||||
interner,
|
||||
subst.as_slice()[..parent_len].iter().copied(),
|
||||
);
|
||||
let parent_subst = GenericArgs::new_from_slice(&subst.as_slice()[..parent_len]);
|
||||
let trait_ref = TraitRef::new(interner, trait_.into(), parent_subst);
|
||||
self.table.register_predicate(Obligation::new(
|
||||
interner,
|
||||
|
|
|
|||
|
|
@ -469,7 +469,7 @@ where
|
|||
Canonical {
|
||||
value,
|
||||
max_universe: rustc_type_ir::UniverseIndex::ZERO,
|
||||
variables: CanonicalVars::new_from_iter(interner, error_replacer.vars),
|
||||
variables: CanonicalVars::new_from_slice(&error_replacer.vars),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2336,10 +2336,7 @@ pub(crate) fn associated_ty_item_bounds<'db>(
|
|||
Some(ExistentialPredicate::Trait(ExistentialTraitRef::new_from_args(
|
||||
interner,
|
||||
t.def_id(),
|
||||
GenericArgs::new_from_iter(
|
||||
interner,
|
||||
t.trait_ref.args.iter().skip(1),
|
||||
),
|
||||
GenericArgs::new_from_slice(&t.trait_ref.args[1..]),
|
||||
)))
|
||||
}
|
||||
}
|
||||
|
|
@ -2347,10 +2344,7 @@ pub(crate) fn associated_ty_item_bounds<'db>(
|
|||
ExistentialPredicate::Projection(ExistentialProjection::new_from_args(
|
||||
interner,
|
||||
p.def_id(),
|
||||
GenericArgs::new_from_iter(
|
||||
interner,
|
||||
p.projection_term.args.iter().skip(1),
|
||||
),
|
||||
GenericArgs::new_from_slice(&p.projection_term.args[1..]),
|
||||
p.term,
|
||||
)),
|
||||
),
|
||||
|
|
@ -2380,7 +2374,7 @@ pub(crate) fn associated_ty_item_bounds<'db>(
|
|||
bounds.push(sized_clause);
|
||||
}
|
||||
|
||||
EarlyBinder::bind(BoundExistentialPredicates::new_from_iter(interner, bounds))
|
||||
EarlyBinder::bind(BoundExistentialPredicates::new_from_slice(&bounds))
|
||||
}
|
||||
|
||||
pub(crate) fn associated_type_by_name_including_super_traits<'db>(
|
||||
|
|
|
|||
|
|
@ -1283,7 +1283,7 @@ pub(crate) fn substs_from_args_and_bindings<'db>(
|
|||
}
|
||||
}
|
||||
|
||||
GenericArgs::new_from_iter(interner, substs)
|
||||
GenericArgs::new_from_slice(&substs)
|
||||
}
|
||||
|
||||
fn type_looks_like_const(
|
||||
|
|
|
|||
|
|
@ -392,10 +392,10 @@ pub fn is_dyn_method<'db>(
|
|||
};
|
||||
let trait_params = db.generic_params(trait_id.into()).len();
|
||||
let fn_params = fn_subst.len() - trait_params;
|
||||
let trait_ref = TraitRef::new(
|
||||
let trait_ref = TraitRef::new_from_args(
|
||||
interner,
|
||||
trait_id.into(),
|
||||
GenericArgs::new_from_iter(interner, fn_subst.iter().take(trait_params)),
|
||||
GenericArgs::new_from_slice(&fn_subst[..trait_params]),
|
||||
);
|
||||
let self_ty = trait_ref.self_ty();
|
||||
if let TyKind::Dynamic(d, _) = self_ty.kind() {
|
||||
|
|
@ -427,10 +427,10 @@ pub(crate) fn lookup_impl_method_query<'db>(
|
|||
return (func, fn_subst);
|
||||
};
|
||||
let trait_params = db.generic_params(trait_id.into()).len();
|
||||
let trait_ref = TraitRef::new(
|
||||
let trait_ref = TraitRef::new_from_args(
|
||||
interner,
|
||||
trait_id.into(),
|
||||
GenericArgs::new_from_iter(interner, fn_subst.iter().take(trait_params)),
|
||||
GenericArgs::new_from_slice(&fn_subst[..trait_params]),
|
||||
);
|
||||
|
||||
let name = &db.function_signature(func).name;
|
||||
|
|
|
|||
|
|
@ -698,10 +698,7 @@ impl<'db> rustc_type_ir::inherent::GenericArgs<DbInterner<'db>> for GenericArgs<
|
|||
let inputs = Ty::new_tup(interner, s.inputs());
|
||||
let output = s.output();
|
||||
FnSigTys {
|
||||
inputs_and_output: Tys::new_from_iter(
|
||||
interner,
|
||||
[inputs, output],
|
||||
),
|
||||
inputs_and_output: Tys::new_from_slice(&[inputs, output]),
|
||||
}
|
||||
}),
|
||||
header,
|
||||
|
|
|
|||
|
|
@ -562,7 +562,7 @@ impl<'cx, 'db> Canonicalizer<'cx, 'db> {
|
|||
debug_assert!(!out_value.has_infer() && !out_value.has_placeholders());
|
||||
|
||||
let canonical_variables =
|
||||
CanonicalVars::new_from_iter(tcx, canonicalizer.universe_canonicalized_variables());
|
||||
CanonicalVars::new_from_slice(&canonicalizer.universe_canonicalized_variables());
|
||||
|
||||
let max_universe = canonical_variables
|
||||
.iter()
|
||||
|
|
|
|||
|
|
@ -21,9 +21,9 @@ use rustc_abi::{ReprFlags, ReprOptions};
|
|||
use rustc_hash::FxHashSet;
|
||||
use rustc_index::bit_set::DenseBitSet;
|
||||
use rustc_type_ir::{
|
||||
AliasTermKind, AliasTyKind, BoundVar, CollectAndApply, CoroutineWitnessTypes, DebruijnIndex,
|
||||
EarlyBinder, FlagComputation, Flags, GenericArgKind, GenericTypeVisitable, ImplPolarity,
|
||||
InferTy, Interner, TraitRef, TypeFlags, TypeVisitableExt, UniverseIndex, Upcast, Variance,
|
||||
AliasTermKind, AliasTyKind, BoundVar, CoroutineWitnessTypes, DebruijnIndex, EarlyBinder,
|
||||
FlagComputation, Flags, GenericArgKind, GenericTypeVisitable, ImplPolarity, InferTy, Interner,
|
||||
TraitRef, TypeFlags, TypeVisitableExt, UniverseIndex, Upcast, Variance,
|
||||
elaborate::elaborate,
|
||||
error::TypeError,
|
||||
fast_reject,
|
||||
|
|
@ -1270,10 +1270,8 @@ impl<'db> Interner for DbInterner<'db> {
|
|||
) -> (rustc_type_ir::TraitRef<Self>, Self::GenericArgsSlice) {
|
||||
let trait_def_id = self.parent(def_id);
|
||||
let trait_generics = self.generics_of(trait_def_id);
|
||||
let trait_args = GenericArgs::new_from_iter(
|
||||
self,
|
||||
args.as_slice()[0..trait_generics.own_params.len()].iter().cloned(),
|
||||
);
|
||||
let trait_args =
|
||||
GenericArgs::new_from_slice(&args.as_slice()[0..trait_generics.own_params.len()]);
|
||||
let alias_args = &args.as_slice()[trait_generics.own_params.len()..];
|
||||
(TraitRef::new_from_args(self, trait_def_id.try_into().unwrap(), trait_args), alias_args)
|
||||
}
|
||||
|
|
@ -2105,9 +2103,7 @@ impl<'db> Interner for DbInterner<'db> {
|
|||
let mut map = Default::default();
|
||||
let delegate = Anonymize { interner: self, map: &mut map };
|
||||
let inner = self.replace_escaping_bound_vars_uncached(value.skip_binder(), delegate);
|
||||
let bound_vars = CollectAndApply::collect_and_apply(map.into_values(), |xs| {
|
||||
BoundVarKinds::new_from_iter(self, xs.iter().cloned())
|
||||
});
|
||||
let bound_vars = BoundVarKinds::new_from_iter(self, map.into_values());
|
||||
Binder::bind_with_vars(inner, bound_vars)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ fn variances_of_query(db: &dyn HirDatabase, def: GenericDefId) -> StoredVariance
|
|||
}
|
||||
}
|
||||
|
||||
VariancesOf::new_from_iter(interner, variances).store()
|
||||
VariancesOf::new_from_slice(&variances).store()
|
||||
}
|
||||
|
||||
// pub(crate) fn variances_of_cycle_fn(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue