You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: rules.rs
    path of file: ./repos/deno_lint/src
    
    the code of the file until where you have to start completion: // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.

use crate::context::Context;
use crate::Program;
use crate::ProgramRef;
use std::cmp::Ordering;
use std::collections::HashSet;

pub mod adjacent_overload_signatures;
pub mod ban_ts_comment;
pub mod ban_types;
pub mod ban_unknown_rule_code;
pub mod ban_untagged_ignore;
pub mod ban_untagged_todo;
pub mod ban_unused_ignore;
pub mod camelcase;
pub mod constructor_super;
pub mod default_param_last;
pub mod eqeqeq;
pub mod explicit_function_return_type;
pub mod explicit_module_boundary_types;
pub mod for_direction;
pub mod fresh_handler_export;
pub mod fresh_server_event_handlers;
pub mod getter_return;
pub mod guard_for_in;
pub mod no_array_constructor;
pub mod no_async_promise_executor;
pub mod no_await_in_loop;
pub mod no_await_in_sync_fn;
pub mod no_case_declarations;
pub mod no_class_assign;
pub mod no_compare_neg_zero;
pub mod no_cond_assign;
pub mod no_console;
pub mod no_const_assign;
pub mod no_constant_condition;
pub mod no_control_regex;
pub mod no_debugger;
pub mod no_delete_var;
pub mod no_deprecated_deno_api;
pub mod no_dupe_args;
pub mod no_dupe_class_members;
pub mod no_dupe_else_if;
pub mod no_dupe_keys;
pub mod no_duplicate_case;
pub mod no_empty;
pub mod no_empty_character_class;
pub mod no_empty_enum;
pub mod no_empty_interface;
pub mod no_empty_pattern;
pub mod no_eval;
pub mod no_ex_assign;
pub mod no_explicit_any;
pub mod no_external_imports;
pub mod no_extra_boolean_cast;
pub mod no_extra_non_null_assertion;
pub mod no_fallthrough;
pub mod no_func_assign;
pub mod no_global_assign;
pub mod no_implicit_declare_namespace_export;
pub mod no_import_assertions;
pub mod no_import_assign;
pub mod no_inferrable_types;
pub mod no_inner_declarations;
pub mod no_invalid_regexp;
pub mod no_invalid_triple_slash_reference;
pub mod no_irregular_whitespace;
pub mod no_misused_new;
pub mod no_namespace;
pub mod no_new_symbol;
pub mod no_non_null_asserted_optional_chain;
pub mod no_non_null_assertion;
pub mod no_obj_calls;
pub mod no_octal;
pub mod no_prototype_builtins;
pub mod no_redeclare;
pub mod no_regex_spaces;
pub mod no_self_assign;
pub mod no_self_compare;
pub mod no_setter_return;
pub mod no_shadow_restricted_names;
pub mod no_sparse_arrays;
pub mod no_sync_fn_in_async_fn;
pub mod no_this_alias;
pub mod no_this_before_super;
pub mod no_throw_literal;
pub mod no_top_level_await;
pub mod no_undef;
pub mod no_unreachable;
pub mod no_unsafe_finally;
pub mod no_unsafe_negation;
pub mod no_unused_labels;
pub mod no_unused_vars;
pub mod no_var;
pub mod no_window;
pub mod no_window_prefix;
pub mod no_with;
pub mod prefer_as_const;
pub mod prefer_ascii;
pub mod prefer_const;
pub mod prefer_namespace_keyword;
pub mod prefer_primordials;
pub mod require_await;
pub mod require_yield;
pub mod single_var_declarator;
pub mod triple_slash_reference;
pub mod use_isnan;
pub mod valid_typeof;
pub mod verbatim_module_syntax;

pub trait LintRule: std::fmt::Debug + Send + Sync {
  /// Executes lint using `dprint-swc-ecma-ast-view`.
  /// Falls back to the `lint_program` method if not implemented.
  fn lint_program_with_ast_view<'view>(
    &self,
    context: &mut Context<'view>,
    program: Program<'view>,
  );

  /// Returns the unique code that identifies the rule
  fn code(&self) -> &'static str;

  /// Returns the tags this rule belongs to, e.g. `recommended`
  fn tags(&self) -> &'static [&'static str] {
    &[]
  }

  /// Returns the documentation string for this rule, describing what this rule is for with several
  /// examples.
  #[cfg(feature = "docs")]
  fn docs(&self) -> &'static str;

  /// The lower the return value is, the earli
    
fn get_all_rules_raw() -> Vec<&'static dyn LintRule> {
  vec![
    &adjacent_overload_signatures::AdjacentOverloadSignatures,
    &ban_ts_comment::BanTsComment,
    &ban_types::BanTypes,
    &ban_unknown_rule_code::BanUnknownRuleCode,
    &ban_untagged_ignore::BanUntaggedIgnore,
    &ban_untagged_todo::BanUntaggedTodo,
    &ban_unused_ignore::BanUnusedIgnore,
    &camelcase::Camelcase,
    &constructor_super::ConstructorSuper,
    &default_param_last::DefaultParamLast,
    &eqeqeq::Eqeqeq,
    &explicit_function_return_type::ExplicitFunctionReturnType,
    &explicit_module_boundary_types::ExplicitModuleBoundaryTypes,
    &for_direction::ForDirection,
    &fresh_handler_export::FreshHandlerExport,
    &fresh_server_event_handlers::FreshServerEventHandlers,
    &getter_return::GetterReturn,
    &guard_for_in::GuardForIn,
    &no_array_constructor::NoArrayConstructor,
    &no_async_promise_executor::NoAsyncPromiseExecutor,
    &no_await_in_loop::NoAwaitInLoop,
    &no_await_in_sync_fn::NoAwaitInSyncFn,
    &no_case_declarations::NoCaseDeclarations,
    &no_class_assign::NoClassAssign,
    &no_compare_neg_zero::NoCompareNegZero,
    &no_cond_assign::NoCondAssign,
    &no_console::NoConsole,
    &no_const_assign::NoConstAssign,
    &no_constant_condition::NoConstantCondition,
    &no_control_regex::NoControlRegex,
    &no_debugger::NoDebugger,
    &no_delete_var::NoDeleteVar,
    &no_deprecated_deno_api::NoDeprecatedDenoApi,
    &no_dupe_args::NoDupeArgs,
    &no_dupe_class_members::NoDupeClassMembers,
    &no_dupe_else_if::NoDupeElseIf,
    &no_dupe_keys::NoDupeKeys,
    &no_duplicate_case::NoDuplicateCase,
    &no_empty::NoEmpty,
    &no_empty_character_class::NoEmptyCharacterClass,
    &no_empty_enum::NoEmptyEnum,
    &no_empty_interface::NoEmptyInterface,
    &no_empty_pattern::NoEmptyPattern,
    &no_eval::NoEval,
    &no_ex_assign::NoExAssign,
    &no_explicit_any::NoExplicitAny,
    &no_external_imports::NoExternalImport,
    &no_extra_boolean_cast::NoExtraBooleanCast,
    &no_extra_non_null_assertion::NoExtraNonNullAssertion,
    &no_fallthrough::NoFallthrough,
    &no_func_assign::NoFuncAssign,
    &no_global_assign::NoGlobalAssign,
    &no_implicit_declare_namespace_export::NoImplicitDeclareNamespaceExport,
    &no_import_assertions::NoImportAssertions,
    &no_import_assign::NoImportAssign,
    &no_inferrable_types::NoInferrableTypes,
    &no_inner_declarations::NoInnerDeclarations,
    &no_invalid_regexp::NoInvalidRegexp,
    &no_invalid_triple_slash_reference::NoInvalidTripleSlashReference,
    &no_irregular_whitespace::NoIrregularWhitespace,
    &no_misused_new::NoMisusedNew,
    &no_namespace::NoNamespace,
    &no_new_symbol::NoNewSymbol,
    &no_non_null_asserted_optional_chain::NoNonNullAssertedOptionalChain,
    &no_non_null_assertion::NoNonNullAssertion,
    &no_obj_calls::NoObjCalls,
    &no_octal::NoOctal,
    &no_prototype_builtins::NoPrototypeBuiltins,
    &no_redeclare::NoRedeclare,
    &no_regex_spaces::NoRegexSpaces,
    &no_self_assign::NoSelfAssign,
    &no_self_compare::NoSelfCompare,
    &no_setter_return::NoSetterReturn,
    &no_shadow_restricted_names::NoShadowRestrictedNames,
    &no_sparse_arrays::NoSparseArrays,
    &no_sync_fn_in_async_fn::NoSyncFnInAsyncFn,
    &no_this_alias::NoThisAlias,
    &no_this_before_super::NoThisBeforeSuper,
    &no_throw_literal::NoThrowLiteral,
    &no_top_level_await::NoTopLevelAwait,
    &no_undef::NoUndef,
    &no_unreachable::NoUnreachable,
    &no_unsafe_finally::NoUnsafeFinally,
    &no_unsafe_negation::NoUnsafeNegation,
    &no_unused_labels::NoUnusedLabels,
    &no_unused_vars::NoUnusedVars,
    &no_var::NoVar,
    &no_window::NoWindow,
    &no_window_prefix::NoWindowPrefix,
    &no_with::NoWith,
    &prefer_as_const::PreferAsConst,
    &prefer_ascii::PreferAscii,
    &prefer_const::PreferConst,
    &prefer_namespace_keyword::PreferNamespaceKeyword,
    &prefer_primordials::PreferPrimordials,
    &require_await::RequireAwait,
    &require_yield::RequireYield,
    &single_var_declarator::SingleVarDeclarator,
    &triple_slash_reference::TripleSlashReference,
    &use_isnan::UseIsNaN,
    &valid_typeof::ValidTypeof,
    &verbatim_module_syntax::VerbatimModuleSyntax,
  ]
}