From 4390a61b6495765a04819130e3934ec671428bcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Kr=C3=BCger?= Date: Tue, 16 Feb 2021 00:30:06 +0100 Subject: [PATCH] avoid full-slicing slices If we already have a slice, there is no need to get another full-range slice from that, just use the original. clippy::redundant_slicing --- compiler/rustc_ast_lowering/src/item.rs | 2 +- compiler/rustc_ast_pretty/src/pprust/state.rs | 6 +++--- compiler/rustc_builtin_macros/src/format.rs | 2 +- .../rustc_builtin_macros/src/format_foreign.rs | 4 ++-- compiler/rustc_codegen_ssa/src/mir/block.rs | 2 +- compiler/rustc_hir_pretty/src/lib.rs | 4 ++-- .../infer/error_reporting/need_type_info.rs | 2 +- compiler/rustc_metadata/src/rmeta/encoder.rs | 2 +- compiler/rustc_middle/src/hir/map/mod.rs | 18 +++++++++--------- .../rustc_middle/src/ty/query/on_disk_cache.rs | 2 +- compiler/rustc_resolve/src/late/diagnostics.rs | 2 +- compiler/rustc_target/src/spec/mod.rs | 2 +- compiler/rustc_typeck/src/astconv/errors.rs | 2 +- compiler/rustc_typeck/src/astconv/mod.rs | 2 +- .../rustc_typeck/src/check/fn_ctxt/_impl.rs | 2 +- .../rustc_typeck/src/check/method/suggest.rs | 2 +- compiler/rustc_typeck/src/collect.rs | 11 ++--------- src/bootstrap/flags.rs | 2 +- src/librustdoc/clean/mod.rs | 4 ++-- 19 files changed, 33 insertions(+), 40 deletions(-) diff --git a/compiler/rustc_ast_lowering/src/item.rs b/compiler/rustc_ast_lowering/src/item.rs index 1efe83cacea4a..097663ff1accd 100644 --- a/compiler/rustc_ast_lowering/src/item.rs +++ b/compiler/rustc_ast_lowering/src/item.rs @@ -135,7 +135,7 @@ impl<'hir> LoweringContext<'_, 'hir> { let parent_generics = match self.items.get(&parent_hir_id).unwrap().kind { hir::ItemKind::Impl(hir::Impl { ref generics, .. }) - | hir::ItemKind::Trait(_, _, ref generics, ..) => &generics.params[..], + | hir::ItemKind::Trait(_, _, ref generics, ..) => generics.params, _ => &[], }; let lt_def_names = parent_generics.iter().filter_map(|param| match param.kind { diff --git a/compiler/rustc_ast_pretty/src/pprust/state.rs b/compiler/rustc_ast_pretty/src/pprust/state.rs index 01e234c9be972..180402c24fb7b 100644 --- a/compiler/rustc_ast_pretty/src/pprust/state.rs +++ b/compiler/rustc_ast_pretty/src/pprust/state.rs @@ -1681,7 +1681,7 @@ impl<'a> State<'a> { self.ibox(INDENT_UNIT); self.s.word("["); self.print_inner_attributes_inline(attrs); - self.commasep_exprs(Inconsistent, &exprs[..]); + self.commasep_exprs(Inconsistent, exprs); self.s.word("]"); self.end(); } @@ -1722,7 +1722,7 @@ impl<'a> State<'a> { self.print_inner_attributes_inline(attrs); self.commasep_cmnt( Consistent, - &fields[..], + fields, |s, field| { s.print_outer_attributes(&field.attrs); s.ibox(INDENT_UNIT); @@ -1757,7 +1757,7 @@ impl<'a> State<'a> { fn print_expr_tup(&mut self, exprs: &[P], attrs: &[ast::Attribute]) { self.popen(); self.print_inner_attributes_inline(attrs); - self.commasep_exprs(Inconsistent, &exprs[..]); + self.commasep_exprs(Inconsistent, exprs); if exprs.len() == 1 { self.s.word(","); } diff --git a/compiler/rustc_builtin_macros/src/format.rs b/compiler/rustc_builtin_macros/src/format.rs index 85ca1da6f1daa..7e88b58c0e29d 100644 --- a/compiler/rustc_builtin_macros/src/format.rs +++ b/compiler/rustc_builtin_macros/src/format.rs @@ -270,7 +270,7 @@ impl<'a, 'b> Context<'a, 'b> { parse::ArgumentNamed(s) => Named(s), }; - let ty = Placeholder(match &arg.format.ty[..] { + let ty = Placeholder(match arg.format.ty { "" => "Display", "?" => "Debug", "e" => "LowerExp", diff --git a/compiler/rustc_builtin_macros/src/format_foreign.rs b/compiler/rustc_builtin_macros/src/format_foreign.rs index 0496c72cb0050..0cc520e5bd1f0 100644 --- a/compiler/rustc_builtin_macros/src/format_foreign.rs +++ b/compiler/rustc_builtin_macros/src/format_foreign.rs @@ -312,7 +312,7 @@ pub mod printf { return Some((Substitution::Escape, &s[start + 2..])); } - Cur::new_at(&s[..], start) + Cur::new_at(s, start) }; // This is meant to be a translation of the following regex: @@ -673,7 +673,7 @@ pub mod shell { _ => { /* fall-through */ } } - Cur::new_at(&s[..], start) + Cur::new_at(s, start) }; let at = at.at_next_cp()?; diff --git a/compiler/rustc_codegen_ssa/src/mir/block.rs b/compiler/rustc_codegen_ssa/src/mir/block.rs index c821908167870..9ce9066980066 100644 --- a/compiler/rustc_codegen_ssa/src/mir/block.rs +++ b/compiler/rustc_codegen_ssa/src/mir/block.rs @@ -709,7 +709,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { let (tup, args) = args.split_last().unwrap(); (args, Some(tup)) } else { - (&args[..], None) + (args, None) }; 'make_args: for (i, arg) in first_args.iter().enumerate() { diff --git a/compiler/rustc_hir_pretty/src/lib.rs b/compiler/rustc_hir_pretty/src/lib.rs index 4595855309fda..1f9133f2ccbf0 100644 --- a/compiler/rustc_hir_pretty/src/lib.rs +++ b/compiler/rustc_hir_pretty/src/lib.rs @@ -392,7 +392,7 @@ impl<'a> State<'a> { &f.decl, None, &f.generic_params, - &f.param_names[..], + f.param_names, ); } hir::TyKind::OpaqueDef(..) => self.s.word("/*impl Trait*/"), @@ -1200,7 +1200,7 @@ impl<'a> State<'a> { self.s.word("{"); self.commasep_cmnt( Consistent, - &fields[..], + fields, |s, field| { s.ibox(INDENT_UNIT); if !field.is_shorthand { diff --git a/compiler/rustc_infer/src/infer/error_reporting/need_type_info.rs b/compiler/rustc_infer/src/infer/error_reporting/need_type_info.rs index bd43d3c01e218..cb783847fd1cf 100644 --- a/compiler/rustc_infer/src/infer/error_reporting/need_type_info.rs +++ b/compiler/rustc_infer/src/infer/error_reporting/need_type_info.rs @@ -671,7 +671,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> { if !impl_candidates.is_empty() && e.span.contains(span) { if let Some(expr) = exprs.first() { if let ExprKind::Path(hir::QPath::Resolved(_, path)) = expr.kind { - if let [path_segment] = &path.segments[..] { + if let [path_segment] = path.segments { let candidate_len = impl_candidates.len(); let suggestions = impl_candidates.iter().map(|candidate| { format!( diff --git a/compiler/rustc_metadata/src/rmeta/encoder.rs b/compiler/rustc_metadata/src/rmeta/encoder.rs index 14ca51008bec5..94314464e085a 100644 --- a/compiler/rustc_metadata/src/rmeta/encoder.rs +++ b/compiler/rustc_metadata/src/rmeta/encoder.rs @@ -866,7 +866,7 @@ impl EncodeContext<'a, 'tcx> { fn encode_variances_of(&mut self, def_id: DefId) { debug!("EncodeContext::encode_variances_of({:?})", def_id); - record!(self.tables.variances[def_id] <- &self.tcx.variances_of(def_id)[..]); + record!(self.tables.variances[def_id] <- self.tcx.variances_of(def_id)); } fn encode_item_type(&mut self, def_id: DefId) { diff --git a/compiler/rustc_middle/src/hir/map/mod.rs b/compiler/rustc_middle/src/hir/map/mod.rs index 251f8c0afe63d..4bc6dda0a5577 100644 --- a/compiler/rustc_middle/src/hir/map/mod.rs +++ b/compiler/rustc_middle/src/hir/map/mod.rs @@ -854,22 +854,22 @@ impl<'hir> Map<'hir> { /// corresponding to the node-ID. pub fn attrs(&self, id: HirId) -> &'hir [ast::Attribute] { self.find_entry(id).map_or(&[], |entry| match entry.node { - Node::Param(a) => &a.attrs[..], + Node::Param(a) => a.attrs, Node::Local(l) => &l.attrs[..], - Node::Item(i) => &i.attrs[..], - Node::ForeignItem(fi) => &fi.attrs[..], - Node::TraitItem(ref ti) => &ti.attrs[..], - Node::ImplItem(ref ii) => &ii.attrs[..], - Node::Variant(ref v) => &v.attrs[..], - Node::Field(ref f) => &f.attrs[..], + Node::Item(i) => i.attrs, + Node::ForeignItem(fi) => fi.attrs, + Node::TraitItem(ref ti) => ti.attrs, + Node::ImplItem(ref ii) => ii.attrs, + Node::Variant(ref v) => v.attrs, + Node::Field(ref f) => f.attrs, Node::Expr(ref e) => &*e.attrs, Node::Stmt(ref s) => s.kind.attrs(|id| self.item(id.id)), Node::Arm(ref a) => &*a.attrs, - Node::GenericParam(param) => ¶m.attrs[..], + Node::GenericParam(param) => param.attrs, // Unit/tuple structs/variants take the attributes straight from // the struct/variant definition. Node::Ctor(..) => self.attrs(self.get_parent_item(id)), - Node::Crate(item) => &item.attrs[..], + Node::Crate(item) => item.attrs, Node::MacroDef(def) => def.attrs, Node::AnonConst(..) | Node::PathSegment(..) diff --git a/compiler/rustc_middle/src/ty/query/on_disk_cache.rs b/compiler/rustc_middle/src/ty/query/on_disk_cache.rs index b41edb5deeb2c..efe047869330c 100644 --- a/compiler/rustc_middle/src/ty/query/on_disk_cache.rs +++ b/compiler/rustc_middle/src/ty/query/on_disk_cache.rs @@ -427,7 +427,7 @@ impl<'sess> OnDiskCache<'sess> { fn sorted_cnums_including_local_crate(tcx: TyCtxt<'_>) -> Vec { let mut cnums = vec![LOCAL_CRATE]; - cnums.extend_from_slice(&tcx.crates()[..]); + cnums.extend_from_slice(tcx.crates()); cnums.sort_unstable(); // Just to be sure... cnums.dedup(); diff --git a/compiler/rustc_resolve/src/late/diagnostics.rs b/compiler/rustc_resolve/src/late/diagnostics.rs index d2a693a568828..6457c6cee576f 100644 --- a/compiler/rustc_resolve/src/late/diagnostics.rs +++ b/compiler/rustc_resolve/src/late/diagnostics.rs @@ -1105,7 +1105,7 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> { } if let Some(items) = self.diagnostic_metadata.current_trait_assoc_items { - for assoc_item in &items[..] { + for assoc_item in items { if assoc_item.ident == ident { return Some(match &assoc_item.kind { ast::AssocItemKind::Const(..) => AssocSuggestion::AssocConst, diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 0e55c4ec0b7cb..c5dbd3ed08961 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -1492,7 +1492,7 @@ impl Target { } ); ($key_name:ident = $json_name:expr, optional) => ( { let name = $json_name; - if let Some(o) = obj.find(&name[..]) { + if let Some(o) = obj.find(name) { base.$key_name = o .as_string() .map(|s| s.to_string() ); diff --git a/compiler/rustc_typeck/src/astconv/errors.rs b/compiler/rustc_typeck/src/astconv/errors.rs index 545c30169b91e..b5404c3a15ce0 100644 --- a/compiler/rustc_typeck/src/astconv/errors.rs +++ b/compiler/rustc_typeck/src/astconv/errors.rs @@ -237,7 +237,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { } } if let ([], [bound]) = (&potential_assoc_types[..], &trait_bounds) { - match &bound.trait_ref.path.segments[..] { + match bound.trait_ref.path.segments { // FIXME: `trait_ref.path.span` can point to a full path with multiple // segments, even though `trait_ref.path.segments` is of length `1`. Work // around that bug here, even though it should be fixed elsewhere. diff --git a/compiler/rustc_typeck/src/astconv/mod.rs b/compiler/rustc_typeck/src/astconv/mod.rs index c9cc47b83e3d6..fb737ae7f5384 100644 --- a/compiler/rustc_typeck/src/astconv/mod.rs +++ b/compiler/rustc_typeck/src/astconv/mod.rs @@ -2374,7 +2374,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o { crate::collect::placeholder_type_error( tcx, ident_span.map(|sp| sp.shrink_to_hi()), - &generics.params[..], + generics.params, visitor.0, true, hir_ty, diff --git a/compiler/rustc_typeck/src/check/fn_ctxt/_impl.rs b/compiler/rustc_typeck/src/check/fn_ctxt/_impl.rs index bc1a07801ae87..9e6c11d9dddbb 100644 --- a/compiler/rustc_typeck/src/check/fn_ctxt/_impl.rs +++ b/compiler/rustc_typeck/src/check/fn_ctxt/_impl.rs @@ -897,7 +897,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { return ( path.res, opt_qself.as_ref().map(|qself| self.to_ty(qself)), - &path.segments[..], + path.segments, ); } QPath::TypeRelative(ref qself, ref segment) => (self.to_ty(qself), qself, segment), diff --git a/compiler/rustc_typeck/src/check/method/suggest.rs b/compiler/rustc_typeck/src/check/method/suggest.rs index d49c7cae8222b..885d961810be8 100644 --- a/compiler/rustc_typeck/src/check/method/suggest.rs +++ b/compiler/rustc_typeck/src/check/method/suggest.rs @@ -600,7 +600,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { }); if let Some(hir::Node::Item(hir::Item { kind, .. })) = node { if let Some(g) = kind.generics() { - let key = match &g.where_clause.predicates[..] { + let key = match g.where_clause.predicates { [.., pred] => (pred.span().shrink_to_hi(), false), [] => ( g.where_clause diff --git a/compiler/rustc_typeck/src/collect.rs b/compiler/rustc_typeck/src/collect.rs index e24aa7d76f194..0d7ca70b944ad 100644 --- a/compiler/rustc_typeck/src/collect.rs +++ b/compiler/rustc_typeck/src/collect.rs @@ -229,14 +229,7 @@ fn reject_placeholder_type_signatures_in_item(tcx: TyCtxt<'tcx>, item: &'tcx hir let mut visitor = PlaceholderHirTyCollector::default(); visitor.visit_item(item); - placeholder_type_error( - tcx, - Some(generics.span), - &generics.params[..], - visitor.0, - suggest, - None, - ); + placeholder_type_error(tcx, Some(generics.span), generics.params, visitor.0, suggest, None); } impl Visitor<'tcx> for CollectItemTypesVisitor<'tcx> { @@ -417,7 +410,7 @@ impl AstConv<'tcx> for ItemCtxt<'tcx> { | hir::ItemKind::Struct(_, generics) | hir::ItemKind::Union(_, generics) => { let lt_name = get_new_lifetime_name(self.tcx, poly_trait_ref, generics); - let (lt_sp, sugg) = match &generics.params[..] { + let (lt_sp, sugg) = match generics.params { [] => (generics.span, format!("<{}>", lt_name)), [bound, ..] => { (bound.span.shrink_to_lo(), format!("{}, ", lt_name)) diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs index 55062e11e029a..6044899c237e2 100644 --- a/src/bootstrap/flags.rs +++ b/src/bootstrap/flags.rs @@ -347,7 +347,7 @@ To learn more about a subcommand, run `./x.py -h`", }; // Done specifying what options are possible, so do the getopts parsing - let matches = opts.parse(&args[..]).unwrap_or_else(|e| { + let matches = opts.parse(args).unwrap_or_else(|e| { // Invalid argument/option format println!("\n{}\n", e); usage(1, &opts, false, &subcommand_help); diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 7e7e417bb6544..2040a2edcd7e6 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -975,7 +975,7 @@ where { fn clean(&self, cx: &DocContext<'_>) -> FnDecl { FnDecl { - inputs: (&self.0.inputs[..], self.1).clean(cx), + inputs: (self.0.inputs, self.1).clean(cx), output: self.0.output.clean(cx), c_variadic: self.0.c_variadic, attrs: Attributes::default(), @@ -1939,7 +1939,7 @@ impl Clean for Symbol { impl Clean for hir::BareFnTy<'_> { fn clean(&self, cx: &DocContext<'_>) -> BareFunctionDecl { let (generic_params, decl) = enter_impl_trait(cx, || { - (self.generic_params.clean(cx), (&*self.decl, &self.param_names[..]).clean(cx)) + (self.generic_params.clean(cx), (&*self.decl, self.param_names).clean(cx)) }); BareFunctionDecl { unsafety: self.unsafety, abi: self.abi, decl, generic_params } }