From 57782e0ff1e9833e121187f1c33b72bec6a8a61a Mon Sep 17 00:00:00 2001 From: Jason Newcomb Date: Sat, 3 Aug 2024 00:29:23 -0400 Subject: Rewrite `non_copy_const` --- clippy_utils/src/ty/mod.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'clippy_utils') diff --git a/clippy_utils/src/ty/mod.rs b/clippy_utils/src/ty/mod.rs index 26d41cfb497..c50ad17bfad 100644 --- a/clippy_utils/src/ty/mod.rs +++ b/clippy_utils/src/ty/mod.rs @@ -1361,3 +1361,14 @@ pub fn is_slice_like<'tcx>(cx: &LateContext<'tcx>, ty: Ty<'tcx>) -> bool { || ty.is_array() || matches!(ty.kind(), ty::Adt(adt_def, _) if cx.tcx.is_diagnostic_item(sym::Vec, adt_def.did())) } + +/// Gets the index of a field by name. +pub fn get_field_idx_by_name(ty: Ty<'_>, name: Symbol) -> Option { + match *ty.kind() { + ty::Adt(def, _) if def.is_union() || def.is_struct() => { + def.non_enum_variant().fields.iter().position(|f| f.name == name) + }, + ty::Tuple(_) => name.as_str().parse::().ok(), + _ => None, + } +} -- cgit 1.4.1-3-g733a5