В чем разница между dead_code и неиспользуемыми ворсинками?

#rust #compiler-warnings

#Ржавчина #предупреждения компилятора

Вопрос:

В чем разница между

 #[allow(dead_code)]
// ...some code
  

и

 #[allow(unused)]
// ...some code
  

Ответ №1:

dead_code является ли один конкретный линт, который определяется как:

 declare_lint! {
    pub DEAD_CODE,
    Warn,
    "detect unused, unexported items"
}
  

unused это группа линтов, состоящая из dead_code и многих других линтов. Он определяется как:

 add_lint_group!(
    "unused",
    UNUSED_IMPORTS,
    UNUSED_VARIABLES,
    UNUSED_ASSIGNMENTS,
    DEAD_CODE,
    UNUSED_MUT,
    UNREACHABLE_CODE,
    UNREACHABLE_PATTERNS,
    OVERLAPPING_PATTERNS,
    UNUSED_MUST_USE,
    UNUSED_UNSAFE,
    PATH_STATEMENTS,
    UNUSED_ATTRIBUTES,
    UNUSED_MACROS,
    UNUSED_ALLOCATION,
    UNUSED_DOC_COMMENTS,
    UNUSED_EXTERN_CRATES,
    UNUSED_FEATURES,
    UNUSED_LABELS,
    UNUSED_PARENS,
    UNUSED_BRACES,
    REDUNDANT_SEMICOLONS
);
  

Комментарии:

1. Для тех, кто интересуется терминологией, «элементы» — это почти все, что может быть объявлено на уровне модуля: структуры, признаки, перечисления, функции, статика и т. Д.