diff --git a/rust/ast-generator/templates/extractor.mustache b/rust/ast-generator/templates/extractor.mustache index c4f8dbd983df..0ce5b863f267 100644 --- a/rust/ast-generator/templates/extractor.mustache +++ b/rust/ast-generator/templates/extractor.mustache @@ -34,8 +34,9 @@ impl Translator<'_> { {{#nodes}} pub(crate) fn emit_{{snake_case_name}}(&mut self, node: &ast::{{ast_name}}) -> Option> { - {{#has_attrs}} if self.should_be_excluded(node) { return None; } + {{#has_attrs}} + if self.should_be_excluded_attrs(node) { return None; } {{/has_attrs}} {{#fields}} {{#predicate}} diff --git a/rust/downgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/old.dbscheme b/rust/downgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/old.dbscheme new file mode 100644 index 000000000000..a1005655e9ef --- /dev/null +++ b/rust/downgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/old.dbscheme @@ -0,0 +1,3606 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_def +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +@variant_def = + @struct +| @union +| @variant +; + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @const +| @enum +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @struct +| @trait +| @trait_alias +| @type_alias +| @union +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/rust.dbscheme b/rust/downgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/rust.dbscheme new file mode 100644 index 000000000000..2df29df1bf8f --- /dev/null +++ b/rust/downgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/rust.dbscheme @@ -0,0 +1,3612 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_def +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id] +crate_modules( + int id: @crate ref, + int module: @module ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +@variant_def = + @struct +| @union +| @variant +; + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @const +| @enum +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @struct +| @trait +| @trait_alias +| @type_alias +| @union +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/downgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/upgrade.properties b/rust/downgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/upgrade.properties new file mode 100644 index 000000000000..e9796d4cba8a --- /dev/null +++ b/rust/downgrades/a1005655e9efc9f67d3aa2b7a3128f6b80d405a9/upgrade.properties @@ -0,0 +1,2 @@ +description: Remove 'module' from Crate +compatibility: breaking diff --git a/rust/extractor/src/crate_graph.rs b/rust/extractor/src/crate_graph.rs index 8122248aba3c..87f8e4e17b41 100644 --- a/rust/extractor/src/crate_graph.rs +++ b/rust/extractor/src/crate_graph.rs @@ -1,46 +1,15 @@ -use crate::{ - generated::{self}, - trap::{self, TrapFile}, -}; -use chalk_ir::FloatTy; -use chalk_ir::IntTy; -use chalk_ir::Scalar; -use chalk_ir::UintTy; +use crate::{generated, trap}; + use itertools::Itertools; use ra_ap_base_db::{Crate, RootQueryDb}; use ra_ap_cfg::CfgAtom; -use ra_ap_hir::{DefMap, ModuleDefId, PathKind, db::HirDatabase}; -use ra_ap_hir::{VariantId, Visibility, db::DefDatabase}; -use ra_ap_hir_def::GenericDefId; -use ra_ap_hir_def::Lookup; -use ra_ap_hir_def::{ - AssocItemId, ConstParamId, LocalModuleId, TypeOrConstParamId, - data::adt::VariantData, - generics::{GenericParams, TypeOrConstParamData}, - item_scope::ImportOrGlob, - item_tree::ImportKind, - nameres::ModuleData, - path::ImportAlias, -}; -use ra_ap_hir_def::{HasModule, visibility::VisibilityExplicitness}; -use ra_ap_hir_def::{ModuleId, resolver::HasResolver}; -use ra_ap_hir_ty::GenericArg; -use ra_ap_hir_ty::ProjectionTyExt; -use ra_ap_hir_ty::TraitRefExt; -use ra_ap_hir_ty::Ty; -use ra_ap_hir_ty::TyExt; -use ra_ap_hir_ty::TyLoweringContext; -use ra_ap_hir_ty::WhereClause; -use ra_ap_hir_ty::from_assoc_type_id; -use ra_ap_hir_ty::{Binders, FnPointer}; -use ra_ap_hir_ty::{Interner, ProjectionTy}; use ra_ap_ide_db::RootDatabase; use ra_ap_vfs::{Vfs, VfsPath}; +use std::hash::Hash; use std::hash::Hasher; use std::{cmp::Ordering, collections::HashMap, path::PathBuf}; -use std::{hash::Hash, vec}; -use tracing::{debug, error}; +use tracing::error; pub fn extract_crate_graph(trap_provider: &trap::TrapFileProvider, db: &RootDatabase, vfs: &Vfs) { let crate_graph = db.all_crates(); @@ -89,16 +58,6 @@ pub fn extract_crate_graph(trap_provider: &trap::TrapFileProvider, db: &RootData continue; } let krate = krate_id.data(db); - let root_module = emit_module( - db, - db.crate_def_map(*krate_id).as_ref(), - "crate", - DefMap::ROOT, - &mut trap, - ); - let file_label = trap.emit_file(root_module_file); - trap.emit_file_only_location(file_label, root_module); - let crate_dependencies: Vec = krate .dependencies .iter() @@ -118,7 +77,6 @@ pub fn extract_crate_graph(trap_provider: &trap::TrapFileProvider, db: &RootData .as_ref() .map(|x| x.canonical_name().to_string()), version: krate_extra.version.to_owned(), - module: Some(root_module), cfg_options: krate_id .cfg_options(db) .into_iter() @@ -129,7 +87,10 @@ pub fn extract_crate_graph(trap_provider: &trap::TrapFileProvider, db: &RootData .map(|dep| trap.emit(dep)) .collect(), }; - trap.emit(element); + let label = trap.emit(element); + let file_label = trap.emit_file(root_module_file); + trap.emit_file_only_location(file_label, label); + trap.commit().unwrap_or_else(|err| { error!( "Failed to write trap file for crate: {}: {}", @@ -141,1491 +102,6 @@ pub fn extract_crate_graph(trap_provider: &trap::TrapFileProvider, db: &RootData } } -fn emit_module( - db: &dyn HirDatabase, - map: &DefMap, - name: &str, - module: LocalModuleId, - trap: &mut TrapFile, -) -> trap::Label { - let module = &map.modules[module]; - let mut items = Vec::new(); - items.extend(emit_module_children(db, map, module, trap)); - items.extend(emit_module_items(db, module, trap)); - items.extend(emit_module_impls(db, module, trap)); - - let name = trap.emit(generated::Name { - id: trap::TrapId::Star, - text: Some(name.to_owned()), - }); - let item_list = trap.emit(generated::ItemList { - id: trap::TrapId::Star, - attrs: vec![], - items, - }); - let visibility = emit_visibility(db, trap, module.visibility); - trap.emit(generated::Module { - id: trap::TrapId::Star, - name: Some(name), - attrs: vec![], - item_list: Some(item_list), - visibility, - }) -} - -fn emit_module_children( - db: &dyn HirDatabase, - map: &DefMap, - module: &ModuleData, - trap: &mut TrapFile, -) -> Vec> { - module - .children - .iter() - .sorted_by(|a, b| Ord::cmp(&a.0, &b.0)) - .map(|(name, child)| emit_module(db, map, name.as_str(), *child, trap).into()) - .collect() -} - -fn emit_reexport( - db: &dyn HirDatabase, - trap: &mut TrapFile, - uses: &mut HashMap>, - import: ImportOrGlob, - name: &str, -) { - let (use_, idx) = match import { - ImportOrGlob::Glob(import) => (import.use_, import.idx), - ImportOrGlob::Import(import) => (import.use_, import.idx), - }; - let def_db = db.upcast(); - let loc = use_.lookup(def_db); - let use_ = &loc.id.item_tree(def_db)[loc.id.value]; - - use_.use_tree.expand(|id, path, kind, alias| { - if id == idx { - let mut path_components = Vec::new(); - match path.kind { - PathKind::Plain => (), - PathKind::Super(0) => path_components.push("self".to_owned()), - PathKind::Super(n) => { - path_components.extend(std::iter::repeat_n("super".to_owned(), n.into())); - } - PathKind::Crate => path_components.push("crate".to_owned()), - PathKind::Abs => path_components.push("".to_owned()), - PathKind::DollarCrate(crate_id) => { - let crate_extra = crate_id.extra_data(db); - let crate_name = crate_extra - .display_name - .as_ref() - .map(|x| x.canonical_name().to_string()); - path_components.push(crate_name.unwrap_or("crate".to_owned())); - } - } - path_components.extend(path.segments().iter().map(|x| x.as_str().to_owned())); - match kind { - ImportKind::Plain => (), - ImportKind::Glob => path_components.push(name.to_owned()), - ImportKind::TypeOnly => path_components.push("self".to_owned()), - }; - - let alias = alias.map(|alias| match alias { - ImportAlias::Underscore => "_".to_owned(), - ImportAlias::Alias(name) => name.as_str().to_owned(), - }); - let key = format!( - "{} as {}", - path_components.join("::"), - alias.as_ref().unwrap_or(&"".to_owned()) - ); - // prevent duplicate imports - if uses.contains_key(&key) { - return; - } - let rename = alias.map(|name| { - let name = Some(trap.emit(generated::Name { - id: trap::TrapId::Star, - text: Some(name), - })); - trap.emit(generated::Rename { - id: trap::TrapId::Star, - name, - }) - }); - let path = make_qualified_path(trap, path_components, None); - let use_tree = trap.emit(generated::UseTree { - id: trap::TrapId::Star, - is_glob: false, - path, - rename, - use_tree_list: None, - }); - let visibility = emit_visibility(db, trap, Visibility::Public); - uses.insert( - key, - trap.emit(generated::Use { - id: trap::TrapId::Star, - attrs: vec![], - use_tree: Some(use_tree), - visibility, - }) - .into(), - ); - } - }); -} - -fn emit_module_items( - db: &dyn HirDatabase, - module: &ModuleData, - trap: &mut TrapFile, -) -> Vec> { - let mut items: Vec> = Vec::new(); - let mut uses = HashMap::new(); - let item_scope = &module.scope; - for (name, item) in item_scope.entries() { - let def = item.filter_visibility(|x| matches!(x, ra_ap_hir::Visibility::Public)); - if let Some(ra_ap_hir_def::per_ns::Item { - def: _, - vis: _, - import: Some(import), - }) = def.values - { - emit_reexport(db, trap, &mut uses, import, name.as_str()); - } - if let Some(ra_ap_hir_def::per_ns::Item { - def: value, - vis, - import: None, - }) = def.values - { - match value { - ModuleDefId::FunctionId(function) => { - items.push(emit_function(db, trap, None, function, name).into()); - } - ModuleDefId::ConstId(konst) => { - items.extend( - emit_const(db, trap, None, name.as_str(), konst, vis) - .map(Into::>::into), - ); - } - ModuleDefId::StaticId(statik) => { - items.extend(emit_static(db, name.as_str(), trap, statik, vis)); - } - // Enum variants can only be introduced into the value namespace by an import (`use`) statement - ModuleDefId::EnumVariantId(_) => (), - // Not in the "value" namespace - ModuleDefId::ModuleId(_) - | ModuleDefId::AdtId(_) - | ModuleDefId::TraitId(_) - | ModuleDefId::TraitAliasId(_) - | ModuleDefId::TypeAliasId(_) - | ModuleDefId::BuiltinType(_) - | ModuleDefId::MacroId(_) => (), - } - } - if let Some(ra_ap_hir_def::per_ns::Item { - def: _, - vis: _, - import: Some(import), - }) = def.types - { - // TODO: handle ExternCrate as well? - if let Some(import) = import.import_or_glob() { - emit_reexport(db, trap, &mut uses, import, name.as_str()); - } - } - if let Some(ra_ap_hir_def::per_ns::Item { - def: type_id, - vis, - import: None, - }) = def.types - { - match type_id { - ModuleDefId::AdtId(adt_id) => { - items.extend(emit_adt(db, name.as_str(), trap, adt_id, vis)); - } - ModuleDefId::TraitId(trait_id) => { - items.extend(emit_trait(db, name.as_str(), trap, trait_id, vis)); - } - ModuleDefId::TypeAliasId(type_alias_id_) => items.extend( - emit_type_alias(db, trap, None, name.as_str(), type_alias_id_, vis) - .map(Into::>::into), - ), - ModuleDefId::TraitAliasId(_) => (), - ModuleDefId::BuiltinType(_) => (), - // modules are handled separatedly - ModuleDefId::ModuleId(_) => (), - // Enum variants cannot be declarted, only imported - ModuleDefId::EnumVariantId(_) => (), - // Not in the "types" namespace - ModuleDefId::FunctionId(_) - | ModuleDefId::ConstId(_) - | ModuleDefId::StaticId(_) - | ModuleDefId::MacroId(_) => (), - } - } - } - items.extend(uses.values()); - items -} - -fn emit_function( - db: &dyn HirDatabase, - trap: &mut TrapFile, - container: Option, - function: ra_ap_hir_def::FunctionId, - name: &ra_ap_hir::Name, -) -> trap::Label { - let sig = db.callable_item_signature(function.into()); - let parameters = collect_generic_parameters(db, function.into(), container); - - assert_eq!(sig.binders.len(Interner), parameters.len()); - let sig = sig.skip_binders(); - let ty_vars = &[parameters]; - let function_data = db.function_data(function); - let mut self_param = None; - let params = sig - .params() - .iter() - .enumerate() - .filter_map(|(idx, p)| { - let type_repr = emit_hir_ty(trap, db, ty_vars, p); - - if idx == 0 && function_data.has_self_param() { - // Check if the self parameter is a reference - let (is_ref, is_mut) = match p.kind(Interner) { - chalk_ir::TyKind::Ref(mutability, _, _) => { - (true, matches!(mutability, chalk_ir::Mutability::Mut)) - } - chalk_ir::TyKind::Raw(mutability, _) => { - (false, matches!(mutability, chalk_ir::Mutability::Mut)) - } - _ => (false, false), - }; - - self_param = Some(trap.emit(generated::SelfParam { - id: trap::TrapId::Star, - attrs: vec![], - type_repr, - is_ref, - is_mut, - lifetime: None, - name: None, - })); - None - } else { - Some(trap.emit(generated::Param { - id: trap::TrapId::Star, - attrs: vec![], - type_repr, - pat: None, - })) - } - }) - .collect(); - - let ret_type = emit_hir_ty(trap, db, ty_vars, sig.ret()); - - let param_list = trap.emit(generated::ParamList { - id: trap::TrapId::Star, - params, - self_param, - }); - let ret_type = ret_type.map(|ret_type| { - trap.emit(generated::RetTypeRepr { - id: trap::TrapId::Star, - type_repr: Some(ret_type), - }) - }); - let name = Some(trap.emit(generated::Name { - id: trap::TrapId::Star, - text: Some(name.as_str().to_owned()), - })); - let data = db.function_data(function); - let visibility = emit_visibility( - db, - trap, - data.visibility - .resolve(db.upcast(), &function.resolver(db.upcast())), - ); - let generic_param_list = emit_generic_param_list(trap, db, ty_vars, function.into()); - trap.emit(generated::Function { - id: trap::TrapId::Star, - name, - attrs: vec![], - body: None, - is_const: data.is_const(), - is_default: data.is_default(), - visibility, - abi: None, - is_async: data.is_async(), - is_gen: false, - is_unsafe: data.is_unsafe(), - generic_param_list, - param_list: Some(param_list), - ret_type, - where_clause: None, - }) -} - -fn collect_generic_parameters( - db: &dyn HirDatabase, - def: GenericDefId, - container: Option, -) -> Vec { - let mut parameters = Vec::new(); - let gen_params = db.generic_params(def); - collect(&gen_params, &mut parameters); - if let Some(gen_params) = container.map(|container| db.generic_params(container)) { - collect(gen_params.as_ref(), &mut parameters); - } - return parameters; - - fn collect(gen_params: &GenericParams, parameters: &mut Vec) { - // Self, Lifetimes, TypesOrConsts - let skip = if gen_params.trait_self_param().is_some() { - parameters.push("Self".into()); - 1 - } else { - 0 - }; - parameters.extend(gen_params.iter_lt().map(|(_, lt)| lt.name.as_str().into())); - parameters.extend(gen_params.iter_type_or_consts().skip(skip).map(|(_, p)| { - p.name() - .map(|p| p.as_str().into()) - .unwrap_or("{error}".into()) - })); - } -} - -fn emit_const( - db: &dyn HirDatabase, - trap: &mut TrapFile, - container: Option, - name: &str, - konst: ra_ap_hir_def::ConstId, - visibility: Visibility, -) -> Option> { - let type_ = db.value_ty(konst.into()); - let parameters = collect_generic_parameters(db, konst.into(), container); - assert_eq!( - type_ - .as_ref() - .map_or(0, |type_| type_.binders.len(Interner)), - parameters.len() - ); - let ty_vars = &[parameters]; - let type_repr = type_.and_then(|type_| emit_hir_ty(trap, db, ty_vars, type_.skip_binders())); - let name = Some(trap.emit(generated::Name { - id: trap::TrapId::Star, - text: Some(name.to_owned()), - })); - let konst = db.const_data(konst); - let visibility = emit_visibility(db, trap, visibility); - Some(trap.emit(generated::Const { - id: trap::TrapId::Star, - name, - attrs: vec![], - body: None, - is_const: true, - is_default: konst.has_body(), - type_repr, - visibility, - })) -} - -fn emit_static( - db: &dyn HirDatabase, - name: &str, - trap: &mut TrapFile, - statik: ra_ap_hir_def::StaticId, - visibility: Visibility, -) -> Option> { - let type_ = db.value_ty(statik.into()); - let parameters = collect_generic_parameters(db, statik.into(), None); - assert_eq!( - type_ - .as_ref() - .map_or(0, |type_| type_.binders.len(Interner)), - parameters.len() - ); - let ty_vars = &[parameters]; - let type_repr = type_.and_then(|type_| emit_hir_ty(trap, db, ty_vars, type_.skip_binders())); - let name = Some(trap.emit(generated::Name { - id: trap::TrapId::Star, - text: Some(name.to_owned()), - })); - let statik = db.static_data(statik); - let visibility = emit_visibility(db, trap, visibility); - Some( - trap.emit(generated::Static { - id: trap::TrapId::Star, - name, - attrs: vec![], - body: None, - type_repr, - visibility, - is_mut: statik.mutable(), - is_static: true, - is_unsafe: statik.has_unsafe_kw(), - }) - .into(), - ) -} - -fn emit_type_alias( - db: &dyn HirDatabase, - trap: &mut TrapFile, - container: Option, - name: &str, - alias_id: ra_ap_hir_def::TypeAliasId, - visibility: Visibility, -) -> Option> { - let (type_, _) = db.type_for_type_alias_with_diagnostics(alias_id); - let parameters = collect_generic_parameters(db, alias_id.into(), container); - assert_eq!(type_.binders.len(Interner), parameters.len()); - let ty_vars = &[parameters]; - let type_repr = emit_hir_ty(trap, db, ty_vars, type_.skip_binders()); - let name = Some(trap.emit(generated::Name { - id: trap::TrapId::Star, - text: Some(name.to_owned()), - })); - let visibility = emit_visibility(db, trap, visibility); - let alias = db.type_alias_data(alias_id); - let generic_param_list = emit_generic_param_list(trap, db, ty_vars, alias_id.into()); - Some(trap.emit(generated::TypeAlias { - id: trap::TrapId::Star, - name, - attrs: vec![], - is_default: container.is_some() && alias.type_ref.is_some(), - type_repr, - visibility, - generic_param_list, - type_bound_list: None, - where_clause: None, - })) -} - -fn emit_generic_param_list( - trap: &mut TrapFile, - db: &dyn HirDatabase, - ty_vars: &[Vec], - def: GenericDefId, -) -> Option> { - let params = db.generic_params(def); - let trait_self_param = params.trait_self_param(); - if params.is_empty() || params.len() == 1 && trait_self_param.is_some() { - return None; - } - let mut generic_params = Vec::new(); - generic_params.extend(params.iter_lt().map( - |(_, param)| -> trap::Label { - let lifetime = trap - .emit(generated::Lifetime { - id: trap::TrapId::Star, - text: Some(param.name.as_str().to_owned()), - }) - .into(); - - trap.emit(generated::LifetimeParam { - id: trap::TrapId::Star, - attrs: vec![], - lifetime, - type_bound_list: None, - }) - .into() - }, - )); - generic_params.extend( - params - .iter_type_or_consts() - .filter(|(id, _)| trait_self_param != Some(*id)) - .map( - |(param_id, param)| -> trap::Label { - match param { - TypeOrConstParamData::TypeParamData(param) => { - let name = Some(trap.emit(generated::Name { - id: trap::TrapId::Star, - text: param.name.as_ref().map(|name| name.as_str().to_owned()), - })); - let resolver = def.resolver(db.upcast()); - let mut ctx = TyLoweringContext::new( - db, - &resolver, - ¶ms.types_map, - def.into(), - ); - - let default_type = param - .default - .and_then(|ty| emit_hir_ty(trap, db, ty_vars, &ctx.lower_ty(ty))); - trap.emit(generated::TypeParam { - id: trap::TrapId::Star, - attrs: vec![], - name, - default_type, - type_bound_list: None, - }) - .into() - } - TypeOrConstParamData::ConstParamData(param) => { - let name = Some(trap.emit(generated::Name { - id: trap::TrapId::Star, - text: param.name.as_str().to_owned().into(), - })); - let param_id = TypeOrConstParamId { - parent: def, - local_id: param_id, - }; - let ty = db.const_param_ty(ConstParamId::from_unchecked(param_id)); - let type_repr = emit_hir_ty(trap, db, ty_vars, &ty); - trap.emit(generated::ConstParam { - id: trap::TrapId::Star, - attrs: vec![], - name, - default_val: None, - is_const: true, - type_repr, - }) - .into() - } - } - }, - ), - ); - trap.emit(generated::GenericParamList { - id: trap::TrapId::Star, - generic_params, - }) - .into() -} -fn emit_adt( - db: &dyn HirDatabase, - name: &str, - trap: &mut TrapFile, - adt_id: ra_ap_hir_def::AdtId, - visibility: Visibility, -) -> Option> { - let parameters = collect_generic_parameters(db, adt_id.into(), None); - let ty_vars = &[parameters]; - - match adt_id { - ra_ap_hir_def::AdtId::StructId(struct_id) => { - let name = Some(trap.emit(generated::Name { - id: trap::TrapId::Star, - text: Some(name.to_owned()), - })); - let field_list = emit_variant_data(trap, db, ty_vars, struct_id.into()).into(); - let visibility = emit_visibility(db, trap, visibility); - let generic_param_list = emit_generic_param_list(trap, db, ty_vars, adt_id.into()); - Some( - trap.emit(generated::Struct { - id: trap::TrapId::Star, - name, - attrs: vec![], - field_list, - generic_param_list, - visibility, - where_clause: None, - }) - .into(), - ) - } - ra_ap_hir_def::AdtId::EnumId(enum_id) => { - let data = db.enum_variants(enum_id); - let variants = data - .variants - .iter() - .map(|(enum_id, name)| { - let name = Some(trap.emit(generated::Name { - id: trap::TrapId::Star, - text: Some(name.as_str().to_owned()), - })); - let field_list = emit_variant_data(trap, db, ty_vars, (*enum_id).into()).into(); - let visibility = None; - trap.emit(generated::Variant { - id: trap::TrapId::Star, - name, - field_list, - attrs: vec![], - discriminant: None, - visibility, - }) - }) - .collect(); - let variant_list = Some(trap.emit(generated::VariantList { - id: trap::TrapId::Star, - variants, - })); - let name = Some(trap.emit(generated::Name { - id: trap::TrapId::Star, - text: Some(name.to_owned()), - })); - let visibility = emit_visibility(db, trap, visibility); - let generic_param_list = emit_generic_param_list(trap, db, ty_vars, adt_id.into()); - Some( - trap.emit(generated::Enum { - id: trap::TrapId::Star, - name, - attrs: vec![], - generic_param_list, - variant_list, - visibility, - where_clause: None, - }) - .into(), - ) - } - ra_ap_hir_def::AdtId::UnionId(union_id) => { - let name = Some(trap.emit(generated::Name { - id: trap::TrapId::Star, - text: Some(name.to_owned()), - })); - let struct_field_list = emit_variant_data(trap, db, ty_vars, union_id.into()).into(); - let visibility = emit_visibility(db, trap, visibility); - let generic_param_list = emit_generic_param_list(trap, db, ty_vars, adt_id.into()); - Some( - trap.emit(generated::Union { - id: trap::TrapId::Star, - name, - attrs: vec![], - struct_field_list, - generic_param_list, - visibility, - where_clause: None, - }) - .into(), - ) - } - } -} - -fn emit_trait( - db: &dyn HirDatabase, - name: &str, - trap: &mut TrapFile, - trait_id: ra_ap_hir_def::TraitId, - visibility: Visibility, -) -> Option> { - let parameters = collect_generic_parameters(db, trait_id.into(), None); - let ty_vars = &[parameters]; - let trait_items = db.trait_items(trait_id); - let assoc_items: Vec> = trait_items - .items - .iter() - .flat_map(|(name, item)| match item { - AssocItemId::FunctionId(function_id) => { - Some(emit_function(db, trap, Some(trait_id.into()), *function_id, name).into()) - } - - AssocItemId::ConstId(const_id) => emit_const( - db, - trap, - Some(trait_id.into()), - name.as_str(), - *const_id, - visibility, - ) - .map(Into::into), - AssocItemId::TypeAliasId(type_alias_id) => emit_type_alias( - db, - trap, - Some(trait_id.into()), - name.as_str(), - *type_alias_id, - visibility, - ) - .map(Into::into), - }) - .collect(); - let assoc_item_list = Some(trap.emit(generated::AssocItemList { - id: trap::TrapId::Star, - assoc_items, - attrs: vec![], - })); - let name = Some(trap.emit(generated::Name { - id: trap::TrapId::Star, - text: Some(name.to_owned()), - })); - let visibility = emit_visibility(db, trap, visibility); - let generic_param_list = emit_generic_param_list(trap, db, ty_vars, trait_id.into()); - Some( - trap.emit(generated::Trait { - id: trap::TrapId::Star, - name, - assoc_item_list, - attrs: vec![], - generic_param_list, - is_auto: false, - is_unsafe: false, - type_bound_list: None, - visibility, - where_clause: None, - }) - .into(), - ) -} - -fn emit_module_impls( - db: &dyn HirDatabase, - module: &ModuleData, - trap: &mut TrapFile, -) -> Vec> { - let mut items = Vec::new(); - module.scope.impls().for_each(|imp| { - let self_ty = db.impl_self_ty(imp); - let parameters = collect_generic_parameters(db, imp.into(), None); - let parameters_len = parameters.len(); - assert_eq!(self_ty.binders.len(Interner), parameters_len); - - let ty_vars = &[parameters]; - let self_ty = emit_hir_ty(trap, db, ty_vars, self_ty.skip_binders()); - let path = db.impl_trait(imp).map(|trait_ref| { - assert_eq!(trait_ref.binders.len(Interner), parameters_len); - trait_path(db, trap, ty_vars, trait_ref.skip_binders()) - }); - let trait_ = path.map(|path| { - trap.emit(generated::PathTypeRepr { - id: trap::TrapId::Star, - path, - }) - .into() - }); - let imp_items = db.impl_items(imp); - let assoc_items = imp_items - .items - .iter() - .flat_map(|item| { - if let (name, AssocItemId::FunctionId(function)) = item { - Some(emit_function(db, trap, Some(imp.into()), *function, name).into()) - } else { - None - } - }) - .collect(); - let assoc_item_list = Some(trap.emit(generated::AssocItemList { - id: trap::TrapId::Star, - assoc_items, - attrs: vec![], - })); - let generic_param_list = emit_generic_param_list(trap, db, ty_vars, imp.into()); - items.push( - trap.emit(generated::Impl { - id: trap::TrapId::Star, - trait_, - self_ty, - assoc_item_list, - attrs: vec![], - generic_param_list, - is_const: false, - is_default: false, - is_unsafe: false, - visibility: None, - where_clause: None, - }) - .into(), - ); - }); - items -} - -fn emit_visibility( - db: &dyn HirDatabase, - trap: &mut TrapFile, - visibility: Visibility, -) -> Option> { - let path = match visibility { - Visibility::Module(module_id, VisibilityExplicitness::Explicit) => { - Some(make_path_mod(db.upcast(), module_id)) - } - Visibility::Public => Some(vec![]), - Visibility::Module(_, VisibilityExplicitness::Implicit) => None, - }; - path.map(|path| { - let path = make_qualified_path(trap, path, None); - trap.emit(generated::Visibility { - id: trap::TrapId::Star, - path, - }) - }) -} -fn push_ty_vars(ty_vars: &[Vec], vars: Vec) -> Vec> { - let mut result = ty_vars.to_vec(); - result.push(vars); - result -} -fn emit_hir_type_bound( - db: &dyn HirDatabase, - trap: &mut TrapFile, - ty_vars: &[Vec], - type_bound: &Binders>, -) -> Option> { - // Rust-analyzer seems to call `wrap_empty_binders` on `WhereClause`s. - let parameters = vec![]; - assert_eq!(type_bound.binders.len(Interner), parameters.len(),); - let ty_vars = &push_ty_vars(ty_vars, parameters); - - match type_bound.skip_binders() { - WhereClause::Implemented(trait_ref) => { - let path = trait_path(db, trap, ty_vars, trait_ref); - let type_repr = Some( - trap.emit(generated::PathTypeRepr { - id: trap::TrapId::Star, - path, - }) - .into(), - ); - Some(trap.emit(generated::TypeBound { - id: trap::TrapId::Star, - is_async: false, - is_const: false, - lifetime: None, - type_repr, - use_bound_generic_args: None, - })) - } - WhereClause::AliasEq(_) - | WhereClause::LifetimeOutlives(_) - | WhereClause::TypeOutlives(_) => None, // TODO - } -} - -fn trait_path( - db: &dyn HirDatabase, - trap: &mut TrapFile, - ty_vars: &[Vec], - trait_ref: &chalk_ir::TraitRef, -) -> Option> { - let mut path = make_path(db, trait_ref.hir_trait_id()); - path.push( - db.trait_data(trait_ref.hir_trait_id()) - .name - .as_str() - .to_owned(), - ); - let generic_arg_list = emit_generic_arg_list( - trap, - db, - ty_vars, - &trait_ref.substitution.as_slice(Interner)[1..], - ); - - make_qualified_path(trap, path, generic_arg_list) -} - -fn emit_hir_fn_ptr( - trap: &mut TrapFile, - db: &dyn HirDatabase, - ty_vars: &[Vec], - function: &FnPointer, -) -> trap::Label { - // Currently rust-analyzer does not handle `for<'a'> fn()` correctly: - // ```rust - // TyKind::Function(FnPointer { - // num_binders: 0, // FIXME lower `for<'a> fn()` correctly - // ``` - // https://github.com/rust-lang/rust-analyzer/blob/c5882732e6e6e09ac75cddd13545e95860be1c42/crates/hir-ty/src/lower.rs#L325 - let parameters = vec![]; - assert_eq!(function.num_binders, parameters.len(),); - let ty_vars = &push_ty_vars(ty_vars, parameters); - - let parameters: Vec<_> = function.substitution.0.type_parameters(Interner).collect(); - - let (ret_type, params) = parameters.split_last().unwrap(); - - let ret_type = emit_hir_ty(trap, db, ty_vars, ret_type); - let ret_type = Some(trap.emit(generated::RetTypeRepr { - id: trap::TrapId::Star, - type_repr: ret_type, - })); - let params = params - .iter() - .map(|t| { - let type_repr = emit_hir_ty(trap, db, ty_vars, t); - trap.emit(generated::Param { - id: trap::TrapId::Star, - attrs: vec![], - type_repr, - pat: None, - }) - }) - .collect(); - let param_list = Some(trap.emit(generated::ParamList { - id: trap::TrapId::Star, - params, - self_param: None, - })); - let is_unsafe = matches!(function.sig.safety, ra_ap_hir::Safety::Unsafe); - trap.emit(generated::FnPtrTypeRepr { - id: trap::TrapId::Star, - abi: None, - is_async: false, - is_const: false, - is_unsafe, - ret_type, - param_list, - }) -} - -fn scalar_to_str(scalar: &Scalar) -> &'static str { - match scalar { - Scalar::Bool => "bool", - Scalar::Char => "char", - Scalar::Int(IntTy::I8) => "i8", - Scalar::Int(IntTy::I16) => "i16", - Scalar::Int(IntTy::I32) => "i32", - Scalar::Int(IntTy::I64) => "i64", - Scalar::Int(IntTy::I128) => "i128", - Scalar::Int(IntTy::Isize) => "isize", - Scalar::Uint(UintTy::U8) => "u8", - Scalar::Uint(UintTy::U16) => "u16", - Scalar::Uint(UintTy::U32) => "u32", - Scalar::Uint(UintTy::U64) => "u64", - Scalar::Uint(UintTy::U128) => "u128", - Scalar::Uint(UintTy::Usize) => "usize", - Scalar::Float(FloatTy::F16) => "f16", - Scalar::Float(FloatTy::F32) => "f32", - Scalar::Float(FloatTy::F64) => "f64", - Scalar::Float(FloatTy::F128) => "f128", - } -} - -fn make_path(db: &dyn HirDatabase, item: impl HasModule) -> Vec { - let db = db.upcast(); - let module = item.module(db); - make_path_mod(db, module) -} - -fn make_path_mod(db: &dyn DefDatabase, module: ModuleId) -> Vec { - let mut path = Vec::new(); - let mut module = module; - loop { - if module.is_block_module() { - path.push("".to_owned()); - } else if let Some(name) = module.name(db).map(|x| x.as_str().to_owned()).or_else(|| { - module.as_crate_root().and_then(|k| { - let krate = k.krate().extra_data(db); - krate - .display_name - .as_ref() - .map(|x| x.canonical_name().to_string()) - }) - }) { - path.push(name); - } else { - path.push("".to_owned()); - } - if let Some(parent) = module.containing_module(db) { - module = parent; - } else { - break; - } - } - path.reverse(); - path -} - -fn make_qualified_path( - trap: &mut TrapFile, - path: Vec, - generic_arg_list: Option>, -) -> Option> { - fn qualified_path( - trap: &mut TrapFile, - qualifier: Option>, - name: String, - generic_arg_list: Option>, - ) -> trap::Label { - let identifier = Some(trap.emit(generated::NameRef { - id: trap::TrapId::Star, - text: Some(name), - })); - let segment = Some(trap.emit(generated::PathSegment { - id: trap::TrapId::Star, - generic_arg_list, - identifier, - parenthesized_arg_list: None, - ret_type: None, - return_type_syntax: None, - })); - trap.emit(generated::Path { - id: trap::TrapId::Star, - qualifier, - segment, - }) - } - let args = std::iter::repeat_n(None, &path.len() - 1).chain(std::iter::once(generic_arg_list)); - path.into_iter() - .zip(args) - .fold(None, |q, (p, a)| Some(qualified_path(trap, q, p, a))) -} -fn emit_hir_ty( - trap: &mut TrapFile, - db: &dyn HirDatabase, - ty_vars: &[Vec], - ty: &Ty, -) -> Option> { - match ty.kind(ra_ap_hir_ty::Interner) { - chalk_ir::TyKind::Never => Some( - trap.emit(generated::NeverTypeRepr { - id: trap::TrapId::Star, - }) - .into(), - ), - - chalk_ir::TyKind::Placeholder(_index) => Some( - trap.emit(generated::InferTypeRepr { - id: trap::TrapId::Star, - }) - .into(), - ), - - chalk_ir::TyKind::Tuple(_size, substitution) => { - let fields = substitution.type_parameters(ra_ap_hir_ty::Interner); - let fields = fields - .flat_map(|field| emit_hir_ty(trap, db, ty_vars, &field)) - .collect(); - - Some( - trap.emit(generated::TupleTypeRepr { - id: trap::TrapId::Star, - fields, - }) - .into(), - ) - } - chalk_ir::TyKind::Raw(mutability, ty) => { - let type_repr = emit_hir_ty(trap, db, ty_vars, ty); - - Some( - trap.emit(generated::PtrTypeRepr { - id: trap::TrapId::Star, - is_mut: matches!(mutability, chalk_ir::Mutability::Mut), - is_const: false, - type_repr, - }) - .into(), - ) - } - chalk_ir::TyKind::Ref(mutability, lifetime, ty) => { - let type_repr = emit_hir_ty(trap, db, ty_vars, ty); - let lifetime = emit_lifetime(trap, ty_vars, lifetime); - Some( - trap.emit(generated::RefTypeRepr { - id: trap::TrapId::Star, - is_mut: matches!(mutability, chalk_ir::Mutability::Mut), - lifetime: Some(lifetime), - type_repr, - }) - .into(), - ) - } - chalk_ir::TyKind::Array(ty, _konst) => { - let element_type_repr = emit_hir_ty(trap, db, ty_vars, ty); - // TODO: handle array size constant - Some( - trap.emit(generated::ArrayTypeRepr { - id: trap::TrapId::Star, - const_arg: None, - element_type_repr, - }) - .into(), - ) - } - chalk_ir::TyKind::Slice(ty) => { - let type_repr = emit_hir_ty(trap, db, ty_vars, ty); - Some( - trap.emit(generated::SliceTypeRepr { - id: trap::TrapId::Star, - type_repr, - }) - .into(), - ) - } - - chalk_ir::TyKind::Adt(adt_id, substitution) => { - let mut path = make_path(db, adt_id.0); - let name = match adt_id.0 { - ra_ap_hir_def::AdtId::StructId(struct_id) => { - db.struct_data(struct_id).name.as_str().to_owned() - } - ra_ap_hir_def::AdtId::UnionId(union_id) => { - db.union_data(union_id).name.as_str().to_owned() - } - ra_ap_hir_def::AdtId::EnumId(enum_id) => { - db.enum_data(enum_id).name.as_str().to_owned() - } - }; - path.push(name); - let generic_arg_list = - emit_generic_arg_list(trap, db, ty_vars, substitution.as_slice(Interner)); - let path = make_qualified_path(trap, path, generic_arg_list); - Some( - trap.emit(generated::PathTypeRepr { - id: trap::TrapId::Star, - path, - }) - .into(), - ) - } - chalk_ir::TyKind::Scalar(scalar) => { - let path = make_qualified_path(trap, vec![scalar_to_str(scalar).to_owned()], None); - Some( - trap.emit(generated::PathTypeRepr { - id: trap::TrapId::Star, - path, - }) - .into(), - ) - } - chalk_ir::TyKind::Str => { - let path = make_qualified_path(trap, vec!["str".to_owned()], None); - Some( - trap.emit(generated::PathTypeRepr { - id: trap::TrapId::Star, - path, - }) - .into(), - ) - } - chalk_ir::TyKind::Function(fn_pointer) => { - Some(emit_hir_fn_ptr(trap, db, ty_vars, fn_pointer).into()) - } - chalk_ir::TyKind::OpaqueType(_, _) - | chalk_ir::TyKind::Alias(chalk_ir::AliasTy::Opaque(_)) => { - let bounds = ty - .impl_trait_bounds(db) - .iter() - .flatten() - .flat_map(|t| emit_hir_type_bound(db, trap, ty_vars, t)) - .collect(); - let type_bound_list = Some(trap.emit(generated::TypeBoundList { - id: trap::TrapId::Star, - bounds, - })); - Some( - trap.emit(generated::ImplTraitTypeRepr { - id: trap::TrapId::Star, - type_bound_list, - }) - .into(), - ) - } - chalk_ir::TyKind::Dyn(dyn_ty) => { - let parameters = vec!["Self".to_owned()]; - assert_eq!(dyn_ty.bounds.binders.len(Interner), parameters.len(),); - let ty_vars = &push_ty_vars(ty_vars, parameters); - - let bounds = dyn_ty - .bounds - .skip_binders() - .iter(ra_ap_hir_ty::Interner) - .flat_map(|t| emit_hir_type_bound(db, trap, ty_vars, t)) - .collect(); - let type_bound_list = Some(trap.emit(generated::TypeBoundList { - id: trap::TrapId::Star, - bounds, - })); - Some( - trap.emit(generated::DynTraitTypeRepr { - id: trap::TrapId::Star, - type_bound_list, - }) - .into(), - ) - } - chalk_ir::TyKind::FnDef(fn_def_id, parameters) => { - let sig = ra_ap_hir_ty::CallableSig::from_def(db, *fn_def_id, parameters); - Some(emit_hir_fn_ptr(trap, db, ty_vars, &sig.to_fn_ptr()).into()) - } - - chalk_ir::TyKind::Alias(chalk_ir::AliasTy::Projection(ProjectionTy { - associated_ty_id, - substitution, - })) - | chalk_ir::TyKind::AssociatedType(associated_ty_id, substitution) => { - let pt = ProjectionTy { - associated_ty_id: *associated_ty_id, - substitution: substitution.clone(), - }; - - // >::Name<...> - - let qualifier = trap.emit(generated::PathSegment { - id: trap::TrapId::Star, - generic_arg_list: None, - identifier: None, - parenthesized_arg_list: None, - ret_type: None, - return_type_syntax: None, - }); - let self_ty = pt.self_type_parameter(db); - let self_ty = emit_hir_ty(trap, db, ty_vars, &self_ty); - if let Some(self_ty) = self_ty { - generated::PathSegment::emit_type_repr(qualifier, self_ty, &mut trap.writer) - } - let trait_ref = pt.trait_ref(db); - let trait_ref = trait_path(db, trap, ty_vars, &trait_ref); - let trait_ref = trait_ref.map(|path| { - trap.emit(generated::PathTypeRepr { - id: trap::TrapId::Star, - path: Some(path), - }) - }); - if let Some(trait_ref) = trait_ref { - generated::PathSegment::emit_trait_type_repr(qualifier, trait_ref, &mut trap.writer) - } - let data = db.type_alias_data(from_assoc_type_id(*associated_ty_id)); - - let identifier = Some(trap.emit(generated::NameRef { - id: trap::TrapId::Star, - text: Some(data.name.as_str().to_owned()), - })); - let segment = trap.emit(generated::PathSegment { - id: trap::TrapId::Star, - generic_arg_list: None, - identifier, - parenthesized_arg_list: None, - ret_type: None, - return_type_syntax: None, - }); - let qualifier = trap.emit(generated::Path { - id: trap::TrapId::Star, - qualifier: None, - segment: Some(qualifier), - }); - let path = trap.emit(generated::Path { - id: trap::TrapId::Star, - qualifier: Some(qualifier), - segment: Some(segment), - }); - Some( - trap.emit(generated::PathTypeRepr { - id: trap::TrapId::Star, - path: Some(path), - }) - .into(), - ) - } - chalk_ir::TyKind::BoundVar(var) => { - let var_ = ty_vars - .get(ty_vars.len() - 1 - var.debruijn.depth() as usize) - .and_then(|ty_vars| ty_vars.get(var.index)); - let path = make_qualified_path( - trap, - vec![ - var_.unwrap_or(&format!("E_{}_{}", var.debruijn.depth(), var.index)) - .clone(), - ], - None, - ); - Some( - trap.emit(generated::PathTypeRepr { - id: trap::TrapId::Star, - path, - }) - .into(), - ) - } - chalk_ir::TyKind::Foreign(_) - | chalk_ir::TyKind::Closure(_, _) - | chalk_ir::TyKind::Coroutine(_, _) - | chalk_ir::TyKind::CoroutineWitness(_, _) - | chalk_ir::TyKind::InferenceVar(_, _) - | chalk_ir::TyKind::Error => { - debug!("Unexpected type {:#?}", ty.kind(ra_ap_hir_ty::Interner)); - None - } - } -} - -fn emit_generic_arg_list( - trap: &mut TrapFile, - db: &dyn HirDatabase, - ty_vars: &[Vec], - args: &[GenericArg], -) -> Option> { - if args.is_empty() { - return None; - } - let generic_args = args - .iter() - .flat_map(|arg| { - if let Some(ty) = arg.ty(Interner) { - let type_repr = emit_hir_ty(trap, db, ty_vars, ty); - Some( - trap.emit(generated::TypeArg { - id: trap::TrapId::Star, - type_repr, - }) - .into(), - ) - } else if let Some(l) = arg.lifetime(Interner) { - let lifetime = emit_lifetime(trap, ty_vars, l); - Some( - trap.emit(generated::LifetimeArg { - id: trap::TrapId::Star, - lifetime: Some(lifetime), - }) - .into(), - ) - } else if arg.constant(Interner).is_some() { - Some( - trap.emit(generated::ConstArg { - id: trap::TrapId::Star, - expr: None, - }) - .into(), - ) - } else { - None - } - }) - .collect(); - - trap.emit(generated::GenericArgList { - id: trap::TrapId::Star, - generic_args, - }) - .into() -} - -fn emit_lifetime( - trap: &mut TrapFile, - ty_vars: &[Vec], - l: &chalk_ir::Lifetime, -) -> trap::Label { - let text = match l.data(Interner) { - chalk_ir::LifetimeData::BoundVar(var) => { - let var_ = ty_vars - .get(ty_vars.len() - 1 - var.debruijn.depth() as usize) - .and_then(|ty_vars| ty_vars.get(var.index)); - - Some(var_.map(|v| v.to_string()).unwrap_or(format!( - "'E_{}_{}", - var.debruijn.depth(), - var.index - ))) - } - chalk_ir::LifetimeData::Static => "'static'".to_owned().into(), - chalk_ir::LifetimeData::InferenceVar(_) - | chalk_ir::LifetimeData::Placeholder(_) - | chalk_ir::LifetimeData::Erased - | chalk_ir::LifetimeData::Phantom(_, _) - | chalk_ir::LifetimeData::Error => None, - }; - trap.emit(generated::Lifetime { - id: trap::TrapId::Star, - text, - }) -} - -enum Variant { - Unit, - Record(trap::Label), - Tuple(trap::Label), -} - -impl From for Option> { - fn from(val: Variant) -> Self { - match val { - Variant::Record(label) => Some(label), - Variant::Unit | Variant::Tuple(_) => None, - } - } -} - -impl From for Option> { - fn from(val: Variant) -> Self { - match val { - Variant::Record(label) => Some(label.into()), - Variant::Tuple(label) => Some(label.into()), - Variant::Unit => None, - } - } -} - -fn emit_variant_data( - trap: &mut TrapFile, - db: &dyn HirDatabase, - ty_vars: &[Vec], - variant_id: VariantId, -) -> Variant { - let parameters_len = ty_vars.last().map_or(0, Vec::len); - let variant = variant_id.variant_data(db.upcast()); - match variant.as_ref() { - VariantData::Record { - fields: field_data, - types_map: _, - } => { - let field_types = db.field_types(variant_id); - let fields = field_types - .iter() - .map(|(field_id, ty)| { - let name = Some(trap.emit(generated::Name { - id: trap::TrapId::Star, - text: Some(field_data[field_id].name.as_str().to_owned()), - })); - assert_eq!(ty.binders.len(Interner), parameters_len); - let type_repr = emit_hir_ty(trap, db, ty_vars, ty.skip_binders()); - let visibility = emit_visibility( - db, - trap, - field_data[field_id] - .visibility - .resolve(db.upcast(), &variant_id.resolver(db.upcast())), - ); - trap.emit(generated::StructField { - id: trap::TrapId::Star, - attrs: vec![], - is_unsafe: field_data[field_id].is_unsafe, - name, - type_repr, - visibility, - default: None, - }) - }) - .collect(); - Variant::Record(trap.emit(generated::StructFieldList { - id: trap::TrapId::Star, - fields, - })) - } - VariantData::Tuple { - fields: field_data, .. - } => { - let field_types = db.field_types(variant_id); - let fields = field_types - .iter() - .map(|(field_id, ty)| { - assert_eq!(ty.binders.len(Interner), parameters_len); - let type_repr = emit_hir_ty(trap, db, ty_vars, ty.skip_binders()); - let visibility = emit_visibility( - db, - trap, - field_data[field_id] - .visibility - .resolve(db.upcast(), &variant_id.resolver(db.upcast())), - ); - - trap.emit(generated::TupleField { - id: trap::TrapId::Star, - attrs: vec![], - type_repr, - visibility, - }) - }) - .collect(); - Variant::Tuple(trap.emit(generated::TupleFieldList { - id: trap::TrapId::Star, - fields, - })) - } - VariantData::Unit => Variant::Unit, - } -} - fn cmp_flag(a: &&CfgAtom, b: &&CfgAtom) -> Ordering { match (a, b) { (CfgAtom::Flag(a), CfgAtom::Flag(b)) => a.as_str().cmp(b.as_str()), diff --git a/rust/extractor/src/diagnostics.rs b/rust/extractor/src/diagnostics.rs index b0201e2aed75..0db3358d558a 100644 --- a/rust/extractor/src/diagnostics.rs +++ b/rust/extractor/src/diagnostics.rs @@ -1,4 +1,5 @@ use crate::config::Config; +use crate::translate::SourceKind; use anyhow::Context; use chrono::{DateTime, Utc}; use ra_ap_project_model::ProjectManifest; @@ -83,6 +84,8 @@ pub enum ExtractionStepKind { LoadSource, Parse, Extract, + ParseLibrary, + ExtractLibrary, CrateGraph, } @@ -113,18 +116,24 @@ impl ExtractionStep { ) } - pub fn parse(start: Instant, target: &Path) -> Self { + pub fn parse(start: Instant, source_kind: SourceKind, target: &Path) -> Self { Self::new( start, - ExtractionStepKind::Parse, + match source_kind { + SourceKind::Source => ExtractionStepKind::Parse, + SourceKind::Library => ExtractionStepKind::ParseLibrary, + }, Some(PathBuf::from(target)), ) } - pub fn extract(start: Instant, target: &Path) -> Self { + pub fn extract(start: Instant, source_kind: SourceKind, target: &Path) -> Self { Self::new( start, - ExtractionStepKind::Extract, + match source_kind { + SourceKind::Source => ExtractionStepKind::Extract, + SourceKind::Library => ExtractionStepKind::ExtractLibrary, + }, Some(PathBuf::from(target)), ) } diff --git a/rust/extractor/src/generated/.generated.list b/rust/extractor/src/generated/.generated.list index a6ed41038714..cb687e1bff00 100644 --- a/rust/extractor/src/generated/.generated.list +++ b/rust/extractor/src/generated/.generated.list @@ -1,2 +1,2 @@ mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 -top.rs 7d0c7b324631207a5f0f89649634431b6fe6f27610a31be118f0dc90c17314f7 7d0c7b324631207a5f0f89649634431b6fe6f27610a31be118f0dc90c17314f7 +top.rs 7f8a694078bc0cde1ce420544d0cf5b83bb297dd29ee4f9d7bcbb1572f0e815a 7f8a694078bc0cde1ce420544d0cf5b83bb297dd29ee4f9d7bcbb1572f0e815a diff --git a/rust/extractor/src/generated/top.rs b/rust/extractor/src/generated/top.rs index 7b64e755030c..6cece591734d 100644 --- a/rust/extractor/src/generated/top.rs +++ b/rust/extractor/src/generated/top.rs @@ -154,7 +154,6 @@ pub struct Crate { pub id: trap::TrapId, pub name: Option, pub version: Option, - pub module: Option>, pub cfg_options: Vec, pub named_dependencies: Vec>, } @@ -172,9 +171,6 @@ impl trap::TrapEntry for Crate { if let Some(v) = self.version { out.add_tuple("crate_versions", vec![id.into(), v.into()]); } - if let Some(v) = self.module { - out.add_tuple("crate_modules", vec![id.into(), v.into()]); - } for (i, v) in self.cfg_options.into_iter().enumerate() { out.add_tuple("crate_cfg_options", vec![id.into(), i.into(), v.into()]); } diff --git a/rust/extractor/src/main.rs b/rust/extractor/src/main.rs index 91f224d657ba..99f470aa13e4 100644 --- a/rust/extractor/src/main.rs +++ b/rust/extractor/src/main.rs @@ -1,9 +1,10 @@ use crate::diagnostics::{ExtractionStep, emit_extraction_diagnostics}; use crate::rust_analyzer::path_to_file_id; -use crate::translate::ResolvePaths; +use crate::translate::{ResolvePaths, SourceKind}; use crate::trap::TrapId; use anyhow::Context; use archive::Archiver; +use ra_ap_base_db::SourceDatabase; use ra_ap_hir::Semantics; use ra_ap_ide_db::RootDatabase; use ra_ap_ide_db::line_index::{LineCol, LineIndex}; @@ -12,6 +13,8 @@ use ra_ap_paths::{AbsPathBuf, Utf8PathBuf}; use ra_ap_project_model::{CargoConfig, ProjectManifest}; use ra_ap_vfs::Vfs; use rust_analyzer::{ParseResult, RustAnalyzer}; +use std::collections::HashSet; +use std::hash::RandomState; use std::time::Instant; use std::{ collections::HashMap, @@ -47,9 +50,14 @@ impl<'a> Extractor<'a> { } } - fn extract(&mut self, rust_analyzer: &RustAnalyzer, file: &Path, resolve_paths: ResolvePaths) { + fn extract( + &mut self, + rust_analyzer: &RustAnalyzer, + file: &Path, + resolve_paths: ResolvePaths, + source_kind: SourceKind, + ) { self.archiver.archive(file); - let before_parse = Instant::now(); let ParseResult { ast, @@ -57,7 +65,8 @@ impl<'a> Extractor<'a> { errors, semantics_info, } = rust_analyzer.parse(file); - self.steps.push(ExtractionStep::parse(before_parse, file)); + self.steps + .push(ExtractionStep::parse(before_parse, source_kind, file)); let before_extract = Instant::now(); let line_index = LineIndex::new(text.as_ref()); @@ -71,6 +80,7 @@ impl<'a> Extractor<'a> { line_index, semantics_info.as_ref().ok(), resolve_paths, + source_kind, ); for err in errors { @@ -101,7 +111,7 @@ impl<'a> Extractor<'a> { ) }); self.steps - .push(ExtractionStep::extract(before_extract, file)); + .push(ExtractionStep::extract(before_extract, source_kind, file)); } pub fn extract_with_semantics( @@ -110,15 +120,27 @@ impl<'a> Extractor<'a> { semantics: &Semantics<'_, RootDatabase>, vfs: &Vfs, resolve_paths: ResolvePaths, + source_kind: SourceKind, ) { - self.extract(&RustAnalyzer::new(vfs, semantics), file, resolve_paths); + self.extract( + &RustAnalyzer::new(vfs, semantics), + file, + resolve_paths, + source_kind, + ); } - pub fn extract_without_semantics(&mut self, file: &Path, reason: &str) { + pub fn extract_without_semantics( + &mut self, + file: &Path, + source_kind: SourceKind, + reason: &str, + ) { self.extract( &RustAnalyzer::WithoutSemantics { reason }, file, ResolvePaths::No, + source_kind, ); } @@ -246,7 +268,7 @@ fn main() -> anyhow::Result<()> { continue 'outer; } } - extractor.extract_without_semantics(file, "no manifest found"); + extractor.extract_without_semantics(file, SourceKind::Source, "no manifest found"); } let cwd = cwd()?; let (cargo_config, load_cargo_config) = cfg.to_cargo_config(&cwd); @@ -255,6 +277,8 @@ fn main() -> anyhow::Result<()> { } else { ResolvePaths::Yes }; + let mut processed_files: HashSet = + HashSet::from_iter(files.iter().cloned()); for (manifest, files) in map.values().filter(|(_, files)| !files.is_empty()) { if let Some((ref db, ref vfs)) = extractor.load_manifest(manifest, &cargo_config, &load_cargo_config) @@ -267,15 +291,45 @@ fn main() -> anyhow::Result<()> { let semantics = Semantics::new(db); for file in files { match extractor.load_source(file, &semantics, vfs) { - Ok(()) => { - extractor.extract_with_semantics(file, &semantics, vfs, resolve_paths) + Ok(()) => extractor.extract_with_semantics( + file, + &semantics, + vfs, + resolve_paths, + SourceKind::Source, + ), + Err(reason) => { + extractor.extract_without_semantics(file, SourceKind::Source, &reason) } - Err(reason) => extractor.extract_without_semantics(file, &reason), }; } + for (file_id, file) in vfs.iter() { + if let Some(file) = file.as_path().map(<_ as AsRef>::as_ref) { + if file.extension().is_some_and(|ext| ext == "rs") + && processed_files.insert(file.to_owned()) + && db + .source_root(db.file_source_root(file_id).source_root_id(db)) + .source_root(db) + .is_library + { + extractor.extract_with_semantics( + file, + &semantics, + vfs, + ResolvePaths::No, + SourceKind::Library, + ); + extractor.archiver.archive(file); + } + } + } } else { for file in files { - extractor.extract_without_semantics(file, "unable to load manifest"); + extractor.extract_without_semantics( + file, + SourceKind::Source, + "unable to load manifest", + ); } } } @@ -286,7 +340,7 @@ fn main() -> anyhow::Result<()> { let entry = entry.context("failed to read builtins directory")?; let path = entry.path(); if path.extension().is_some_and(|ext| ext == "rs") { - extractor.extract_without_semantics(&path, ""); + extractor.extract_without_semantics(&path, SourceKind::Library, ""); } } diff --git a/rust/extractor/src/translate.rs b/rust/extractor/src/translate.rs index c74652628f8c..22bb3f4909f9 100644 --- a/rust/extractor/src/translate.rs +++ b/rust/extractor/src/translate.rs @@ -2,4 +2,4 @@ mod base; mod generated; mod mappings; -pub use base::{ResolvePaths, Translator}; +pub use base::{ResolvePaths, SourceKind, Translator}; diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs index d0e99e8a5b45..ece10f2f0f29 100644 --- a/rust/extractor/src/translate/base.rs +++ b/rust/extractor/src/translate/base.rs @@ -16,7 +16,7 @@ use ra_ap_ide_db::RootDatabase; use ra_ap_ide_db::line_index::{LineCol, LineIndex}; use ra_ap_parser::SyntaxKind; use ra_ap_span::TextSize; -use ra_ap_syntax::ast::HasName; +use ra_ap_syntax::ast::{Const, Fn, HasName, Param, Static}; use ra_ap_syntax::{ AstNode, NodeOrToken, SyntaxElementChildren, SyntaxError, SyntaxNode, SyntaxToken, TextRange, ast, @@ -93,6 +93,11 @@ pub enum ResolvePaths { Yes, No, } +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum SourceKind { + Source, + Library, +} pub struct Translator<'a> { pub trap: TrapFile, @@ -102,6 +107,7 @@ pub struct Translator<'a> { file_id: Option, pub semantics: Option<&'a Semantics<'a, RootDatabase>>, resolve_paths: ResolvePaths, + source_kind: SourceKind, } const UNKNOWN_LOCATION: (LineCol, LineCol) = @@ -115,6 +121,7 @@ impl<'a> Translator<'a> { line_index: LineIndex, semantic_info: Option<&FileSemanticInformation<'a>>, resolve_paths: ResolvePaths, + source_kind: SourceKind, ) -> Translator<'a> { Translator { trap, @@ -124,6 +131,7 @@ impl<'a> Translator<'a> { file_id: semantic_info.map(|i| i.file_id), semantics: semantic_info.map(|i| i.semantics), resolve_paths, + source_kind, } } fn location(&self, range: TextRange) -> Option<(LineCol, LineCol)> { @@ -202,6 +210,14 @@ impl<'a> Translator<'a> { full_message: String, location: (LineCol, LineCol), ) { + let severity = if self.source_kind == SourceKind::Library { + match severity { + DiagnosticSeverity::Error => DiagnosticSeverity::Info, + _ => DiagnosticSeverity::Debug, + } + } else { + severity + }; let (start, end) = location; dispatch_to_tracing!( severity, @@ -611,7 +627,7 @@ impl<'a> Translator<'a> { })(); } - pub(crate) fn should_be_excluded(&self, item: &impl ast::HasAttrs) -> bool { + pub(crate) fn should_be_excluded_attrs(&self, item: &impl ast::HasAttrs) -> bool { self.semantics.is_some_and(|sema| { item.attrs().any(|attr| { attr.as_simple_call().is_some_and(|(name, tokens)| { @@ -621,6 +637,45 @@ impl<'a> Translator<'a> { }) } + pub(crate) fn should_be_excluded(&self, item: &impl ast::AstNode) -> bool { + if self.source_kind == SourceKind::Library { + let syntax = item.syntax(); + if syntax + .parent() + .and_then(Fn::cast) + .and_then(|x| x.body()) + .is_some_and(|body| body.syntax() == syntax) + { + return true; + } + if syntax + .parent() + .and_then(Const::cast) + .and_then(|x| x.body()) + .is_some_and(|body| body.syntax() == syntax) + { + return true; + } + if syntax + .parent() + .and_then(Static::cast) + .and_then(|x| x.body()) + .is_some_and(|body| body.syntax() == syntax) + { + return true; + } + if syntax + .parent() + .and_then(Param::cast) + .and_then(|x| x.pat()) + .is_some_and(|pat| pat.syntax() == syntax) + { + return true; + } + } + false + } + pub(crate) fn extract_types_from_path_segment( &mut self, item: &ast::PathSegment, @@ -654,6 +709,10 @@ impl<'a> Translator<'a> { } pub(crate) fn emit_item_expansion(&mut self, node: &ast::Item, label: Label) { + // TODO: remove this after fixing exponential expansion on libraries like funty-2.0.0 + if self.source_kind == SourceKind::Library { + return; + } (|| { let semantics = self.semantics?; let ExpandResult { diff --git a/rust/extractor/src/translate/generated.rs b/rust/extractor/src/translate/generated.rs index 5002f09c4d86..84159f970c9a 100644 --- a/rust/extractor/src/translate/generated.rs +++ b/rust/extractor/src/translate/generated.rs @@ -242,6 +242,9 @@ impl Translator<'_> { Some(label) } pub(crate) fn emit_abi(&mut self, node: &ast::Abi) -> Option> { + if self.should_be_excluded(node) { + return None; + } let abi_string = node.try_get_text(); let label = self.trap.emit(generated::Abi { id: TrapId::Star, @@ -256,6 +259,9 @@ impl Translator<'_> { &mut self, node: &ast::ArgList, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let args = node.args().filter_map(|x| self.emit_expr(&x)).collect(); let label = self.trap.emit(generated::ArgList { id: TrapId::Star, @@ -273,6 +279,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let exprs = node.exprs().filter_map(|x| self.emit_expr(&x)).collect(); let is_semicolon = node.semicolon_token().is_some(); @@ -291,6 +300,9 @@ impl Translator<'_> { &mut self, node: &ast::ArrayType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let const_arg = node.const_arg().and_then(|x| self.emit_const_arg(&x)); let element_type_repr = node.ty().and_then(|x| self.emit_type(&x)); let label = self.trap.emit(generated::ArrayTypeRepr { @@ -307,6 +319,9 @@ impl Translator<'_> { &mut self, node: &ast::AsmClobberAbi, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let label = self .trap .emit(generated::AsmClobberAbi { id: TrapId::Star }); @@ -319,6 +334,9 @@ impl Translator<'_> { &mut self, node: &ast::AsmConst, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let expr = node.expr().and_then(|x| self.emit_expr(&x)); let is_const = node.const_token().is_some(); let label = self.trap.emit(generated::AsmConst { @@ -335,6 +353,9 @@ impl Translator<'_> { &mut self, node: &ast::AsmDirSpec, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let label = self.trap.emit(generated::AsmDirSpec { id: TrapId::Star }); self.emit_location(label, node); emit_detached!(AsmDirSpec, self, node, label); @@ -348,6 +369,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let asm_pieces = node .asm_pieces() .filter_map(|x| self.emit_asm_piece(&x)) @@ -369,6 +393,9 @@ impl Translator<'_> { &mut self, node: &ast::AsmLabel, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let block_expr = node.block_expr().and_then(|x| self.emit_block_expr(&x)); let label = self.trap.emit(generated::AsmLabel { id: TrapId::Star, @@ -383,6 +410,9 @@ impl Translator<'_> { &mut self, node: &ast::AsmOperandExpr, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let in_expr = node.in_expr().and_then(|x| self.emit_expr(&x)); let out_expr = node.out_expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::AsmOperandExpr { @@ -399,6 +429,9 @@ impl Translator<'_> { &mut self, node: &ast::AsmOperandNamed, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let asm_operand = node.asm_operand().and_then(|x| self.emit_asm_operand(&x)); let name = node.name().and_then(|x| self.emit_name(&x)); let label = self.trap.emit(generated::AsmOperandNamed { @@ -415,6 +448,9 @@ impl Translator<'_> { &mut self, node: &ast::AsmOption, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let is_raw = node.raw_token().is_some(); let label = self.trap.emit(generated::AsmOption { id: TrapId::Star, @@ -429,6 +465,9 @@ impl Translator<'_> { &mut self, node: &ast::AsmOptions, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let asm_options = node .asm_options() .filter_map(|x| self.emit_asm_option(&x)) @@ -446,6 +485,9 @@ impl Translator<'_> { &mut self, node: &ast::AsmRegOperand, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let asm_dir_spec = node.asm_dir_spec().and_then(|x| self.emit_asm_dir_spec(&x)); let asm_operand_expr = node .asm_operand_expr() @@ -466,6 +508,9 @@ impl Translator<'_> { &mut self, node: &ast::AsmRegSpec, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x)); let label = self.trap.emit(generated::AsmRegSpec { id: TrapId::Star, @@ -477,6 +522,9 @@ impl Translator<'_> { Some(label) } pub(crate) fn emit_asm_sym(&mut self, node: &ast::AsmSym) -> Option> { + if self.should_be_excluded(node) { + return None; + } let path = node.path().and_then(|x| self.emit_path(&x)); let label = self.trap.emit(generated::AsmSym { id: TrapId::Star, @@ -494,6 +542,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let assoc_items = node .assoc_items() .filter_map(|x| self.emit_assoc_item(&x)) @@ -513,6 +564,9 @@ impl Translator<'_> { &mut self, node: &ast::AssocTypeArg, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let const_arg = node.const_arg().and_then(|x| self.emit_const_arg(&x)); let generic_arg_list = node .generic_arg_list() @@ -544,6 +598,9 @@ impl Translator<'_> { Some(label) } pub(crate) fn emit_attr(&mut self, node: &ast::Attr) -> Option> { + if self.should_be_excluded(node) { + return None; + } let meta = node.meta().and_then(|x| self.emit_meta(&x)); let label = self.trap.emit(generated::Attr { id: TrapId::Star, @@ -561,6 +618,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::AwaitExpr { @@ -580,6 +640,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::BecomeExpr { @@ -599,6 +662,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let lhs = node.lhs().and_then(|x| self.emit_expr(&x)); let operator_name = node.try_get_text(); @@ -622,6 +688,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let is_async = node.async_token().is_some(); let is_const = node.const_token().is_some(); @@ -649,6 +718,9 @@ impl Translator<'_> { Some(label) } pub(crate) fn emit_box_pat(&mut self, node: &ast::BoxPat) -> Option> { + if self.should_be_excluded(node) { + return None; + } let pat = node.pat().and_then(|x| self.emit_pat(&x)); let label = self.trap.emit(generated::BoxPat { id: TrapId::Star, @@ -666,6 +738,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); @@ -687,6 +762,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let arg_list = node.arg_list().and_then(|x| self.emit_arg_list(&x)); let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let function = node.expr().and_then(|x| self.emit_expr(&x)); @@ -708,6 +786,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let type_repr = node.ty().and_then(|x| self.emit_type(&x)); @@ -726,6 +807,9 @@ impl Translator<'_> { &mut self, node: &ast::ClosureBinder, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let generic_param_list = node .generic_param_list() .and_then(|x| self.emit_generic_param_list(&x)); @@ -745,6 +829,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let body = node.body().and_then(|x| self.emit_expr(&x)); let closure_binder = node @@ -779,6 +866,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let body = node.body().and_then(|x| self.emit_expr(&x)); let is_const = node.const_token().is_some(); @@ -805,6 +895,9 @@ impl Translator<'_> { &mut self, node: &ast::ConstArg, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::ConstArg { id: TrapId::Star, @@ -819,6 +912,9 @@ impl Translator<'_> { &mut self, node: &ast::ConstBlockPat, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let block_expr = node.block_expr().and_then(|x| self.emit_block_expr(&x)); let is_const = node.const_token().is_some(); let label = self.trap.emit(generated::ConstBlockPat { @@ -838,6 +934,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let default_val = node.default_val().and_then(|x| self.emit_const_arg(&x)); let is_const = node.const_token().is_some(); @@ -863,6 +962,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); let label = self.trap.emit(generated::ContinueExpr { @@ -879,6 +981,9 @@ impl Translator<'_> { &mut self, node: &ast::DynTraitType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let type_bound_list = node .type_bound_list() .and_then(|x| self.emit_type_bound_list(&x)); @@ -895,6 +1000,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let generic_param_list = node .generic_param_list() @@ -921,6 +1029,9 @@ impl Translator<'_> { &mut self, node: &ast::ExprStmt, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::ExprStmt { id: TrapId::Star, @@ -938,6 +1049,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let abi = node.abi().and_then(|x| self.emit_abi(&x)); let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let extern_item_list = node @@ -963,6 +1077,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x)); let rename = node.rename().and_then(|x| self.emit_rename(&x)); @@ -986,6 +1103,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let extern_items = node .extern_items() @@ -1008,6 +1128,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let container = node.expr().and_then(|x| self.emit_expr(&x)); let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x)); @@ -1026,6 +1149,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let abi = node.abi().and_then(|x| self.emit_abi(&x)); let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let body = node.body().and_then(|x| self.emit_block_expr(&x)); @@ -1068,6 +1194,9 @@ impl Translator<'_> { &mut self, node: &ast::FnPtrType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let abi = node.abi().and_then(|x| self.emit_abi(&x)); let is_async = node.async_token().is_some(); let is_const = node.const_token().is_some(); @@ -1095,6 +1224,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let iterable = node.iterable().and_then(|x| self.emit_expr(&x)); let label = node.label().and_then(|x| self.emit_label(&x)); @@ -1117,6 +1249,9 @@ impl Translator<'_> { &mut self, node: &ast::ForType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let generic_param_list = node .generic_param_list() .and_then(|x| self.emit_generic_param_list(&x)); @@ -1135,6 +1270,9 @@ impl Translator<'_> { &mut self, node: &ast::FormatArgsArg, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let expr = node.expr().and_then(|x| self.emit_expr(&x)); let name = node.name().and_then(|x| self.emit_name(&x)); let label = self.trap.emit(generated::FormatArgsArg { @@ -1154,6 +1292,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let args = node .args() .filter_map(|x| self.emit_format_args_arg(&x)) @@ -1175,6 +1316,9 @@ impl Translator<'_> { &mut self, node: &ast::GenericArgList, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let generic_args = node .generic_args() .filter_map(|x| self.emit_generic_arg(&x)) @@ -1192,6 +1336,9 @@ impl Translator<'_> { &mut self, node: &ast::GenericParamList, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let generic_params = node .generic_params() .filter_map(|x| self.emit_generic_param(&x)) @@ -1212,6 +1359,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let is_mut = node.mut_token().is_some(); let is_ref = node.ref_token().is_some(); @@ -1234,6 +1384,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let condition = node.condition().and_then(|x| self.emit_expr(&x)); let else_ = node.else_branch().and_then(|x| self.emit_else_branch(&x)); @@ -1254,6 +1407,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let assoc_item_list = node .assoc_item_list() .and_then(|x| self.emit_assoc_item_list(&x)); @@ -1290,6 +1446,9 @@ impl Translator<'_> { &mut self, node: &ast::ImplTraitType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let type_bound_list = node .type_bound_list() .and_then(|x| self.emit_type_bound_list(&x)); @@ -1309,6 +1468,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let base = node.base().and_then(|x| self.emit_expr(&x)); let index = node.index().and_then(|x| self.emit_expr(&x)); @@ -1327,6 +1489,9 @@ impl Translator<'_> { &mut self, node: &ast::InferType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let label = self .trap .emit(generated::InferTypeRepr { id: TrapId::Star }); @@ -1342,6 +1507,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let items = node.items().filter_map(|x| self.emit_item(&x)).collect(); let label = self.trap.emit(generated::ItemList { @@ -1355,6 +1523,9 @@ impl Translator<'_> { Some(label) } pub(crate) fn emit_label(&mut self, node: &ast::Label) -> Option> { + if self.should_be_excluded(node) { + return None; + } let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); let label = self.trap.emit(generated::Label { id: TrapId::Star, @@ -1369,6 +1540,9 @@ impl Translator<'_> { &mut self, node: &ast::LetElse, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let block_expr = node.block_expr().and_then(|x| self.emit_block_expr(&x)); let label = self.trap.emit(generated::LetElse { id: TrapId::Star, @@ -1386,6 +1560,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let scrutinee = node.expr().and_then(|x| self.emit_expr(&x)); let pat = node.pat().and_then(|x| self.emit_pat(&x)); @@ -1407,6 +1584,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let initializer = node.initializer().and_then(|x| self.emit_expr(&x)); let let_else = node.let_else().and_then(|x| self.emit_let_else(&x)); @@ -1429,6 +1609,9 @@ impl Translator<'_> { &mut self, node: &ast::Lifetime, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let text = node.try_get_text(); let label = self.trap.emit(generated::Lifetime { id: TrapId::Star, @@ -1443,6 +1626,9 @@ impl Translator<'_> { &mut self, node: &ast::LifetimeArg, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); let label = self.trap.emit(generated::LifetimeArg { id: TrapId::Star, @@ -1460,6 +1646,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); let type_bound_list = node @@ -1483,6 +1672,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let text_value = node.try_get_text(); let label = self.trap.emit(generated::LiteralExpr { @@ -1499,6 +1691,9 @@ impl Translator<'_> { &mut self, node: &ast::LiteralPat, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let literal = node.literal().and_then(|x| self.emit_literal(&x)); let label = self.trap.emit(generated::LiteralPat { id: TrapId::Star, @@ -1516,6 +1711,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let label = node.label().and_then(|x| self.emit_label(&x)); let loop_body = node.loop_body().and_then(|x| self.emit_block_expr(&x)); @@ -1537,6 +1735,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let path = node.path().and_then(|x| self.emit_path(&x)); let token_tree = node.token_tree().and_then(|x| self.emit_token_tree(&x)); @@ -1558,6 +1759,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let args = node.args().and_then(|x| self.emit_token_tree(&x)); let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let body = node.body().and_then(|x| self.emit_token_tree(&x)); @@ -1580,6 +1784,9 @@ impl Translator<'_> { &mut self, node: &ast::MacroExpr, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let macro_call = node.macro_call().and_then(|x| self.emit_macro_call(&x)); let label = self.trap.emit(generated::MacroExpr { id: TrapId::Star, @@ -1594,6 +1801,9 @@ impl Translator<'_> { &mut self, node: &ast::MacroItems, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let items = node.items().filter_map(|x| self.emit_item(&x)).collect(); let label = self.trap.emit(generated::MacroItems { id: TrapId::Star, @@ -1608,6 +1818,9 @@ impl Translator<'_> { &mut self, node: &ast::MacroPat, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let macro_call = node.macro_call().and_then(|x| self.emit_macro_call(&x)); let label = self.trap.emit(generated::MacroPat { id: TrapId::Star, @@ -1625,6 +1838,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let name = node.name().and_then(|x| self.emit_name(&x)); let token_tree = node.token_tree().and_then(|x| self.emit_token_tree(&x)); @@ -1645,6 +1861,9 @@ impl Translator<'_> { &mut self, node: &ast::MacroStmts, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let tail_expr = node.expr().and_then(|x| self.emit_expr(&x)); let statements = node .statements() @@ -1664,6 +1883,9 @@ impl Translator<'_> { &mut self, node: &ast::MacroType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let macro_call = node.macro_call().and_then(|x| self.emit_macro_call(&x)); let label = self.trap.emit(generated::MacroTypeRepr { id: TrapId::Star, @@ -1681,6 +1903,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let guard = node.guard().and_then(|x| self.emit_match_guard(&x)); @@ -1704,6 +1929,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let arms = node .arms() .filter_map(|x| self.emit_match_arm(&x)) @@ -1726,6 +1954,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let scrutinee = node.expr().and_then(|x| self.emit_expr(&x)); let match_arm_list = node @@ -1746,6 +1977,9 @@ impl Translator<'_> { &mut self, node: &ast::MatchGuard, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let condition = node.condition().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::MatchGuard { id: TrapId::Star, @@ -1757,6 +1991,9 @@ impl Translator<'_> { Some(label) } pub(crate) fn emit_meta(&mut self, node: &ast::Meta) -> Option> { + if self.should_be_excluded(node) { + return None; + } let expr = node.expr().and_then(|x| self.emit_expr(&x)); let is_unsafe = node.unsafe_token().is_some(); let path = node.path().and_then(|x| self.emit_path(&x)); @@ -1780,6 +2017,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let arg_list = node.arg_list().and_then(|x| self.emit_arg_list(&x)); let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let generic_arg_list = node @@ -1804,6 +2044,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let item_list = node.item_list().and_then(|x| self.emit_item_list(&x)); let name = node.name().and_then(|x| self.emit_name(&x)); @@ -1821,6 +2064,9 @@ impl Translator<'_> { Some(label) } pub(crate) fn emit_name(&mut self, node: &ast::Name) -> Option> { + if self.should_be_excluded(node) { + return None; + } let text = node.try_get_text(); let label = self.trap.emit(generated::Name { id: TrapId::Star, @@ -1835,6 +2081,9 @@ impl Translator<'_> { &mut self, node: &ast::NameRef, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let text = node.try_get_text(); let label = self.trap.emit(generated::NameRef { id: TrapId::Star, @@ -1849,6 +2098,9 @@ impl Translator<'_> { &mut self, node: &ast::NeverType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let label = self .trap .emit(generated::NeverTypeRepr { id: TrapId::Star }); @@ -1864,6 +2116,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let fields = node .fields() @@ -1882,6 +2137,9 @@ impl Translator<'_> { Some(label) } pub(crate) fn emit_or_pat(&mut self, node: &ast::OrPat) -> Option> { + if self.should_be_excluded(node) { + return None; + } let pats = node.pats().filter_map(|x| self.emit_pat(&x)).collect(); let label = self.trap.emit(generated::OrPat { id: TrapId::Star, @@ -1896,6 +2154,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let pat = node.pat().and_then(|x| self.emit_pat(&x)); let type_repr = node.ty().and_then(|x| self.emit_type(&x)); @@ -1914,6 +2175,9 @@ impl Translator<'_> { &mut self, node: &ast::ParamList, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let params = node.params().filter_map(|x| self.emit_param(&x)).collect(); let self_param = node.self_param().and_then(|x| self.emit_self_param(&x)); let label = self.trap.emit(generated::ParamList { @@ -1933,6 +2197,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::ParenExpr { @@ -1949,6 +2216,9 @@ impl Translator<'_> { &mut self, node: &ast::ParenPat, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let pat = node.pat().and_then(|x| self.emit_pat(&x)); let label = self.trap.emit(generated::ParenPat { id: TrapId::Star, @@ -1963,6 +2233,9 @@ impl Translator<'_> { &mut self, node: &ast::ParenType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let type_repr = node.ty().and_then(|x| self.emit_type(&x)); let label = self.trap.emit(generated::ParenTypeRepr { id: TrapId::Star, @@ -1977,6 +2250,9 @@ impl Translator<'_> { &mut self, node: &ast::ParenthesizedArgList, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let type_args = node .type_args() .filter_map(|x| self.emit_type_arg(&x)) @@ -1991,6 +2267,9 @@ impl Translator<'_> { Some(label) } pub(crate) fn emit_path(&mut self, node: &ast::Path) -> Option> { + if self.should_be_excluded(node) { + return None; + } let qualifier = node.qualifier().and_then(|x| self.emit_path(&x)); let segment = node.segment().and_then(|x| self.emit_path_segment(&x)); let label = self.trap.emit(generated::Path { @@ -2010,6 +2289,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let path = node.path().and_then(|x| self.emit_path(&x)); let label = self.trap.emit(generated::PathExpr { @@ -2026,6 +2308,9 @@ impl Translator<'_> { &mut self, node: &ast::PathPat, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let path = node.path().and_then(|x| self.emit_path(&x)); let label = self.trap.emit(generated::PathPat { id: TrapId::Star, @@ -2040,6 +2325,9 @@ impl Translator<'_> { &mut self, node: &ast::PathSegment, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let generic_arg_list = node .generic_arg_list() .and_then(|x| self.emit_generic_arg_list(&x)); @@ -2068,6 +2356,9 @@ impl Translator<'_> { &mut self, node: &ast::PathType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let path = node.path().and_then(|x| self.emit_path(&x)); let label = self.trap.emit(generated::PathTypeRepr { id: TrapId::Star, @@ -2085,6 +2376,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let operator_name = node.try_get_text(); @@ -2103,6 +2397,9 @@ impl Translator<'_> { &mut self, node: &ast::PtrType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let is_const = node.const_token().is_some(); let is_mut = node.mut_token().is_some(); let type_repr = node.ty().and_then(|x| self.emit_type(&x)); @@ -2124,6 +2421,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let end = node.end().and_then(|x| self.emit_expr(&x)); let operator_name = node.try_get_text(); @@ -2144,6 +2444,9 @@ impl Translator<'_> { &mut self, node: &ast::RangePat, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let end = node.end().and_then(|x| self.emit_pat(&x)); let operator_name = node.try_get_text(); let start = node.start().and_then(|x| self.emit_pat(&x)); @@ -2162,6 +2465,9 @@ impl Translator<'_> { &mut self, node: &ast::RecordExpr, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let path = node.path().and_then(|x| self.emit_path(&x)); let struct_expr_field_list = node .record_expr_field_list() @@ -2183,6 +2489,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x)); @@ -2204,6 +2513,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let fields = node .fields() @@ -2228,6 +2540,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let default = node.expr().and_then(|x| self.emit_expr(&x)); let is_unsafe = node.unsafe_token().is_some(); @@ -2252,6 +2567,9 @@ impl Translator<'_> { &mut self, node: &ast::RecordFieldList, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let fields = node .fields() .filter_map(|x| self.emit_record_field(&x)) @@ -2269,6 +2587,9 @@ impl Translator<'_> { &mut self, node: &ast::RecordPat, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let path = node.path().and_then(|x| self.emit_path(&x)); let struct_pat_field_list = node .record_pat_field_list() @@ -2290,6 +2611,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x)); let pat = node.pat().and_then(|x| self.emit_pat(&x)); @@ -2308,6 +2632,9 @@ impl Translator<'_> { &mut self, node: &ast::RecordPatFieldList, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let fields = node .fields() .filter_map(|x| self.emit_record_pat_field(&x)) @@ -2330,6 +2657,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let is_const = node.const_token().is_some(); @@ -2349,6 +2679,9 @@ impl Translator<'_> { Some(label) } pub(crate) fn emit_ref_pat(&mut self, node: &ast::RefPat) -> Option> { + if self.should_be_excluded(node) { + return None; + } let is_mut = node.mut_token().is_some(); let pat = node.pat().and_then(|x| self.emit_pat(&x)); let label = self.trap.emit(generated::RefPat { @@ -2365,6 +2698,9 @@ impl Translator<'_> { &mut self, node: &ast::RefType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let is_mut = node.mut_token().is_some(); let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); let type_repr = node.ty().and_then(|x| self.emit_type(&x)); @@ -2380,6 +2716,9 @@ impl Translator<'_> { Some(label) } pub(crate) fn emit_rename(&mut self, node: &ast::Rename) -> Option> { + if self.should_be_excluded(node) { + return None; + } let name = node.name().and_then(|x| self.emit_name(&x)); let label = self.trap.emit(generated::Rename { id: TrapId::Star, @@ -2397,6 +2736,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let label = self.trap.emit(generated::RestPat { id: TrapId::Star, @@ -2411,6 +2753,9 @@ impl Translator<'_> { &mut self, node: &ast::RetType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let type_repr = node.ty().and_then(|x| self.emit_type(&x)); let label = self.trap.emit(generated::RetTypeRepr { id: TrapId::Star, @@ -2428,6 +2773,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::ReturnExpr { @@ -2444,6 +2792,9 @@ impl Translator<'_> { &mut self, node: &ast::ReturnTypeSyntax, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let label = self .trap .emit(generated::ReturnTypeSyntax { id: TrapId::Star }); @@ -2459,6 +2810,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let is_ref = node.amp_token().is_some(); let is_mut = node.mut_token().is_some(); @@ -2483,6 +2837,9 @@ impl Translator<'_> { &mut self, node: &ast::SlicePat, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let pats = node.pats().filter_map(|x| self.emit_pat(&x)).collect(); let label = self.trap.emit(generated::SlicePat { id: TrapId::Star, @@ -2497,6 +2854,9 @@ impl Translator<'_> { &mut self, node: &ast::SliceType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let type_repr = node.ty().and_then(|x| self.emit_type(&x)); let label = self.trap.emit(generated::SliceTypeRepr { id: TrapId::Star, @@ -2514,6 +2874,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let items = node.items().filter_map(|x| self.emit_item(&x)).collect(); let label = self.trap.emit(generated::SourceFile { @@ -2530,6 +2893,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let body = node.body().and_then(|x| self.emit_expr(&x)); let is_mut = node.mut_token().is_some(); @@ -2561,6 +2927,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let statements = node .statements() @@ -2582,6 +2951,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let field_list = node.field_list().and_then(|x| self.emit_field_list(&x)); let generic_param_list = node @@ -2608,6 +2980,9 @@ impl Translator<'_> { &mut self, node: &ast::TokenTree, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let label = self.trap.emit(generated::TokenTree { id: TrapId::Star }); self.emit_location(label, node); emit_detached!(TokenTree, self, node, label); @@ -2618,6 +2993,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let assoc_item_list = node .assoc_item_list() .and_then(|x| self.emit_assoc_item_list(&x)); @@ -2657,6 +3035,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let generic_param_list = node .generic_param_list() @@ -2688,6 +3069,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::TryExpr { @@ -2707,6 +3091,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let fields = node.fields().filter_map(|x| self.emit_expr(&x)).collect(); let label = self.trap.emit(generated::TupleExpr { @@ -2726,6 +3113,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let type_repr = node.ty().and_then(|x| self.emit_type(&x)); let visibility = node.visibility().and_then(|x| self.emit_visibility(&x)); @@ -2744,6 +3134,9 @@ impl Translator<'_> { &mut self, node: &ast::TupleFieldList, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let fields = node .fields() .filter_map(|x| self.emit_tuple_field(&x)) @@ -2761,6 +3154,9 @@ impl Translator<'_> { &mut self, node: &ast::TuplePat, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let fields = node.fields().filter_map(|x| self.emit_pat(&x)).collect(); let label = self.trap.emit(generated::TuplePat { id: TrapId::Star, @@ -2775,6 +3171,9 @@ impl Translator<'_> { &mut self, node: &ast::TupleStructPat, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let fields = node.fields().filter_map(|x| self.emit_pat(&x)).collect(); let path = node.path().and_then(|x| self.emit_path(&x)); let label = self.trap.emit(generated::TupleStructPat { @@ -2791,6 +3190,9 @@ impl Translator<'_> { &mut self, node: &ast::TupleType, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let fields = node.fields().filter_map(|x| self.emit_type(&x)).collect(); let label = self.trap.emit(generated::TupleTypeRepr { id: TrapId::Star, @@ -2808,6 +3210,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let generic_param_list = node .generic_param_list() @@ -2840,6 +3245,9 @@ impl Translator<'_> { &mut self, node: &ast::TypeArg, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let type_repr = node.ty().and_then(|x| self.emit_type(&x)); let label = self.trap.emit(generated::TypeArg { id: TrapId::Star, @@ -2854,6 +3262,9 @@ impl Translator<'_> { &mut self, node: &ast::TypeBound, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let is_async = node.async_token().is_some(); let is_const = node.const_token().is_some(); let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x)); @@ -2878,6 +3289,9 @@ impl Translator<'_> { &mut self, node: &ast::TypeBoundList, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let bounds = node .bounds() .filter_map(|x| self.emit_type_bound(&x)) @@ -2898,6 +3312,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let default_type = node.default_type().and_then(|x| self.emit_type(&x)); let name = node.name().and_then(|x| self.emit_name(&x)); @@ -2923,6 +3340,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let label = self.trap.emit(generated::UnderscoreExpr { id: TrapId::Star, @@ -2937,6 +3357,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let generic_param_list = node .generic_param_list() @@ -2965,6 +3388,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let use_tree = node.use_tree().and_then(|x| self.emit_use_tree(&x)); let visibility = node.visibility().and_then(|x| self.emit_visibility(&x)); @@ -2983,6 +3409,9 @@ impl Translator<'_> { &mut self, node: &ast::UseBoundGenericArgs, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let use_bound_generic_args = node .use_bound_generic_args() .filter_map(|x| self.emit_use_bound_generic_arg(&x)) @@ -3000,6 +3429,9 @@ impl Translator<'_> { &mut self, node: &ast::UseTree, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let is_glob = node.star_token().is_some(); let path = node.path().and_then(|x| self.emit_path(&x)); let rename = node.rename().and_then(|x| self.emit_rename(&x)); @@ -3022,6 +3454,9 @@ impl Translator<'_> { &mut self, node: &ast::UseTreeList, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let use_trees = node .use_trees() .filter_map(|x| self.emit_use_tree(&x)) @@ -3042,6 +3477,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let discriminant = node.expr().and_then(|x| self.emit_expr(&x)); let field_list = node.field_list().and_then(|x| self.emit_field_list(&x)); @@ -3064,6 +3502,9 @@ impl Translator<'_> { &mut self, node: &ast::VariantList, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let variants = node .variants() .filter_map(|x| self.emit_variant(&x)) @@ -3081,6 +3522,9 @@ impl Translator<'_> { &mut self, node: &ast::Visibility, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let path = node.path().and_then(|x| self.emit_path(&x)); let label = self.trap.emit(generated::Visibility { id: TrapId::Star, @@ -3095,6 +3539,9 @@ impl Translator<'_> { &mut self, node: &ast::WhereClause, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let predicates = node .predicates() .filter_map(|x| self.emit_where_pred(&x)) @@ -3112,6 +3559,9 @@ impl Translator<'_> { &mut self, node: &ast::WherePred, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let generic_param_list = node .generic_param_list() .and_then(|x| self.emit_generic_param_list(&x)); @@ -3139,6 +3589,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let condition = node.condition().and_then(|x| self.emit_expr(&x)); let label = node.label().and_then(|x| self.emit_label(&x)); @@ -3159,6 +3612,9 @@ impl Translator<'_> { &mut self, node: &ast::WildcardPat, ) -> Option> { + if self.should_be_excluded(node) { + return None; + } let label = self.trap.emit(generated::WildcardPat { id: TrapId::Star }); self.emit_location(label, node); emit_detached!(WildcardPat, self, node, label); @@ -3172,6 +3628,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::YeetExpr { @@ -3191,6 +3650,9 @@ impl Translator<'_> { if self.should_be_excluded(node) { return None; } + if self.should_be_excluded_attrs(node) { + return None; + } let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect(); let expr = node.expr().and_then(|x| self.emit_expr(&x)); let label = self.trap.emit(generated::YieldExpr { diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index 051cf9f89373..e14f2fd1e469 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -43,7 +43,7 @@ lib/codeql/rust/elements/ConstArg.qll f37b34417503bbd2f3ce09b3211d8fa71f6a954970 lib/codeql/rust/elements/ConstBlockPat.qll a25f42b84dbeb33e10955735ef53b8bb7e3258522d6d1a9068f19adaf1af89d9 eeb816d2b54db77a1e7bb70e90b68d040a0cd44e9d44455a223311c3615c5e6e lib/codeql/rust/elements/ConstParam.qll 248db1e3abef6943326c42478a15f148f8cdaa25649ef5578064b15924c53351 28babba3aea28a65c3fe3b3db6cb9c86f70d7391e9d6ef9188eb2e4513072f9f lib/codeql/rust/elements/ContinueExpr.qll 9f27c5d5c819ad0ebc5bd10967ba8d33a9dc95b9aae278fcfb1fcf9216bda79c 0dc061445a6b89854fdce92aaf022fdc76b724511a50bb777496ce75c9ecb262 -lib/codeql/rust/elements/Crate.qll 37e8d0daa7bef38cee51008499ee3fd6c19800c48f23983a82b7b36bae250813 95eb88b896fe01d57627c1766daf0fe859f086aed6ca1184e1e16b10c9cdaf37 +lib/codeql/rust/elements/Crate.qll 1426960e6f36195e42ea5ea321405c1a72fccd40cd6c0a33673c321c20302d8d 1571a89f89dab43c5291b71386de7aadf52730755ba10f9d696db9ad2f760aff lib/codeql/rust/elements/DynTraitTypeRepr.qll 5953263ec1e77613170c13b5259b22a71c206a7e08841d2fa1a0b373b4014483 d4380c6cc460687dcd8598df27cad954ef4f508f1117a82460d15d295a7b64ab lib/codeql/rust/elements/Element.qll 0b62d139fef54ed2cf2e2334806aa9bfbc036c9c2085d558f15a42cc3fa84c48 24b999b93df79383ef27ede46e38da752868c88a07fe35fcff5d526684ba7294 lib/codeql/rust/elements/Enum.qll 2f122b042519d55e221fceac72fce24b30d4caf1947b25e9b68ee4a2095deb11 83a47445145e4fda8c3631db602a42dbb7a431f259eddf5c09dccd86f6abdd0e @@ -503,7 +503,7 @@ lib/codeql/rust/elements/internal/generated/ConstArg.qll e2451cac6ee464f5b64883d lib/codeql/rust/elements/internal/generated/ConstBlockPat.qll 7526d83ee9565d74776f42db58b1a2efff6fb324cfc7137f51f2206fee815d79 0ab3c22908ff790e7092e576a5df3837db33c32a7922a513a0f5e495729c1ac5 lib/codeql/rust/elements/internal/generated/ConstParam.qll 310342603959a4d521418caec45b585b97e3a5bf79368769c7150f52596a7266 a5dd92f0b24d7dbdaea2daedba3c8d5f700ec7d3ace81ca368600da2ad610082 lib/codeql/rust/elements/internal/generated/ContinueExpr.qll e2010feb14fb6edeb83a991d9357e50edb770172ddfde2e8670b0d3e68169f28 48d09d661e1443002f6d22b8710e22c9c36d9daa9cde09c6366a61e960d717cb -lib/codeql/rust/elements/internal/generated/Crate.qll d245f24e9da4f180c526a6d092f554a9577bae7225c81c36a391947c0865eeb3 c95dbb32b2ce4d9664be56c95b19fcd01c2d3244385e55151f9b06b07f04ce9b +lib/codeql/rust/elements/internal/generated/Crate.qll 37f3760d7c0c1c3ca809d07daf7215a8eae6053eda05e88ed7db6e07f4db0781 649a3d7cd7ee99f95f8a4d3d3c41ea2fa848ce7d8415ccbac62977dfc9a49d35 lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll a9d540717af1f00dbea1c683fd6b846cddfb2968c7f3e021863276f123337787 1972efb9bca7aae9a9708ca6dcf398e5e8c6d2416a07d525dba1649b80fbe4d1 lib/codeql/rust/elements/internal/generated/Element.qll d56d22c060fa929464f837b1e16475a4a2a2e42d68235a014f7369bcb48431db 0e48426ca72179f675ac29aa49bbaadb8b1d27b08ad5cbc72ec5a005c291848e lib/codeql/rust/elements/internal/generated/Enum.qll 4f4cbc9cd758c20d476bc767b916c62ba434d1750067d0ffb63e0821bb95ec86 3da735d54022add50cec0217bbf8ec4cf29b47f4851ee327628bcdd6454989d0 @@ -578,7 +578,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll c808c9d84dd7800573832b lib/codeql/rust/elements/internal/generated/ParenExpr.qll bc0731505bfe88516205ec360582a4222d2681d11342c93e15258590ddee82f2 d4bd6e0c80cf1d63746c88d4bcb3a01d4c75732e5da09e3ebd9437ced227fb60 lib/codeql/rust/elements/internal/generated/ParenPat.qll 4f168ef5d5bb87a903251cc31b2e44a759b099ec69c90af31783fbb15778c940 0e34f94a45a13396fd57d94c245dc64d1adde2ab0e22b56946f7e94c04e297fc lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 40ab5c592e7699c621787793743e33988de71ff42ca27599f5ab3ddb70e3f7d8 12c0a6eed2202ee3e892f61da3b3ce77ac3190854cdf3097e8d2be98aa3cb91d -lib/codeql/rust/elements/internal/generated/ParentChild.qll 2f620064351fc0275ee1c13d1d0681ac927a2af81c13fbb3fae9ef86dd08e585 61cf70eb649f241e2fcd5e0ba34df63f3a14f07032811b9ae151721783a0fd20 +lib/codeql/rust/elements/internal/generated/ParentChild.qll e2c6aaaa1735113f160c0e178d682bff8e9ebc627632f73c0dd2d1f4f9d692a8 61cf70eb649f241e2fcd5e0ba34df63f3a14f07032811b9ae151721783a0fd20 lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll c5fa328ea60d3a3333d7c7bb3480969c1873166c7ac8ebb9d0afad7a8099d1a8 2dbbb6200d96f7db7dea4a55bdeab8d67b14d39a43e0bd54ada019f7e466f163 lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4 lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd @@ -593,7 +593,7 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 51d1e9e683fc79dddbff lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9 lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9 -lib/codeql/rust/elements/internal/generated/Raw.qll 96e66877688eafb2f901d2790aa3a0d3176d795732fbcd349c3f950016651fdf 855be30b38dd0886938d51219f90e8ce8c4929e23c0f6697f344d5296fbb07cc +lib/codeql/rust/elements/internal/generated/Raw.qll de98fe8481864e23e1cd67d926ffd2e8bb8a83ed48901263122068f9c29ab372 3bd67fe283aaf24b94a2e3fd8f6e73ae34f61a097817900925d1cdcd3b745ecc lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66 lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05 lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 3d8c0bd296d33b91a81633f697a43269a6538df06d277262d3990d3f6880ef57 13680f39e89bcd8299c218aba396f3deec804597e6f7cb7d4a7e7c748b6faa77 diff --git a/rust/ql/consistency-queries/ExtractionConsistency.ql b/rust/ql/consistency-queries/ExtractionConsistency.ql index 8b1f0adca949..c6e9bcdc2cb7 100644 --- a/rust/ql/consistency-queries/ExtractionConsistency.ql +++ b/rust/ql/consistency-queries/ExtractionConsistency.ql @@ -7,6 +7,10 @@ import codeql.rust.Diagnostics -query predicate extractionError(ExtractionError ee) { any() } +query predicate extractionError(ExtractionError ee) { + not exists(ee.getLocation()) or ee.getLocation().fromSource() +} -query predicate extractionWarning(ExtractionWarning ew) { any() } +query predicate extractionWarning(ExtractionWarning ew) { + not exists(ew.getLocation()) or ew.getLocation().fromSource() +} diff --git a/rust/ql/consistency-queries/PathResolutionConsistency.ql b/rust/ql/consistency-queries/PathResolutionConsistency.ql index 368b2c1e559a..db93f4b2860a 100644 --- a/rust/ql/consistency-queries/PathResolutionConsistency.ql +++ b/rust/ql/consistency-queries/PathResolutionConsistency.ql @@ -5,4 +5,29 @@ * @id rust/diagnostics/path-resolution-consistency */ -import codeql.rust.internal.PathResolutionConsistency +private import rust +private import codeql.rust.internal.PathResolution +private import codeql.rust.internal.PathResolutionConsistency as PathResolutionConsistency +private import codeql.rust.elements.Locatable +private import codeql.Locations +import PathResolutionConsistency + +class SourceLocatable extends Locatable { + Location getLocation() { + if super.getLocation().fromSource() + then result = super.getLocation() + else result instanceof EmptyLocation + } +} + +query predicate multipleMethodCallTargets(SourceLocatable a, SourceLocatable b) { + PathResolutionConsistency::multipleMethodCallTargets(a, b) +} + +query predicate multiplePathResolutions(SourceLocatable a, SourceLocatable b) { + PathResolutionConsistency::multiplePathResolutions(a, b) +} + +query predicate multipleCanonicalPaths(SourceLocatable i, SourceLocatable c, string path) { + PathResolutionConsistency::multipleCanonicalPaths(i, c, path) +} diff --git a/rust/ql/integration-tests/hello-project/diagnostics.expected b/rust/ql/integration-tests/hello-project/diagnostics.expected index f45877f26d06..65c797abe29d 100644 --- a/rust/ql/integration-tests/hello-project/diagnostics.expected +++ b/rust/ql/integration-tests/hello-project/diagnostics.expected @@ -9,6 +9,10 @@ "ms": "__REDACTED__", "pretty": "__REDACTED__" }, + "extractLibrary": { + "ms": "__REDACTED__", + "pretty": "__REDACTED__" + }, "findManifests": { "ms": "__REDACTED__", "pretty": "__REDACTED__" @@ -25,12 +29,16 @@ "ms": "__REDACTED__", "pretty": "__REDACTED__" }, + "parseLibrary": { + "ms": "__REDACTED__", + "pretty": "__REDACTED__" + }, "total": { "ms": "__REDACTED__", "pretty": "__REDACTED__" } }, - "numberOfFiles": 6, + "numberOfFiles": 5, "numberOfManifests": 1 }, "severity": "note", diff --git a/rust/ql/integration-tests/hello-project/steps.cargo.expected b/rust/ql/integration-tests/hello-project/steps.cargo.expected index ca256c4f8569..4deec0653daf 100644 --- a/rust/ql/integration-tests/hello-project/steps.cargo.expected +++ b/rust/ql/integration-tests/hello-project/steps.cargo.expected @@ -1,6 +1,4 @@ | Cargo.toml:0:0:0:0 | LoadManifest(Cargo.toml) | -| file:///types.rs:0:0:0:0 | Extract(/types.rs) | -| file:///types.rs:0:0:0:0 | Parse(/types.rs) | | file://:0:0:0:0 | CrateGraph | | file://:0:0:0:0 | FindManifests | | src/directory_module/mod.rs:0:0:0:0 | Extract(src/directory_module/mod.rs) | diff --git a/rust/ql/integration-tests/hello-project/steps.ql b/rust/ql/integration-tests/hello-project/steps.ql index fe45fc4b6dc8..a87e434b14a7 100644 --- a/rust/ql/integration-tests/hello-project/steps.ql +++ b/rust/ql/integration-tests/hello-project/steps.ql @@ -1,27 +1,5 @@ import codeql.rust.elements.internal.ExtractorStep -private class Step instanceof ExtractorStep { - string toString() { - result = super.getAction() + "(" + this.getFilePath() + ")" - or - not super.hasFile() and result = super.getAction() - } - - private string getFilePath() { - exists(File file | file = super.getFile() | - exists(file.getRelativePath()) and result = file.getAbsolutePath() - or - not exists(file.getRelativePath()) and result = "/" + file.getBaseName() - ) - } - - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - super.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - filepath = this.getFilePath() - } -} - -from Step step +from ExtractorStep step +where not step.getAction() = ["ParseLibrary", "ExtractLibrary"] select step diff --git a/rust/ql/integration-tests/hello-project/steps.rust-project.expected b/rust/ql/integration-tests/hello-project/steps.rust-project.expected index 165a770e1cba..fa790e6cd7fd 100644 --- a/rust/ql/integration-tests/hello-project/steps.rust-project.expected +++ b/rust/ql/integration-tests/hello-project/steps.rust-project.expected @@ -1,5 +1,3 @@ -| file:///types.rs:0:0:0:0 | Extract(/types.rs) | -| file:///types.rs:0:0:0:0 | Parse(/types.rs) | | file://:0:0:0:0 | CrateGraph | | file://:0:0:0:0 | FindManifests | | rust-project.json:0:0:0:0 | LoadManifest(rust-project.json) | diff --git a/rust/ql/integration-tests/hello-project/summary.expected b/rust/ql/integration-tests/hello-project/summary.expected index 15ee83de7adc..1f343b197c0f 100644 --- a/rust/ql/integration-tests/hello-project/summary.expected +++ b/rust/ql/integration-tests/hello-project/summary.expected @@ -9,7 +9,7 @@ | Inconsistencies - Path resolution | 0 | | Inconsistencies - SSA | 0 | | Inconsistencies - data flow | 0 | -| Lines of code extracted | 23 | +| Lines of code extracted | 6 | | Lines of user code extracted | 6 | | Macro calls - resolved | 2 | | Macro calls - total | 2 | diff --git a/rust/ql/integration-tests/hello-workspace/diagnostics.cargo.expected b/rust/ql/integration-tests/hello-workspace/diagnostics.cargo.expected index 146d8514488e..511bd49f1a51 100644 --- a/rust/ql/integration-tests/hello-workspace/diagnostics.cargo.expected +++ b/rust/ql/integration-tests/hello-workspace/diagnostics.cargo.expected @@ -9,6 +9,10 @@ "ms": "__REDACTED__", "pretty": "__REDACTED__" }, + "extractLibrary": { + "ms": "__REDACTED__", + "pretty": "__REDACTED__" + }, "findManifests": { "ms": "__REDACTED__", "pretty": "__REDACTED__" @@ -25,12 +29,16 @@ "ms": "__REDACTED__", "pretty": "__REDACTED__" }, + "parseLibrary": { + "ms": "__REDACTED__", + "pretty": "__REDACTED__" + }, "total": { "ms": "__REDACTED__", "pretty": "__REDACTED__" } }, - "numberOfFiles": 5, + "numberOfFiles": 4, "numberOfManifests": 1 }, "severity": "note", diff --git a/rust/ql/integration-tests/hello-workspace/diagnostics.rust-project.expected b/rust/ql/integration-tests/hello-workspace/diagnostics.rust-project.expected index 146d8514488e..511bd49f1a51 100644 --- a/rust/ql/integration-tests/hello-workspace/diagnostics.rust-project.expected +++ b/rust/ql/integration-tests/hello-workspace/diagnostics.rust-project.expected @@ -9,6 +9,10 @@ "ms": "__REDACTED__", "pretty": "__REDACTED__" }, + "extractLibrary": { + "ms": "__REDACTED__", + "pretty": "__REDACTED__" + }, "findManifests": { "ms": "__REDACTED__", "pretty": "__REDACTED__" @@ -25,12 +29,16 @@ "ms": "__REDACTED__", "pretty": "__REDACTED__" }, + "parseLibrary": { + "ms": "__REDACTED__", + "pretty": "__REDACTED__" + }, "total": { "ms": "__REDACTED__", "pretty": "__REDACTED__" } }, - "numberOfFiles": 5, + "numberOfFiles": 4, "numberOfManifests": 1 }, "severity": "note", diff --git a/rust/ql/integration-tests/hello-workspace/steps.cargo.expected b/rust/ql/integration-tests/hello-workspace/steps.cargo.expected index 03c81ea6fb71..32a3b1110247 100644 --- a/rust/ql/integration-tests/hello-workspace/steps.cargo.expected +++ b/rust/ql/integration-tests/hello-workspace/steps.cargo.expected @@ -5,8 +5,6 @@ | exe/src/main.rs:0:0:0:0 | Extract(exe/src/main.rs) | | exe/src/main.rs:0:0:0:0 | LoadSource(exe/src/main.rs) | | exe/src/main.rs:0:0:0:0 | Parse(exe/src/main.rs) | -| file:///types.rs:0:0:0:0 | Extract(/types.rs) | -| file:///types.rs:0:0:0:0 | Parse(/types.rs) | | file://:0:0:0:0 | CrateGraph | | file://:0:0:0:0 | FindManifests | | lib/src/a_module/mod.rs:0:0:0:0 | Extract(lib/src/a_module/mod.rs) | diff --git a/rust/ql/integration-tests/hello-workspace/steps.ql b/rust/ql/integration-tests/hello-workspace/steps.ql index fe45fc4b6dc8..a87e434b14a7 100644 --- a/rust/ql/integration-tests/hello-workspace/steps.ql +++ b/rust/ql/integration-tests/hello-workspace/steps.ql @@ -1,27 +1,5 @@ import codeql.rust.elements.internal.ExtractorStep -private class Step instanceof ExtractorStep { - string toString() { - result = super.getAction() + "(" + this.getFilePath() + ")" - or - not super.hasFile() and result = super.getAction() - } - - private string getFilePath() { - exists(File file | file = super.getFile() | - exists(file.getRelativePath()) and result = file.getAbsolutePath() - or - not exists(file.getRelativePath()) and result = "/" + file.getBaseName() - ) - } - - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - super.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - filepath = this.getFilePath() - } -} - -from Step step +from ExtractorStep step +where not step.getAction() = ["ParseLibrary", "ExtractLibrary"] select step diff --git a/rust/ql/integration-tests/hello-workspace/steps.rust-project.expected b/rust/ql/integration-tests/hello-workspace/steps.rust-project.expected index 0cf90cf71e02..e9a65e0c7be5 100644 --- a/rust/ql/integration-tests/hello-workspace/steps.rust-project.expected +++ b/rust/ql/integration-tests/hello-workspace/steps.rust-project.expected @@ -4,8 +4,6 @@ | exe/src/main.rs:0:0:0:0 | Extract(exe/src/main.rs) | | exe/src/main.rs:0:0:0:0 | LoadSource(exe/src/main.rs) | | exe/src/main.rs:0:0:0:0 | Parse(exe/src/main.rs) | -| file:///types.rs:0:0:0:0 | Extract(/types.rs) | -| file:///types.rs:0:0:0:0 | Parse(/types.rs) | | file://:0:0:0:0 | CrateGraph | | file://:0:0:0:0 | FindManifests | | lib/src/a_module/mod.rs:0:0:0:0 | Extract(lib/src/a_module/mod.rs) | diff --git a/rust/ql/integration-tests/hello-workspace/summary.cargo.expected b/rust/ql/integration-tests/hello-workspace/summary.cargo.expected index c845417a6244..5912f7d69baf 100644 --- a/rust/ql/integration-tests/hello-workspace/summary.cargo.expected +++ b/rust/ql/integration-tests/hello-workspace/summary.cargo.expected @@ -9,7 +9,7 @@ | Inconsistencies - Path resolution | 0 | | Inconsistencies - SSA | 0 | | Inconsistencies - data flow | 0 | -| Lines of code extracted | 26 | +| Lines of code extracted | 9 | | Lines of user code extracted | 9 | | Macro calls - resolved | 2 | | Macro calls - total | 2 | diff --git a/rust/ql/integration-tests/hello-workspace/summary.rust-project.expected b/rust/ql/integration-tests/hello-workspace/summary.rust-project.expected index c845417a6244..5912f7d69baf 100644 --- a/rust/ql/integration-tests/hello-workspace/summary.rust-project.expected +++ b/rust/ql/integration-tests/hello-workspace/summary.rust-project.expected @@ -9,7 +9,7 @@ | Inconsistencies - Path resolution | 0 | | Inconsistencies - SSA | 0 | | Inconsistencies - data flow | 0 | -| Lines of code extracted | 26 | +| Lines of code extracted | 9 | | Lines of user code extracted | 9 | | Macro calls - resolved | 2 | | Macro calls - total | 2 | diff --git a/rust/ql/integration-tests/macro-expansion/diagnostics.expected b/rust/ql/integration-tests/macro-expansion/diagnostics.expected index 74e11aa9f2b4..c98f923b463f 100644 --- a/rust/ql/integration-tests/macro-expansion/diagnostics.expected +++ b/rust/ql/integration-tests/macro-expansion/diagnostics.expected @@ -9,6 +9,10 @@ "ms": "__REDACTED__", "pretty": "__REDACTED__" }, + "extractLibrary": { + "ms": "__REDACTED__", + "pretty": "__REDACTED__" + }, "findManifests": { "ms": "__REDACTED__", "pretty": "__REDACTED__" @@ -25,12 +29,16 @@ "ms": "__REDACTED__", "pretty": "__REDACTED__" }, + "parseLibrary": { + "ms": "__REDACTED__", + "pretty": "__REDACTED__" + }, "total": { "ms": "__REDACTED__", "pretty": "__REDACTED__" } }, - "numberOfFiles": 3, + "numberOfFiles": 2, "numberOfManifests": 1 }, "severity": "note", diff --git a/rust/ql/integration-tests/macro-expansion/test.ql b/rust/ql/integration-tests/macro-expansion/test.ql index f3f49cbf5c73..3369acc3a285 100644 --- a/rust/ql/integration-tests/macro-expansion/test.ql +++ b/rust/ql/integration-tests/macro-expansion/test.ql @@ -1,5 +1,5 @@ import rust from Item i, MacroItems items, int index, Item expanded -where i.getAttributeMacroExpansion() = items and items.getItem(index) = expanded +where i.fromSource() and i.getAttributeMacroExpansion() = items and items.getItem(index) = expanded select i, index, expanded diff --git a/rust/ql/integration-tests/workspace-with-glob/steps.expected b/rust/ql/integration-tests/workspace-with-glob/steps.expected index 0ee55e79623f..4b0e6ed828b6 100644 --- a/rust/ql/integration-tests/workspace-with-glob/steps.expected +++ b/rust/ql/integration-tests/workspace-with-glob/steps.expected @@ -1,8 +1,6 @@ | Cargo.toml:0:0:0:0 | LoadManifest(Cargo.toml) | | exe/src/main.rs:0:0:0:0 | Extract(exe/src/main.rs) | | exe/src/main.rs:0:0:0:0 | Parse(exe/src/main.rs) | -| file:///types.rs:0:0:0:0 | Extract(/types.rs) | -| file:///types.rs:0:0:0:0 | Parse(/types.rs) | | file://:0:0:0:0 | CrateGraph | | file://:0:0:0:0 | FindManifests | | lib/src/lib.rs:0:0:0:0 | Extract(lib/src/lib.rs) | diff --git a/rust/ql/integration-tests/workspace-with-glob/steps.ql b/rust/ql/integration-tests/workspace-with-glob/steps.ql index fe45fc4b6dc8..a87e434b14a7 100644 --- a/rust/ql/integration-tests/workspace-with-glob/steps.ql +++ b/rust/ql/integration-tests/workspace-with-glob/steps.ql @@ -1,27 +1,5 @@ import codeql.rust.elements.internal.ExtractorStep -private class Step instanceof ExtractorStep { - string toString() { - result = super.getAction() + "(" + this.getFilePath() + ")" - or - not super.hasFile() and result = super.getAction() - } - - private string getFilePath() { - exists(File file | file = super.getFile() | - exists(file.getRelativePath()) and result = file.getAbsolutePath() - or - not exists(file.getRelativePath()) and result = "/" + file.getBaseName() - ) - } - - predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - super.hasLocationInfo(_, startline, startcolumn, endline, endcolumn) and - filepath = this.getFilePath() - } -} - -from Step step +from ExtractorStep step +where not step.getAction() = ["ParseLibrary", "ExtractLibrary"] select step diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index 8aa6c921eefc..d0f7378bd3a1 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -523,97 +523,103 @@ module RustDataFlow implements InputSig { exists(c) } + pragma[nomagic] + additional predicate readContentStep(Node node1, Content c, Node node2) { + exists(TupleStructPatCfgNode pat, int pos | + pat = node1.asPat() and + node2.asPat() = pat.getField(pos) and + c = TTupleFieldContent(pat.getTupleStructPat().getTupleField(pos)) + ) + or + exists(TuplePatCfgNode pat, int pos | + pos = c.(TuplePositionContent).getPosition() and + node1.asPat() = pat and + node2.asPat() = pat.getField(pos) + ) + or + exists(StructPatCfgNode pat, string field | + pat = node1.asPat() and + c = TStructFieldContent(pat.getStructPat().getStructField(field)) and + node2.asPat() = pat.getFieldPat(field) + ) + or + c instanceof ReferenceContent and + node1.asPat().(RefPatCfgNode).getPat() = node2.asPat() + or + exists(FieldExprCfgNode access | + node1.asExpr() = access.getContainer() and + node2.asExpr() = access and + access = c.(FieldContent).getAnAccess() + ) + or + exists(IndexExprCfgNode arr | + c instanceof ElementContent and + node1.asExpr() = arr.getBase() and + node2.asExpr() = arr + ) + or + exists(ForExprCfgNode for | + c instanceof ElementContent and + node1.asExpr() = for.getIterable() and + node2.asPat() = for.getPat() + ) + or + exists(SlicePatCfgNode pat | + c instanceof ElementContent and + node1.asPat() = pat and + node2.asPat() = pat.getAPat() + ) + or + exists(TryExprCfgNode try | + node1.asExpr() = try.getExpr() and + node2.asExpr() = try and + c.(TupleFieldContent) + .isVariantField([any(OptionEnum o).getSome(), any(ResultEnum r).getOk()], 0) + ) + or + exists(PrefixExprCfgNode deref | + c instanceof ReferenceContent and + deref.getOperatorName() = "*" and + node1.asExpr() = deref.getExpr() and + node2.asExpr() = deref + ) + or + // Read from function return + exists(DataFlowCall call | + lambdaCall(call, _, node1) and + call = node2.(OutNode).getCall(TNormalReturnKind()) and + c instanceof FunctionCallReturnContent + ) + or + exists(AwaitExprCfgNode await | + c instanceof FutureContent and + node1.asExpr() = await.getExpr() and + node2.asExpr() = await + ) + or + referenceExprToExpr(node2.(PostUpdateNode).getPreUpdateNode(), + node1.(PostUpdateNode).getPreUpdateNode(), c) + or + // Step from receiver expression to receiver node, in case of an implicit + // dereference. + implicitDerefToReceiver(node1, node2, c) + or + // A read step dual to the store step for implicit borrows. + implicitBorrowToReceiver(node2.(PostUpdateNode).getPreUpdateNode(), + node1.(PostUpdateNode).getPreUpdateNode(), c) + or + VariableCapture::readStep(node1, c, node2) + } + /** * Holds if data can flow from `node1` to `node2` via a read of `c`. Thus, * `node1` references an object with a content `c.getAReadContent()` whose * value ends up in `node2`. */ predicate readStep(Node node1, ContentSet cs, Node node2) { - exists(Content c | c = cs.(SingletonContentSet).getContent() | - exists(TupleStructPatCfgNode pat, int pos | - pat = node1.asPat() and - node2.asPat() = pat.getField(pos) and - c = TTupleFieldContent(pat.getTupleStructPat().getTupleField(pos)) - ) - or - exists(TuplePatCfgNode pat, int pos | - pos = c.(TuplePositionContent).getPosition() and - node1.asPat() = pat and - node2.asPat() = pat.getField(pos) - ) - or - exists(StructPatCfgNode pat, string field | - pat = node1.asPat() and - c = TStructFieldContent(pat.getStructPat().getStructField(field)) and - node2.asPat() = pat.getFieldPat(field) - ) - or - c instanceof ReferenceContent and - node1.asPat().(RefPatCfgNode).getPat() = node2.asPat() - or - exists(FieldExprCfgNode access | - node1.asExpr() = access.getContainer() and - node2.asExpr() = access and - access = c.(FieldContent).getAnAccess() - ) - or - exists(IndexExprCfgNode arr | - c instanceof ElementContent and - node1.asExpr() = arr.getBase() and - node2.asExpr() = arr - ) - or - exists(ForExprCfgNode for | - c instanceof ElementContent and - node1.asExpr() = for.getIterable() and - node2.asPat() = for.getPat() - ) - or - exists(SlicePatCfgNode pat | - c instanceof ElementContent and - node1.asPat() = pat and - node2.asPat() = pat.getAPat() - ) - or - exists(TryExprCfgNode try | - node1.asExpr() = try.getExpr() and - node2.asExpr() = try and - c.(TupleFieldContent) - .isVariantField([any(OptionEnum o).getSome(), any(ResultEnum r).getOk()], 0) - ) - or - exists(PrefixExprCfgNode deref | - c instanceof ReferenceContent and - deref.getOperatorName() = "*" and - node1.asExpr() = deref.getExpr() and - node2.asExpr() = deref - ) - or - // Read from function return - exists(DataFlowCall call | - lambdaCall(call, _, node1) and - call = node2.(OutNode).getCall(TNormalReturnKind()) and - c instanceof FunctionCallReturnContent - ) - or - exists(AwaitExprCfgNode await | - c instanceof FutureContent and - node1.asExpr() = await.getExpr() and - node2.asExpr() = await - ) - or - referenceExprToExpr(node2.(PostUpdateNode).getPreUpdateNode(), - node1.(PostUpdateNode).getPreUpdateNode(), c) - or - // Step from receiver expression to receiver node, in case of an implicit - // dereference. - implicitDerefToReceiver(node1, node2, c) - or - // A read step dual to the store step for implicit borrows. - implicitBorrowToReceiver(node2.(PostUpdateNode).getPreUpdateNode(), - node1.(PostUpdateNode).getPreUpdateNode(), c) - or - VariableCapture::readStep(node1, c, node2) + exists(Content c | + c = cs.(SingletonContentSet).getContent() and + readContentStep(node1, c, node2) ) or FlowSummaryImpl::Private::Steps::summaryReadStep(node1.(FlowSummaryNode).getSummaryNode(), cs, @@ -652,7 +658,7 @@ module RustDataFlow implements InputSig { } pragma[nomagic] - private predicate storeContentStep(Node node1, Content c, Node node2) { + additional predicate storeContentStep(Node node1, Content c, Node node2) { exists(CallExprCfgNode call, int pos | node1.asExpr() = call.getArgument(pragma[only_bind_into](pos)) and node2.asExpr() = call and diff --git a/rust/ql/lib/codeql/rust/elements/Crate.qll b/rust/ql/lib/codeql/rust/elements/Crate.qll index a092591a4701..9bcbcba3b639 100644 --- a/rust/ql/lib/codeql/rust/elements/Crate.qll +++ b/rust/ql/lib/codeql/rust/elements/Crate.qll @@ -5,7 +5,6 @@ private import internal.CrateImpl import codeql.rust.elements.Locatable -import codeql.rust.elements.Module import codeql.rust.elements.internal.NamedCrate final class Crate = Impl::Crate; diff --git a/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll index f75294f3d10e..b80da6d7084f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AstNodeImpl.qll @@ -15,6 +15,7 @@ module Impl { private import rust private import codeql.rust.elements.internal.generated.ParentChild private import codeql.rust.controlflow.ControlFlowGraph + private import codeql.rust.elements.internal.MacroCallImpl::Impl as MacroCallImpl /** * Gets the immediate parent of a non-`AstNode` element `e`. @@ -59,10 +60,20 @@ module Impl { } /** Holds if this node is inside a macro expansion. */ - predicate isInMacroExpansion() { - this = any(MacroCall mc).getMacroCallExpansion() - or - this.getParentNode().isInMacroExpansion() + predicate isInMacroExpansion() { MacroCallImpl::isInMacroExpansion(_, this) } + + /** + * Holds if this node exists only as the result of a macro expansion. + * + * This is the same as `isInMacroExpansion()`, but excludes AST nodes corresponding + * to macro arguments. + */ + pragma[nomagic] + predicate isFromMacroExpansion() { + exists(MacroCall mc | + MacroCallImpl::isInMacroExpansion(mc, this) and + not this = mc.getATokenTreeNode() + ) } /** diff --git a/rust/ql/lib/codeql/rust/elements/internal/CrateImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CrateImpl.qll index d8321fce4bf4..0e0337f20aa2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CrateImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CrateImpl.qll @@ -60,13 +60,11 @@ module Impl { Crate getADependency() { result = this.getDependency(_) } /** Gets the source file that defines this crate, if any. */ - SourceFile getSourceFile() { result.getFile() = this.getModule().getFile() } + SourceFile getSourceFile() { result.getFile() = this.getLocation().getFile() } /** * Gets a source file that belongs to this crate, if any. */ SourceFile getASourceFile() { result = this.(CrateItemNode).getASourceFile() } - - override Location getLocation() { result = this.getModule().getLocation() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LocatableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LocatableImpl.qll index ed349df48681..fcb5289e0493 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LocatableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LocatableImpl.qll @@ -43,7 +43,7 @@ module Impl { File getFile() { result = this.getLocation().getFile() } /** Holds if this element is from source code. */ - predicate fromSource() { exists(this.getFile().getRelativePath()) } + predicate fromSource() { this.getFile().fromSource() } } private @location_default getDbLocation(Locatable l) { diff --git a/rust/ql/lib/codeql/rust/elements/internal/LocationImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LocationImpl.qll index 52daf46863b6..65cc6b3bd7c4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LocationImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LocationImpl.qll @@ -77,13 +77,76 @@ module LocationImpl { ) } - /** Holds if this location starts strictly before the specified location. */ + /** Holds if this location starts before location `that`. */ pragma[inline] - predicate strictlyBefore(Location other) { - this.getStartLine() < other.getStartLine() - or - this.getStartLine() = other.getStartLine() and this.getStartColumn() < other.getStartColumn() + predicate startsBefore(Location that) { + exists(string f, int sl1, int sc1, int sl2, int sc2 | + this.hasLocationInfo(f, sl1, sc1, _, _) and + that.hasLocationInfo(f, sl2, sc2, _, _) + | + sl1 < sl2 + or + sl1 = sl2 and sc1 <= sc2 + ) + } + + /** Holds if this location starts strictly before location `that`. */ + pragma[inline] + predicate startsStrictlyBefore(Location that) { + exists(string f, int sl1, int sc1, int sl2, int sc2 | + this.hasLocationInfo(f, sl1, sc1, _, _) and + that.hasLocationInfo(f, sl2, sc2, _, _) + | + sl1 < sl2 + or + sl1 = sl2 and sc1 < sc2 + ) + } + + /** Holds if this location ends after location `that`. */ + pragma[inline] + predicate endsAfter(Location that) { + exists(string f, int el1, int ec1, int el2, int ec2 | + this.hasLocationInfo(f, _, _, el1, ec1) and + that.hasLocationInfo(f, _, _, el2, ec2) + | + el1 > el2 + or + el1 = el2 and ec1 >= ec2 + ) } + + /** Holds if this location ends strictly after location `that`. */ + pragma[inline] + predicate endsStrictlyAfter(Location that) { + exists(string f, int el1, int ec1, int el2, int ec2 | + this.hasLocationInfo(f, _, _, el1, ec1) and + that.hasLocationInfo(f, _, _, el2, ec2) + | + el1 > el2 + or + el1 = el2 and ec1 > ec2 + ) + } + + /** + * Holds if this location contains location `that`, meaning that it starts + * before and ends after it. + */ + pragma[inline] + predicate contains(Location that) { this.startsBefore(that) and this.endsAfter(that) } + + /** + * Holds if this location strictlycontains location `that`, meaning that it starts + * strictly before and ends strictly after it. + */ + pragma[inline] + predicate strictlyContains(Location that) { + this.startsStrictlyBefore(that) and this.endsStrictlyAfter(that) + } + + /** Holds if this location is from source code. */ + predicate fromSource() { this.getFile().fromSource() } } class LocationDefault extends Location, TLocationDefault { diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll index c28d08f540b1..f8f96315fd4c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll @@ -11,6 +11,15 @@ private import codeql.rust.elements.internal.generated.MacroCall * be referenced directly. */ module Impl { + private import rust + + pragma[nomagic] + predicate isInMacroExpansion(MacroCall mc, AstNode n) { + n = mc.getMacroCallExpansion() + or + isInMacroExpansion(mc, n.getParentNode()) + } + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A MacroCall. For example: @@ -20,5 +29,12 @@ module Impl { */ class MacroCall extends Generated::MacroCall { override string toStringImpl() { result = this.getPath().toAbbreviatedString() + "!..." } + + /** Gets an AST node whose location is inside the token tree belonging to this macro call. */ + pragma[nomagic] + AstNode getATokenTreeNode() { + isInMacroExpansion(this, result) and + this.getTokenTree().getLocation().contains(result.getLocation()) + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Crate.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Crate.qll index f3eac4f7766f..644b23f1a1ea 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Crate.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Crate.qll @@ -7,7 +7,6 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.internal.LocatableImpl::Impl as LocatableImpl -import codeql.rust.elements.Module import codeql.rust.elements.internal.NamedCrate /** @@ -42,18 +41,6 @@ module Generated { */ final predicate hasVersion() { exists(this.getVersion()) } - /** - * Gets the module of this crate, if it exists. - */ - Module getModule() { - result = Synth::convertModuleFromRaw(Synth::convertCrateToRaw(this).(Raw::Crate).getModule()) - } - - /** - * Holds if `getModule()` exists. - */ - final predicate hasModule() { exists(this.getModule()) } - /** * Gets the `index`th cfg option of this crate (0-based). */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll index d06c69e1ce83..d50a13ad7a83 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll @@ -86,11 +86,6 @@ module Raw { */ string getVersion() { crate_versions(this, result) } - /** - * Gets the module of this crate, if it exists. - */ - Module getModule() { crate_modules(this, result) } - /** * Gets the `index`th cfg option of this crate (0-based). */ diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll index 84ee379773a1..e7d9cac24e92 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll @@ -7,6 +7,7 @@ private import codeql.rust.Concepts private import codeql.rust.controlflow.ControlFlowGraph as Cfg private import codeql.rust.controlflow.CfgNodes as CfgNodes private import codeql.rust.dataflow.DataFlow +private import codeql.rust.internal.PathResolution /** * A call to the `starts_with` method on a `Path`. diff --git a/rust/ql/lib/codeql/rust/internal/AstConsistency.qll b/rust/ql/lib/codeql/rust/internal/AstConsistency.qll index d812bfd2ef77..43adfc351f7e 100644 --- a/rust/ql/lib/codeql/rust/internal/AstConsistency.qll +++ b/rust/ql/lib/codeql/rust/internal/AstConsistency.qll @@ -24,10 +24,7 @@ query predicate multipleLocations(Locatable e) { strictcount(e.getLocation()) > /** * Holds if `e` does not have a `Location`. */ -query predicate noLocation(Locatable e) { - not exists(e.getLocation()) and - not e.(AstNode).getParentNode*() = any(Crate c).getModule() -} +query predicate noLocation(Locatable e) { not exists(e.getLocation()) } private predicate multiplePrimaryQlClasses(Element e) { strictcount(string cls | cls = e.getAPrimaryQlClass() and cls != "VariableAccess") > 1 diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index 6be07a62f7f5..8764869a152b 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -180,7 +180,8 @@ abstract class ItemNode extends Locatable { or preludeEdge(this, name, result) and not declares(this, _, name) or - builtinEdge(this, name, result) + this instanceof SourceFile and + builtin(name, result) or name = "super" and if this instanceof Module or this instanceof SourceFile @@ -196,11 +197,11 @@ abstract class ItemNode extends Locatable { this = result.(ImplOrTraitItemNode).getAnItemInSelfScope() or name = "crate" and - this = result.(CrateItemNode).getARootModuleNode() + this = result.(CrateItemNode).getASourceFile() or // todo: implement properly name = "$crate" and - result = any(CrateItemNode crate | this = crate.getARootModuleNode()).(Crate).getADependency*() and + result = any(CrateItemNode crate | this = crate.getASourceFile()).(Crate).getADependency*() and result.(CrateItemNode).isPotentialDollarCrateTarget() } @@ -281,16 +282,6 @@ abstract private class ModuleLikeNode extends ItemNode { not mid instanceof ModuleLikeNode ) } - - /** - * Holds if this is a root module, meaning either a source file or - * the entry module of a crate. - */ - predicate isRoot() { - this instanceof SourceFileItemNode - or - this = any(Crate c).getModule() - } } private class SourceFileItemNode extends ModuleLikeNode, SourceFile { @@ -316,21 +307,13 @@ private class SourceFileItemNode extends ModuleLikeNode, SourceFile { class CrateItemNode extends ItemNode instanceof Crate { /** - * Gets the module node that defines this crate. - * - * This is either a source file, when the crate is defined in source code, - * or a module, when the crate is defined in a dependency. + * Gets the source file that defines this crate. */ pragma[nomagic] - ModuleLikeNode getModuleNode() { - result = super.getSourceFile() - or - not exists(super.getSourceFile()) and - result = super.getModule() - } + SourceFileItemNode getSourceFile() { result = super.getSourceFile() } /** - * Gets a source file that belongs to this crate, if any. + * Gets a source file that belongs to this crate. * * This is calculated as those source files that can be reached from the entry * file of this crate using zero or more `mod` imports, without going through @@ -348,15 +331,6 @@ class CrateItemNode extends ItemNode instanceof Crate { ) } - /** - * Gets a root module node belonging to this crate. - */ - ModuleLikeNode getARootModuleNode() { - result = this.getASourceFile() - or - result = super.getModule() - } - pragma[nomagic] predicate isPotentialDollarCrateTarget() { exists(string name, RelevantPath p | @@ -381,10 +355,7 @@ class CrateItemNode extends ItemNode instanceof Crate { this.hasCanonicalPath(c) and exists(ModuleLikeNode m | child.getImmediateParent() = m and - not m = child.(SourceFileItemNode).getSuper() - | - m = super.getModule() // the special `crate` root module inserted by the extractor - or + not m = child.(SourceFileItemNode).getSuper() and m = super.getSourceFile() ) } @@ -998,7 +969,7 @@ private predicate modImport0(Module m, string name, Folder lookup) { // sibling import lookup = parent and ( - m.getFile() = any(CrateItemNode c).getModuleNode().(SourceFileItemNode).getFile() + m.getFile() = any(CrateItemNode c).getSourceFile().getFile() or m.getFile().getBaseName() = "mod.rs" ) @@ -1086,7 +1057,7 @@ private predicate fileImportEdge(Module mod, string name, ItemNode item) { */ pragma[nomagic] private predicate crateDefEdge(CrateItemNode c, string name, ItemNode i) { - i = c.getModuleNode().getASuccessorRec(name) and + i = c.getSourceFile().getASuccessorRec(name) and not i instanceof Crate } @@ -1094,17 +1065,10 @@ private predicate crateDefEdge(CrateItemNode c, string name, ItemNode i) { * Holds if `m` depends on crate `dep` named `name`. */ private predicate crateDependencyEdge(ModuleLikeNode m, string name, CrateItemNode dep) { - exists(CrateItemNode c | dep = c.(Crate).getDependency(name) | - // entry module/entry source file - m = c.getModuleNode() - or - // entry/transitive source file + exists(CrateItemNode c | + dep = c.(Crate).getDependency(name) and m = c.getASourceFile() ) - or - // paths inside the crate graph use the name of the crate itself as prefix, - // although that is not valid in Rust - dep = any(Crate c | name = c.getName() and m = c.getModule()) } private predicate useTreeDeclares(UseTree tree, string name) { @@ -1172,9 +1136,9 @@ class RelevantPath extends Path { private predicate isModule(ItemNode m) { m instanceof Module } -/** Holds if root module `root` contains the module `m`. */ -private predicate rootHasModule(ItemNode root, ItemNode m) = - doublyBoundedFastTC(hasChild/2, isRoot/1, isModule/1)(root, m) +/** Holds if source file `source` contains the module `m`. */ +private predicate rootHasModule(SourceFileItemNode source, ItemNode m) = + doublyBoundedFastTC(hasChild/2, isSourceFile/1, isModule/1)(source, m) pragma[nomagic] private ItemNode getOuterScope(ItemNode i) { @@ -1227,14 +1191,14 @@ private ItemNode getASuccessorFull(ItemNode pred, string name, Namespace ns) { ns = result.getNamespace() } -private predicate isRoot(ItemNode root) { root.(ModuleLikeNode).isRoot() } +private predicate isSourceFile(ItemNode source) { source instanceof SourceFileItemNode } private predicate hasCratePath(ItemNode i) { any(RelevantPath path).isCratePath(_, i) } private predicate hasChild(ItemNode parent, ItemNode child) { child.getImmediateParent() = parent } -private predicate rootHasCratePathTc(ItemNode i1, ItemNode i2) = - doublyBoundedFastTC(hasChild/2, isRoot/1, hasCratePath/1)(i1, i2) +private predicate sourceFileHasCratePathTc(ItemNode i1, ItemNode i2) = + doublyBoundedFastTC(hasChild/2, isSourceFile/1, hasCratePath/1)(i1, i2) /** * Holds if the unqualified path `p` references a keyword item named `name`, and @@ -1244,10 +1208,10 @@ pragma[nomagic] private predicate keywordLookup(ItemNode encl, string name, Namespace ns, RelevantPath p) { // For `($)crate`, jump directly to the root module exists(ItemNode i | p.isCratePath(name, i) | - encl.(ModuleLikeNode).isRoot() and + encl instanceof SourceFile and encl = i or - rootHasCratePathTc(encl, i) + sourceFileHasCratePathTc(encl, i) ) or name = ["super", "self"] and @@ -1448,10 +1412,10 @@ private predicate useImportEdge(Use use, string name, ItemNode item) { * [1]: https://doc.rust-lang.org/core/prelude/index.html */ private predicate preludeEdge(SourceFile f, string name, ItemNode i) { - exists(Crate core, ModuleItemNode mod, ModuleItemNode prelude, ModuleItemNode rust | + exists(Crate core, ModuleLikeNode mod, ModuleItemNode prelude, ModuleItemNode rust | f = any(Crate c0 | core = c0.getDependency(_)).getASourceFile() and core.getName() = "core" and - mod = core.getModule() and + mod = core.getSourceFile() and prelude = mod.getASuccessorRec("prelude") and rust = prelude.getASuccessorRec(["rust_2015", "rust_2018", "rust_2021", "rust_2024"]) and i = rust.getASuccessorRec(name) and @@ -1462,12 +1426,7 @@ private predicate preludeEdge(SourceFile f, string name, ItemNode i) { private import codeql.rust.frameworks.stdlib.Bultins as Builtins pragma[nomagic] -private predicate builtinEdge(ModuleLikeNode m, string name, ItemNode i) { - ( - m instanceof SourceFile - or - m = any(CrateItemNode c).getModuleNode() - ) and +private predicate builtin(string name, ItemNode i) { exists(SourceFileItemNode builtins | builtins.getFile().getParentContainer() instanceof Builtins::BuiltinsFolder and i = builtins.getASuccessorRec(name) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index bae628b47233..5bc137252fdd 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1232,7 +1232,7 @@ private module Debug { exists(string filepath, int startline, int startcolumn, int endline, int endcolumn | result.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and filepath.matches("%/main.rs") and - startline = 28 + startline = 948 ) } diff --git a/rust/ql/lib/rust.dbscheme b/rust/ql/lib/rust.dbscheme index 2df29df1bf8f..a1005655e9ef 100644 --- a/rust/ql/lib/rust.dbscheme +++ b/rust/ql/lib/rust.dbscheme @@ -238,12 +238,6 @@ crate_versions( string version: string ref ); -#keyset[id] -crate_modules( - int id: @crate ref, - int module: @module ref -); - #keyset[id, index] crate_cfg_options( int id: @crate ref, diff --git a/rust/ql/lib/upgrades/2df29df1bf8f8ba77919fd0873007e8322654f67/old.dbscheme b/rust/ql/lib/upgrades/2df29df1bf8f8ba77919fd0873007e8322654f67/old.dbscheme new file mode 100644 index 000000000000..2df29df1bf8f --- /dev/null +++ b/rust/ql/lib/upgrades/2df29df1bf8f8ba77919fd0873007e8322654f67/old.dbscheme @@ -0,0 +1,3612 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_def +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id] +crate_modules( + int id: @crate ref, + int module: @module ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +@variant_def = + @struct +| @union +| @variant +; + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @const +| @enum +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @struct +| @trait +| @trait_alias +| @type_alias +| @union +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/2df29df1bf8f8ba77919fd0873007e8322654f67/rust.dbscheme b/rust/ql/lib/upgrades/2df29df1bf8f8ba77919fd0873007e8322654f67/rust.dbscheme new file mode 100644 index 000000000000..a1005655e9ef --- /dev/null +++ b/rust/ql/lib/upgrades/2df29df1bf8f8ba77919fd0873007e8322654f67/rust.dbscheme @@ -0,0 +1,3606 @@ +// generated by codegen, do not edit + +// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + + +// from prefix.dbscheme +#keyset[id] +locatable_locations( + int id: @locatable ref, + int location: @location_default ref +); + + +// from schema + +@element = + @extractor_step +| @locatable +| @named_crate +| @unextracted +; + +extractor_steps( + unique int id: @extractor_step, + string action: string ref, + int duration_ms: int ref +); + +#keyset[id] +extractor_step_files( + int id: @extractor_step ref, + int file: @file ref +); + +@locatable = + @ast_node +| @crate +; + +named_crates( + unique int id: @named_crate, + string name: string ref, + int crate: @crate ref +); + +@unextracted = + @missing +| @unimplemented +; + +@ast_node = + @abi +| @addressable +| @arg_list +| @asm_dir_spec +| @asm_operand +| @asm_operand_expr +| @asm_option +| @asm_piece +| @asm_reg_spec +| @assoc_item +| @assoc_item_list +| @attr +| @callable +| @closure_binder +| @expr +| @extern_item +| @extern_item_list +| @field_list +| @format_args_arg +| @generic_arg +| @generic_arg_list +| @generic_param +| @generic_param_list +| @item_list +| @label +| @let_else +| @macro_items +| @match_arm +| @match_arm_list +| @match_guard +| @meta +| @name +| @param_base +| @param_list +| @parenthesized_arg_list +| @pat +| @path +| @path_segment +| @rename +| @resolvable +| @ret_type_repr +| @return_type_syntax +| @source_file +| @stmt +| @stmt_list +| @struct_expr_field +| @struct_expr_field_list +| @struct_field +| @struct_pat_field +| @struct_pat_field_list +| @token +| @token_tree +| @tuple_field +| @type_bound +| @type_bound_list +| @type_repr +| @use_bound_generic_arg +| @use_bound_generic_args +| @use_tree +| @use_tree_list +| @variant_def +| @variant_list +| @visibility +| @where_clause +| @where_pred +; + +crates( + unique int id: @crate +); + +#keyset[id] +crate_names( + int id: @crate ref, + string name: string ref +); + +#keyset[id] +crate_versions( + int id: @crate ref, + string version: string ref +); + +#keyset[id, index] +crate_cfg_options( + int id: @crate ref, + int index: int ref, + string cfg_option: string ref +); + +#keyset[id, index] +crate_named_dependencies( + int id: @crate ref, + int index: int ref, + int named_dependency: @named_crate ref +); + +missings( + unique int id: @missing +); + +unimplementeds( + unique int id: @unimplemented +); + +abis( + unique int id: @abi +); + +#keyset[id] +abi_abi_strings( + int id: @abi ref, + string abi_string: string ref +); + +@addressable = + @item +| @variant +; + +#keyset[id] +addressable_extended_canonical_paths( + int id: @addressable ref, + string extended_canonical_path: string ref +); + +#keyset[id] +addressable_crate_origins( + int id: @addressable ref, + string crate_origin: string ref +); + +arg_lists( + unique int id: @arg_list +); + +#keyset[id, index] +arg_list_args( + int id: @arg_list ref, + int index: int ref, + int arg: @expr ref +); + +asm_dir_specs( + unique int id: @asm_dir_spec +); + +@asm_operand = + @asm_const +| @asm_label +| @asm_reg_operand +| @asm_sym +; + +asm_operand_exprs( + unique int id: @asm_operand_expr +); + +#keyset[id] +asm_operand_expr_in_exprs( + int id: @asm_operand_expr ref, + int in_expr: @expr ref +); + +#keyset[id] +asm_operand_expr_out_exprs( + int id: @asm_operand_expr ref, + int out_expr: @expr ref +); + +asm_options( + unique int id: @asm_option +); + +#keyset[id] +asm_option_is_raw( + int id: @asm_option ref +); + +@asm_piece = + @asm_clobber_abi +| @asm_operand_named +| @asm_options_list +; + +asm_reg_specs( + unique int id: @asm_reg_spec +); + +#keyset[id] +asm_reg_spec_identifiers( + int id: @asm_reg_spec ref, + int identifier: @name_ref ref +); + +@assoc_item = + @const +| @function +| @macro_call +| @type_alias +; + +assoc_item_lists( + unique int id: @assoc_item_list +); + +#keyset[id, index] +assoc_item_list_assoc_items( + int id: @assoc_item_list ref, + int index: int ref, + int assoc_item: @assoc_item ref +); + +#keyset[id, index] +assoc_item_list_attrs( + int id: @assoc_item_list ref, + int index: int ref, + int attr: @attr ref +); + +attrs( + unique int id: @attr +); + +#keyset[id] +attr_meta( + int id: @attr ref, + int meta: @meta ref +); + +@callable = + @closure_expr +| @function +; + +#keyset[id] +callable_param_lists( + int id: @callable ref, + int param_list: @param_list ref +); + +#keyset[id, index] +callable_attrs( + int id: @callable ref, + int index: int ref, + int attr: @attr ref +); + +closure_binders( + unique int id: @closure_binder +); + +#keyset[id] +closure_binder_generic_param_lists( + int id: @closure_binder ref, + int generic_param_list: @generic_param_list ref +); + +@expr = + @array_expr_internal +| @asm_expr +| @await_expr +| @become_expr +| @binary_expr +| @break_expr +| @call_expr_base +| @cast_expr +| @closure_expr +| @continue_expr +| @field_expr +| @format_args_expr +| @if_expr +| @index_expr +| @labelable_expr +| @let_expr +| @literal_expr +| @macro_block_expr +| @macro_expr +| @match_expr +| @offset_of_expr +| @paren_expr +| @path_expr_base +| @prefix_expr +| @range_expr +| @ref_expr +| @return_expr +| @struct_expr +| @try_expr +| @tuple_expr +| @underscore_expr +| @yeet_expr +| @yield_expr +; + +@extern_item = + @function +| @macro_call +| @static +| @type_alias +; + +extern_item_lists( + unique int id: @extern_item_list +); + +#keyset[id, index] +extern_item_list_attrs( + int id: @extern_item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +extern_item_list_extern_items( + int id: @extern_item_list ref, + int index: int ref, + int extern_item: @extern_item ref +); + +@field_list = + @struct_field_list +| @tuple_field_list +; + +format_args_args( + unique int id: @format_args_arg +); + +#keyset[id] +format_args_arg_exprs( + int id: @format_args_arg ref, + int expr: @expr ref +); + +#keyset[id] +format_args_arg_names( + int id: @format_args_arg ref, + int name: @name ref +); + +@generic_arg = + @assoc_type_arg +| @const_arg +| @lifetime_arg +| @type_arg +; + +generic_arg_lists( + unique int id: @generic_arg_list +); + +#keyset[id, index] +generic_arg_list_generic_args( + int id: @generic_arg_list ref, + int index: int ref, + int generic_arg: @generic_arg ref +); + +@generic_param = + @const_param +| @lifetime_param +| @type_param +; + +generic_param_lists( + unique int id: @generic_param_list +); + +#keyset[id, index] +generic_param_list_generic_params( + int id: @generic_param_list ref, + int index: int ref, + int generic_param: @generic_param ref +); + +item_lists( + unique int id: @item_list +); + +#keyset[id, index] +item_list_attrs( + int id: @item_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +item_list_items( + int id: @item_list ref, + int index: int ref, + int item: @item ref +); + +labels( + unique int id: @label +); + +#keyset[id] +label_lifetimes( + int id: @label ref, + int lifetime: @lifetime ref +); + +let_elses( + unique int id: @let_else +); + +#keyset[id] +let_else_block_exprs( + int id: @let_else ref, + int block_expr: @block_expr ref +); + +macro_items( + unique int id: @macro_items +); + +#keyset[id, index] +macro_items_items( + int id: @macro_items ref, + int index: int ref, + int item: @item ref +); + +match_arms( + unique int id: @match_arm +); + +#keyset[id, index] +match_arm_attrs( + int id: @match_arm ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_arm_exprs( + int id: @match_arm ref, + int expr: @expr ref +); + +#keyset[id] +match_arm_guards( + int id: @match_arm ref, + int guard: @match_guard ref +); + +#keyset[id] +match_arm_pats( + int id: @match_arm ref, + int pat: @pat ref +); + +match_arm_lists( + unique int id: @match_arm_list +); + +#keyset[id, index] +match_arm_list_arms( + int id: @match_arm_list ref, + int index: int ref, + int arm: @match_arm ref +); + +#keyset[id, index] +match_arm_list_attrs( + int id: @match_arm_list ref, + int index: int ref, + int attr: @attr ref +); + +match_guards( + unique int id: @match_guard +); + +#keyset[id] +match_guard_conditions( + int id: @match_guard ref, + int condition: @expr ref +); + +meta( + unique int id: @meta +); + +#keyset[id] +meta_exprs( + int id: @meta ref, + int expr: @expr ref +); + +#keyset[id] +meta_is_unsafe( + int id: @meta ref +); + +#keyset[id] +meta_paths( + int id: @meta ref, + int path: @path ref +); + +#keyset[id] +meta_token_trees( + int id: @meta ref, + int token_tree: @token_tree ref +); + +names( + unique int id: @name +); + +#keyset[id] +name_texts( + int id: @name ref, + string text: string ref +); + +@param_base = + @param +| @self_param +; + +#keyset[id, index] +param_base_attrs( + int id: @param_base ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +param_base_type_reprs( + int id: @param_base ref, + int type_repr: @type_repr ref +); + +param_lists( + unique int id: @param_list +); + +#keyset[id, index] +param_list_params( + int id: @param_list ref, + int index: int ref, + int param: @param ref +); + +#keyset[id] +param_list_self_params( + int id: @param_list ref, + int self_param: @self_param ref +); + +parenthesized_arg_lists( + unique int id: @parenthesized_arg_list +); + +#keyset[id, index] +parenthesized_arg_list_type_args( + int id: @parenthesized_arg_list ref, + int index: int ref, + int type_arg: @type_arg ref +); + +@pat = + @box_pat +| @const_block_pat +| @ident_pat +| @literal_pat +| @macro_pat +| @or_pat +| @paren_pat +| @path_pat +| @range_pat +| @ref_pat +| @rest_pat +| @slice_pat +| @struct_pat +| @tuple_pat +| @tuple_struct_pat +| @wildcard_pat +; + +paths( + unique int id: @path +); + +#keyset[id] +path_qualifiers( + int id: @path ref, + int qualifier: @path ref +); + +#keyset[id] +path_segments_( + int id: @path ref, + int segment: @path_segment ref +); + +path_segments( + unique int id: @path_segment +); + +#keyset[id] +path_segment_generic_arg_lists( + int id: @path_segment ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +path_segment_identifiers( + int id: @path_segment ref, + int identifier: @name_ref ref +); + +#keyset[id] +path_segment_parenthesized_arg_lists( + int id: @path_segment ref, + int parenthesized_arg_list: @parenthesized_arg_list ref +); + +#keyset[id] +path_segment_ret_types( + int id: @path_segment ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +path_segment_return_type_syntaxes( + int id: @path_segment ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +path_segment_type_reprs( + int id: @path_segment ref, + int type_repr: @type_repr ref +); + +#keyset[id] +path_segment_trait_type_reprs( + int id: @path_segment ref, + int trait_type_repr: @path_type_repr ref +); + +renames( + unique int id: @rename +); + +#keyset[id] +rename_names( + int id: @rename ref, + int name: @name ref +); + +@resolvable = + @method_call_expr +| @path_ast_node +; + +#keyset[id] +resolvable_resolved_paths( + int id: @resolvable ref, + string resolved_path: string ref +); + +#keyset[id] +resolvable_resolved_crate_origins( + int id: @resolvable ref, + string resolved_crate_origin: string ref +); + +ret_type_reprs( + unique int id: @ret_type_repr +); + +#keyset[id] +ret_type_repr_type_reprs( + int id: @ret_type_repr ref, + int type_repr: @type_repr ref +); + +return_type_syntaxes( + unique int id: @return_type_syntax +); + +source_files( + unique int id: @source_file +); + +#keyset[id, index] +source_file_attrs( + int id: @source_file ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +source_file_items( + int id: @source_file ref, + int index: int ref, + int item: @item ref +); + +@stmt = + @expr_stmt +| @item +| @let_stmt +; + +stmt_lists( + unique int id: @stmt_list +); + +#keyset[id, index] +stmt_list_attrs( + int id: @stmt_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +stmt_list_statements( + int id: @stmt_list ref, + int index: int ref, + int statement: @stmt ref +); + +#keyset[id] +stmt_list_tail_exprs( + int id: @stmt_list ref, + int tail_expr: @expr ref +); + +struct_expr_fields( + unique int id: @struct_expr_field +); + +#keyset[id, index] +struct_expr_field_attrs( + int id: @struct_expr_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_expr_field_exprs( + int id: @struct_expr_field ref, + int expr: @expr ref +); + +#keyset[id] +struct_expr_field_identifiers( + int id: @struct_expr_field ref, + int identifier: @name_ref ref +); + +struct_expr_field_lists( + unique int id: @struct_expr_field_list +); + +#keyset[id, index] +struct_expr_field_list_attrs( + int id: @struct_expr_field_list ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +struct_expr_field_list_fields( + int id: @struct_expr_field_list ref, + int index: int ref, + int field: @struct_expr_field ref +); + +#keyset[id] +struct_expr_field_list_spreads( + int id: @struct_expr_field_list ref, + int spread: @expr ref +); + +struct_fields( + unique int id: @struct_field +); + +#keyset[id, index] +struct_field_attrs( + int id: @struct_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_defaults( + int id: @struct_field ref, + int default: @expr ref +); + +#keyset[id] +struct_field_is_unsafe( + int id: @struct_field ref +); + +#keyset[id] +struct_field_names( + int id: @struct_field ref, + int name: @name ref +); + +#keyset[id] +struct_field_type_reprs( + int id: @struct_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +struct_field_visibilities( + int id: @struct_field ref, + int visibility: @visibility ref +); + +struct_pat_fields( + unique int id: @struct_pat_field +); + +#keyset[id, index] +struct_pat_field_attrs( + int id: @struct_pat_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_pat_field_identifiers( + int id: @struct_pat_field ref, + int identifier: @name_ref ref +); + +#keyset[id] +struct_pat_field_pats( + int id: @struct_pat_field ref, + int pat: @pat ref +); + +struct_pat_field_lists( + unique int id: @struct_pat_field_list +); + +#keyset[id, index] +struct_pat_field_list_fields( + int id: @struct_pat_field_list ref, + int index: int ref, + int field: @struct_pat_field ref +); + +#keyset[id] +struct_pat_field_list_rest_pats( + int id: @struct_pat_field_list ref, + int rest_pat: @rest_pat ref +); + +@token = + @comment +; + +token_trees( + unique int id: @token_tree +); + +tuple_fields( + unique int id: @tuple_field +); + +#keyset[id, index] +tuple_field_attrs( + int id: @tuple_field ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +tuple_field_type_reprs( + int id: @tuple_field ref, + int type_repr: @type_repr ref +); + +#keyset[id] +tuple_field_visibilities( + int id: @tuple_field ref, + int visibility: @visibility ref +); + +type_bounds( + unique int id: @type_bound +); + +#keyset[id] +type_bound_is_async( + int id: @type_bound ref +); + +#keyset[id] +type_bound_is_const( + int id: @type_bound ref +); + +#keyset[id] +type_bound_lifetimes( + int id: @type_bound ref, + int lifetime: @lifetime ref +); + +#keyset[id] +type_bound_type_reprs( + int id: @type_bound ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_bound_use_bound_generic_args( + int id: @type_bound ref, + int use_bound_generic_args: @use_bound_generic_args ref +); + +type_bound_lists( + unique int id: @type_bound_list +); + +#keyset[id, index] +type_bound_list_bounds( + int id: @type_bound_list ref, + int index: int ref, + int bound: @type_bound ref +); + +@type_repr = + @array_type_repr +| @dyn_trait_type_repr +| @fn_ptr_type_repr +| @for_type_repr +| @impl_trait_type_repr +| @infer_type_repr +| @macro_type_repr +| @never_type_repr +| @paren_type_repr +| @path_type_repr +| @ptr_type_repr +| @ref_type_repr +| @slice_type_repr +| @tuple_type_repr +; + +@use_bound_generic_arg = + @lifetime +| @name_ref +; + +use_bound_generic_args( + unique int id: @use_bound_generic_args +); + +#keyset[id, index] +use_bound_generic_args_use_bound_generic_args( + int id: @use_bound_generic_args ref, + int index: int ref, + int use_bound_generic_arg: @use_bound_generic_arg ref +); + +use_trees( + unique int id: @use_tree +); + +#keyset[id] +use_tree_is_glob( + int id: @use_tree ref +); + +#keyset[id] +use_tree_paths( + int id: @use_tree ref, + int path: @path ref +); + +#keyset[id] +use_tree_renames( + int id: @use_tree ref, + int rename: @rename ref +); + +#keyset[id] +use_tree_use_tree_lists( + int id: @use_tree ref, + int use_tree_list: @use_tree_list ref +); + +use_tree_lists( + unique int id: @use_tree_list +); + +#keyset[id, index] +use_tree_list_use_trees( + int id: @use_tree_list ref, + int index: int ref, + int use_tree: @use_tree ref +); + +@variant_def = + @struct +| @union +| @variant +; + +variant_lists( + unique int id: @variant_list +); + +#keyset[id, index] +variant_list_variants( + int id: @variant_list ref, + int index: int ref, + int variant: @variant ref +); + +visibilities( + unique int id: @visibility +); + +#keyset[id] +visibility_paths( + int id: @visibility ref, + int path: @path ref +); + +where_clauses( + unique int id: @where_clause +); + +#keyset[id, index] +where_clause_predicates( + int id: @where_clause ref, + int index: int ref, + int predicate: @where_pred ref +); + +where_preds( + unique int id: @where_pred +); + +#keyset[id] +where_pred_generic_param_lists( + int id: @where_pred ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +where_pred_lifetimes( + int id: @where_pred ref, + int lifetime: @lifetime ref +); + +#keyset[id] +where_pred_type_reprs( + int id: @where_pred ref, + int type_repr: @type_repr ref +); + +#keyset[id] +where_pred_type_bound_lists( + int id: @where_pred ref, + int type_bound_list: @type_bound_list ref +); + +array_expr_internals( + unique int id: @array_expr_internal +); + +#keyset[id, index] +array_expr_internal_attrs( + int id: @array_expr_internal ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +array_expr_internal_exprs( + int id: @array_expr_internal ref, + int index: int ref, + int expr: @expr ref +); + +#keyset[id] +array_expr_internal_is_semicolon( + int id: @array_expr_internal ref +); + +array_type_reprs( + unique int id: @array_type_repr +); + +#keyset[id] +array_type_repr_const_args( + int id: @array_type_repr ref, + int const_arg: @const_arg ref +); + +#keyset[id] +array_type_repr_element_type_reprs( + int id: @array_type_repr ref, + int element_type_repr: @type_repr ref +); + +asm_clobber_abis( + unique int id: @asm_clobber_abi +); + +asm_consts( + unique int id: @asm_const +); + +#keyset[id] +asm_const_exprs( + int id: @asm_const ref, + int expr: @expr ref +); + +#keyset[id] +asm_const_is_const( + int id: @asm_const ref +); + +asm_exprs( + unique int id: @asm_expr +); + +#keyset[id, index] +asm_expr_asm_pieces( + int id: @asm_expr ref, + int index: int ref, + int asm_piece: @asm_piece ref +); + +#keyset[id, index] +asm_expr_attrs( + int id: @asm_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +asm_expr_templates( + int id: @asm_expr ref, + int index: int ref, + int template: @expr ref +); + +asm_labels( + unique int id: @asm_label +); + +#keyset[id] +asm_label_block_exprs( + int id: @asm_label ref, + int block_expr: @block_expr ref +); + +asm_operand_nameds( + unique int id: @asm_operand_named +); + +#keyset[id] +asm_operand_named_asm_operands( + int id: @asm_operand_named ref, + int asm_operand: @asm_operand ref +); + +#keyset[id] +asm_operand_named_names( + int id: @asm_operand_named ref, + int name: @name ref +); + +asm_options_lists( + unique int id: @asm_options_list +); + +#keyset[id, index] +asm_options_list_asm_options( + int id: @asm_options_list ref, + int index: int ref, + int asm_option: @asm_option ref +); + +asm_reg_operands( + unique int id: @asm_reg_operand +); + +#keyset[id] +asm_reg_operand_asm_dir_specs( + int id: @asm_reg_operand ref, + int asm_dir_spec: @asm_dir_spec ref +); + +#keyset[id] +asm_reg_operand_asm_operand_exprs( + int id: @asm_reg_operand ref, + int asm_operand_expr: @asm_operand_expr ref +); + +#keyset[id] +asm_reg_operand_asm_reg_specs( + int id: @asm_reg_operand ref, + int asm_reg_spec: @asm_reg_spec ref +); + +asm_syms( + unique int id: @asm_sym +); + +#keyset[id] +asm_sym_paths( + int id: @asm_sym ref, + int path: @path ref +); + +assoc_type_args( + unique int id: @assoc_type_arg +); + +#keyset[id] +assoc_type_arg_const_args( + int id: @assoc_type_arg ref, + int const_arg: @const_arg ref +); + +#keyset[id] +assoc_type_arg_generic_arg_lists( + int id: @assoc_type_arg ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +assoc_type_arg_identifiers( + int id: @assoc_type_arg ref, + int identifier: @name_ref ref +); + +#keyset[id] +assoc_type_arg_param_lists( + int id: @assoc_type_arg ref, + int param_list: @param_list ref +); + +#keyset[id] +assoc_type_arg_ret_types( + int id: @assoc_type_arg ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +assoc_type_arg_return_type_syntaxes( + int id: @assoc_type_arg ref, + int return_type_syntax: @return_type_syntax ref +); + +#keyset[id] +assoc_type_arg_type_reprs( + int id: @assoc_type_arg ref, + int type_repr: @type_repr ref +); + +#keyset[id] +assoc_type_arg_type_bound_lists( + int id: @assoc_type_arg ref, + int type_bound_list: @type_bound_list ref +); + +await_exprs( + unique int id: @await_expr +); + +#keyset[id, index] +await_expr_attrs( + int id: @await_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +await_expr_exprs( + int id: @await_expr ref, + int expr: @expr ref +); + +become_exprs( + unique int id: @become_expr +); + +#keyset[id, index] +become_expr_attrs( + int id: @become_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +become_expr_exprs( + int id: @become_expr ref, + int expr: @expr ref +); + +binary_exprs( + unique int id: @binary_expr +); + +#keyset[id, index] +binary_expr_attrs( + int id: @binary_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +binary_expr_lhs( + int id: @binary_expr ref, + int lhs: @expr ref +); + +#keyset[id] +binary_expr_operator_names( + int id: @binary_expr ref, + string operator_name: string ref +); + +#keyset[id] +binary_expr_rhs( + int id: @binary_expr ref, + int rhs: @expr ref +); + +box_pats( + unique int id: @box_pat +); + +#keyset[id] +box_pat_pats( + int id: @box_pat ref, + int pat: @pat ref +); + +break_exprs( + unique int id: @break_expr +); + +#keyset[id, index] +break_expr_attrs( + int id: @break_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +break_expr_exprs( + int id: @break_expr ref, + int expr: @expr ref +); + +#keyset[id] +break_expr_lifetimes( + int id: @break_expr ref, + int lifetime: @lifetime ref +); + +@call_expr_base = + @call_expr +| @method_call_expr +; + +#keyset[id] +call_expr_base_arg_lists( + int id: @call_expr_base ref, + int arg_list: @arg_list ref +); + +#keyset[id, index] +call_expr_base_attrs( + int id: @call_expr_base ref, + int index: int ref, + int attr: @attr ref +); + +cast_exprs( + unique int id: @cast_expr +); + +#keyset[id, index] +cast_expr_attrs( + int id: @cast_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +cast_expr_exprs( + int id: @cast_expr ref, + int expr: @expr ref +); + +#keyset[id] +cast_expr_type_reprs( + int id: @cast_expr ref, + int type_repr: @type_repr ref +); + +closure_exprs( + unique int id: @closure_expr +); + +#keyset[id] +closure_expr_bodies( + int id: @closure_expr ref, + int body: @expr ref +); + +#keyset[id] +closure_expr_closure_binders( + int id: @closure_expr ref, + int closure_binder: @closure_binder ref +); + +#keyset[id] +closure_expr_is_async( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_const( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_gen( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_move( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_is_static( + int id: @closure_expr ref +); + +#keyset[id] +closure_expr_ret_types( + int id: @closure_expr ref, + int ret_type: @ret_type_repr ref +); + +comments( + unique int id: @comment, + int parent: @ast_node ref, + string text: string ref +); + +const_args( + unique int id: @const_arg +); + +#keyset[id] +const_arg_exprs( + int id: @const_arg ref, + int expr: @expr ref +); + +const_block_pats( + unique int id: @const_block_pat +); + +#keyset[id] +const_block_pat_block_exprs( + int id: @const_block_pat ref, + int block_expr: @block_expr ref +); + +#keyset[id] +const_block_pat_is_const( + int id: @const_block_pat ref +); + +const_params( + unique int id: @const_param +); + +#keyset[id, index] +const_param_attrs( + int id: @const_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_param_default_vals( + int id: @const_param ref, + int default_val: @const_arg ref +); + +#keyset[id] +const_param_is_const( + int id: @const_param ref +); + +#keyset[id] +const_param_names( + int id: @const_param ref, + int name: @name ref +); + +#keyset[id] +const_param_type_reprs( + int id: @const_param ref, + int type_repr: @type_repr ref +); + +continue_exprs( + unique int id: @continue_expr +); + +#keyset[id, index] +continue_expr_attrs( + int id: @continue_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +continue_expr_lifetimes( + int id: @continue_expr ref, + int lifetime: @lifetime ref +); + +dyn_trait_type_reprs( + unique int id: @dyn_trait_type_repr +); + +#keyset[id] +dyn_trait_type_repr_type_bound_lists( + int id: @dyn_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +expr_stmts( + unique int id: @expr_stmt +); + +#keyset[id] +expr_stmt_exprs( + int id: @expr_stmt ref, + int expr: @expr ref +); + +field_exprs( + unique int id: @field_expr +); + +#keyset[id, index] +field_expr_attrs( + int id: @field_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +field_expr_containers( + int id: @field_expr ref, + int container: @expr ref +); + +#keyset[id] +field_expr_identifiers( + int id: @field_expr ref, + int identifier: @name_ref ref +); + +fn_ptr_type_reprs( + unique int id: @fn_ptr_type_repr +); + +#keyset[id] +fn_ptr_type_repr_abis( + int id: @fn_ptr_type_repr ref, + int abi: @abi ref +); + +#keyset[id] +fn_ptr_type_repr_is_async( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_const( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_is_unsafe( + int id: @fn_ptr_type_repr ref +); + +#keyset[id] +fn_ptr_type_repr_param_lists( + int id: @fn_ptr_type_repr ref, + int param_list: @param_list ref +); + +#keyset[id] +fn_ptr_type_repr_ret_types( + int id: @fn_ptr_type_repr ref, + int ret_type: @ret_type_repr ref +); + +for_type_reprs( + unique int id: @for_type_repr +); + +#keyset[id] +for_type_repr_generic_param_lists( + int id: @for_type_repr ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +for_type_repr_type_reprs( + int id: @for_type_repr ref, + int type_repr: @type_repr ref +); + +format_args_exprs( + unique int id: @format_args_expr +); + +#keyset[id, index] +format_args_expr_args( + int id: @format_args_expr ref, + int index: int ref, + int arg: @format_args_arg ref +); + +#keyset[id, index] +format_args_expr_attrs( + int id: @format_args_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +format_args_expr_templates( + int id: @format_args_expr ref, + int template: @expr ref +); + +ident_pats( + unique int id: @ident_pat +); + +#keyset[id, index] +ident_pat_attrs( + int id: @ident_pat ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ident_pat_is_mut( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_is_ref( + int id: @ident_pat ref +); + +#keyset[id] +ident_pat_names( + int id: @ident_pat ref, + int name: @name ref +); + +#keyset[id] +ident_pat_pats( + int id: @ident_pat ref, + int pat: @pat ref +); + +if_exprs( + unique int id: @if_expr +); + +#keyset[id, index] +if_expr_attrs( + int id: @if_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +if_expr_conditions( + int id: @if_expr ref, + int condition: @expr ref +); + +#keyset[id] +if_expr_elses( + int id: @if_expr ref, + int else: @expr ref +); + +#keyset[id] +if_expr_thens( + int id: @if_expr ref, + int then: @block_expr ref +); + +impl_trait_type_reprs( + unique int id: @impl_trait_type_repr +); + +#keyset[id] +impl_trait_type_repr_type_bound_lists( + int id: @impl_trait_type_repr ref, + int type_bound_list: @type_bound_list ref +); + +index_exprs( + unique int id: @index_expr +); + +#keyset[id, index] +index_expr_attrs( + int id: @index_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +index_expr_bases( + int id: @index_expr ref, + int base: @expr ref +); + +#keyset[id] +index_expr_indices( + int id: @index_expr ref, + int index: @expr ref +); + +infer_type_reprs( + unique int id: @infer_type_repr +); + +@item = + @const +| @enum +| @extern_block +| @extern_crate +| @function +| @impl +| @macro_call +| @macro_def +| @macro_rules +| @module +| @static +| @struct +| @trait +| @trait_alias +| @type_alias +| @union +| @use +; + +#keyset[id] +item_attribute_macro_expansions( + int id: @item ref, + int attribute_macro_expansion: @macro_items ref +); + +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + +let_exprs( + unique int id: @let_expr +); + +#keyset[id, index] +let_expr_attrs( + int id: @let_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_expr_scrutinees( + int id: @let_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +let_expr_pats( + int id: @let_expr ref, + int pat: @pat ref +); + +let_stmts( + unique int id: @let_stmt +); + +#keyset[id, index] +let_stmt_attrs( + int id: @let_stmt ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +let_stmt_initializers( + int id: @let_stmt ref, + int initializer: @expr ref +); + +#keyset[id] +let_stmt_let_elses( + int id: @let_stmt ref, + int let_else: @let_else ref +); + +#keyset[id] +let_stmt_pats( + int id: @let_stmt ref, + int pat: @pat ref +); + +#keyset[id] +let_stmt_type_reprs( + int id: @let_stmt ref, + int type_repr: @type_repr ref +); + +lifetimes( + unique int id: @lifetime +); + +#keyset[id] +lifetime_texts( + int id: @lifetime ref, + string text: string ref +); + +lifetime_args( + unique int id: @lifetime_arg +); + +#keyset[id] +lifetime_arg_lifetimes( + int id: @lifetime_arg ref, + int lifetime: @lifetime ref +); + +lifetime_params( + unique int id: @lifetime_param +); + +#keyset[id, index] +lifetime_param_attrs( + int id: @lifetime_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +lifetime_param_lifetimes( + int id: @lifetime_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +lifetime_param_type_bound_lists( + int id: @lifetime_param ref, + int type_bound_list: @type_bound_list ref +); + +literal_exprs( + unique int id: @literal_expr +); + +#keyset[id, index] +literal_expr_attrs( + int id: @literal_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +literal_expr_text_values( + int id: @literal_expr ref, + string text_value: string ref +); + +literal_pats( + unique int id: @literal_pat +); + +#keyset[id] +literal_pat_literals( + int id: @literal_pat ref, + int literal: @literal_expr ref +); + +macro_block_exprs( + unique int id: @macro_block_expr +); + +#keyset[id] +macro_block_expr_tail_exprs( + int id: @macro_block_expr ref, + int tail_expr: @expr ref +); + +#keyset[id, index] +macro_block_expr_statements( + int id: @macro_block_expr ref, + int index: int ref, + int statement: @stmt ref +); + +macro_exprs( + unique int id: @macro_expr +); + +#keyset[id] +macro_expr_macro_calls( + int id: @macro_expr ref, + int macro_call: @macro_call ref +); + +macro_pats( + unique int id: @macro_pat +); + +#keyset[id] +macro_pat_macro_calls( + int id: @macro_pat ref, + int macro_call: @macro_call ref +); + +macro_type_reprs( + unique int id: @macro_type_repr +); + +#keyset[id] +macro_type_repr_macro_calls( + int id: @macro_type_repr ref, + int macro_call: @macro_call ref +); + +match_exprs( + unique int id: @match_expr +); + +#keyset[id, index] +match_expr_attrs( + int id: @match_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +match_expr_scrutinees( + int id: @match_expr ref, + int scrutinee: @expr ref +); + +#keyset[id] +match_expr_match_arm_lists( + int id: @match_expr ref, + int match_arm_list: @match_arm_list ref +); + +name_refs( + unique int id: @name_ref +); + +#keyset[id] +name_ref_texts( + int id: @name_ref ref, + string text: string ref +); + +never_type_reprs( + unique int id: @never_type_repr +); + +offset_of_exprs( + unique int id: @offset_of_expr +); + +#keyset[id, index] +offset_of_expr_attrs( + int id: @offset_of_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +offset_of_expr_fields( + int id: @offset_of_expr ref, + int index: int ref, + int field: @name_ref ref +); + +#keyset[id] +offset_of_expr_type_reprs( + int id: @offset_of_expr ref, + int type_repr: @type_repr ref +); + +or_pats( + unique int id: @or_pat +); + +#keyset[id, index] +or_pat_pats( + int id: @or_pat ref, + int index: int ref, + int pat: @pat ref +); + +params( + unique int id: @param +); + +#keyset[id] +param_pats( + int id: @param ref, + int pat: @pat ref +); + +paren_exprs( + unique int id: @paren_expr +); + +#keyset[id, index] +paren_expr_attrs( + int id: @paren_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +paren_expr_exprs( + int id: @paren_expr ref, + int expr: @expr ref +); + +paren_pats( + unique int id: @paren_pat +); + +#keyset[id] +paren_pat_pats( + int id: @paren_pat ref, + int pat: @pat ref +); + +paren_type_reprs( + unique int id: @paren_type_repr +); + +#keyset[id] +paren_type_repr_type_reprs( + int id: @paren_type_repr ref, + int type_repr: @type_repr ref +); + +@path_ast_node = + @path_expr +| @path_pat +| @struct_expr +| @struct_pat +| @tuple_struct_pat +; + +#keyset[id] +path_ast_node_paths( + int id: @path_ast_node ref, + int path: @path ref +); + +@path_expr_base = + @path_expr +; + +path_type_reprs( + unique int id: @path_type_repr +); + +#keyset[id] +path_type_repr_paths( + int id: @path_type_repr ref, + int path: @path ref +); + +prefix_exprs( + unique int id: @prefix_expr +); + +#keyset[id, index] +prefix_expr_attrs( + int id: @prefix_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +prefix_expr_exprs( + int id: @prefix_expr ref, + int expr: @expr ref +); + +#keyset[id] +prefix_expr_operator_names( + int id: @prefix_expr ref, + string operator_name: string ref +); + +ptr_type_reprs( + unique int id: @ptr_type_repr +); + +#keyset[id] +ptr_type_repr_is_const( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_is_mut( + int id: @ptr_type_repr ref +); + +#keyset[id] +ptr_type_repr_type_reprs( + int id: @ptr_type_repr ref, + int type_repr: @type_repr ref +); + +range_exprs( + unique int id: @range_expr +); + +#keyset[id, index] +range_expr_attrs( + int id: @range_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +range_expr_ends( + int id: @range_expr ref, + int end: @expr ref +); + +#keyset[id] +range_expr_operator_names( + int id: @range_expr ref, + string operator_name: string ref +); + +#keyset[id] +range_expr_starts( + int id: @range_expr ref, + int start: @expr ref +); + +range_pats( + unique int id: @range_pat +); + +#keyset[id] +range_pat_ends( + int id: @range_pat ref, + int end: @pat ref +); + +#keyset[id] +range_pat_operator_names( + int id: @range_pat ref, + string operator_name: string ref +); + +#keyset[id] +range_pat_starts( + int id: @range_pat ref, + int start: @pat ref +); + +ref_exprs( + unique int id: @ref_expr +); + +#keyset[id, index] +ref_expr_attrs( + int id: @ref_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +ref_expr_exprs( + int id: @ref_expr ref, + int expr: @expr ref +); + +#keyset[id] +ref_expr_is_const( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_mut( + int id: @ref_expr ref +); + +#keyset[id] +ref_expr_is_raw( + int id: @ref_expr ref +); + +ref_pats( + unique int id: @ref_pat +); + +#keyset[id] +ref_pat_is_mut( + int id: @ref_pat ref +); + +#keyset[id] +ref_pat_pats( + int id: @ref_pat ref, + int pat: @pat ref +); + +ref_type_reprs( + unique int id: @ref_type_repr +); + +#keyset[id] +ref_type_repr_is_mut( + int id: @ref_type_repr ref +); + +#keyset[id] +ref_type_repr_lifetimes( + int id: @ref_type_repr ref, + int lifetime: @lifetime ref +); + +#keyset[id] +ref_type_repr_type_reprs( + int id: @ref_type_repr ref, + int type_repr: @type_repr ref +); + +rest_pats( + unique int id: @rest_pat +); + +#keyset[id, index] +rest_pat_attrs( + int id: @rest_pat ref, + int index: int ref, + int attr: @attr ref +); + +return_exprs( + unique int id: @return_expr +); + +#keyset[id, index] +return_expr_attrs( + int id: @return_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +return_expr_exprs( + int id: @return_expr ref, + int expr: @expr ref +); + +self_params( + unique int id: @self_param +); + +#keyset[id] +self_param_is_ref( + int id: @self_param ref +); + +#keyset[id] +self_param_is_mut( + int id: @self_param ref +); + +#keyset[id] +self_param_lifetimes( + int id: @self_param ref, + int lifetime: @lifetime ref +); + +#keyset[id] +self_param_names( + int id: @self_param ref, + int name: @name ref +); + +slice_pats( + unique int id: @slice_pat +); + +#keyset[id, index] +slice_pat_pats( + int id: @slice_pat ref, + int index: int ref, + int pat: @pat ref +); + +slice_type_reprs( + unique int id: @slice_type_repr +); + +#keyset[id] +slice_type_repr_type_reprs( + int id: @slice_type_repr ref, + int type_repr: @type_repr ref +); + +struct_field_lists( + unique int id: @struct_field_list +); + +#keyset[id, index] +struct_field_list_fields( + int id: @struct_field_list ref, + int index: int ref, + int field: @struct_field ref +); + +try_exprs( + unique int id: @try_expr +); + +#keyset[id, index] +try_expr_attrs( + int id: @try_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +try_expr_exprs( + int id: @try_expr ref, + int expr: @expr ref +); + +tuple_exprs( + unique int id: @tuple_expr +); + +#keyset[id, index] +tuple_expr_attrs( + int id: @tuple_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id, index] +tuple_expr_fields( + int id: @tuple_expr ref, + int index: int ref, + int field: @expr ref +); + +tuple_field_lists( + unique int id: @tuple_field_list +); + +#keyset[id, index] +tuple_field_list_fields( + int id: @tuple_field_list ref, + int index: int ref, + int field: @tuple_field ref +); + +tuple_pats( + unique int id: @tuple_pat +); + +#keyset[id, index] +tuple_pat_fields( + int id: @tuple_pat ref, + int index: int ref, + int field: @pat ref +); + +tuple_type_reprs( + unique int id: @tuple_type_repr +); + +#keyset[id, index] +tuple_type_repr_fields( + int id: @tuple_type_repr ref, + int index: int ref, + int field: @type_repr ref +); + +type_args( + unique int id: @type_arg +); + +#keyset[id] +type_arg_type_reprs( + int id: @type_arg ref, + int type_repr: @type_repr ref +); + +type_params( + unique int id: @type_param +); + +#keyset[id, index] +type_param_attrs( + int id: @type_param ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_param_default_types( + int id: @type_param ref, + int default_type: @type_repr ref +); + +#keyset[id] +type_param_names( + int id: @type_param ref, + int name: @name ref +); + +#keyset[id] +type_param_type_bound_lists( + int id: @type_param ref, + int type_bound_list: @type_bound_list ref +); + +underscore_exprs( + unique int id: @underscore_expr +); + +#keyset[id, index] +underscore_expr_attrs( + int id: @underscore_expr ref, + int index: int ref, + int attr: @attr ref +); + +variants( + unique int id: @variant +); + +#keyset[id, index] +variant_attrs( + int id: @variant ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +variant_discriminants( + int id: @variant ref, + int discriminant: @expr ref +); + +#keyset[id] +variant_field_lists( + int id: @variant ref, + int field_list: @field_list ref +); + +#keyset[id] +variant_names( + int id: @variant ref, + int name: @name ref +); + +#keyset[id] +variant_visibilities( + int id: @variant ref, + int visibility: @visibility ref +); + +wildcard_pats( + unique int id: @wildcard_pat +); + +yeet_exprs( + unique int id: @yeet_expr +); + +#keyset[id, index] +yeet_expr_attrs( + int id: @yeet_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yeet_expr_exprs( + int id: @yeet_expr ref, + int expr: @expr ref +); + +yield_exprs( + unique int id: @yield_expr +); + +#keyset[id, index] +yield_expr_attrs( + int id: @yield_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +yield_expr_exprs( + int id: @yield_expr ref, + int expr: @expr ref +); + +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + +call_exprs( + unique int id: @call_expr +); + +#keyset[id] +call_expr_functions( + int id: @call_expr ref, + int function: @expr ref +); + +consts( + unique int id: @const +); + +#keyset[id, index] +const_attrs( + int id: @const ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +const_bodies( + int id: @const ref, + int body: @expr ref +); + +#keyset[id] +const_is_const( + int id: @const ref +); + +#keyset[id] +const_is_default( + int id: @const ref +); + +#keyset[id] +const_names( + int id: @const ref, + int name: @name ref +); + +#keyset[id] +const_type_reprs( + int id: @const ref, + int type_repr: @type_repr ref +); + +#keyset[id] +const_visibilities( + int id: @const ref, + int visibility: @visibility ref +); + +enums( + unique int id: @enum +); + +#keyset[id, index] +enum_attrs( + int id: @enum ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +enum_generic_param_lists( + int id: @enum ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +enum_names( + int id: @enum ref, + int name: @name ref +); + +#keyset[id] +enum_variant_lists( + int id: @enum ref, + int variant_list: @variant_list ref +); + +#keyset[id] +enum_visibilities( + int id: @enum ref, + int visibility: @visibility ref +); + +#keyset[id] +enum_where_clauses( + int id: @enum ref, + int where_clause: @where_clause ref +); + +extern_blocks( + unique int id: @extern_block +); + +#keyset[id] +extern_block_abis( + int id: @extern_block ref, + int abi: @abi ref +); + +#keyset[id, index] +extern_block_attrs( + int id: @extern_block ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_block_extern_item_lists( + int id: @extern_block ref, + int extern_item_list: @extern_item_list ref +); + +#keyset[id] +extern_block_is_unsafe( + int id: @extern_block ref +); + +extern_crates( + unique int id: @extern_crate +); + +#keyset[id, index] +extern_crate_attrs( + int id: @extern_crate ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +extern_crate_identifiers( + int id: @extern_crate ref, + int identifier: @name_ref ref +); + +#keyset[id] +extern_crate_renames( + int id: @extern_crate ref, + int rename: @rename ref +); + +#keyset[id] +extern_crate_visibilities( + int id: @extern_crate ref, + int visibility: @visibility ref +); + +functions( + unique int id: @function +); + +#keyset[id] +function_abis( + int id: @function ref, + int abi: @abi ref +); + +#keyset[id] +function_bodies( + int id: @function ref, + int body: @block_expr ref +); + +#keyset[id] +function_generic_param_lists( + int id: @function ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +function_is_async( + int id: @function ref +); + +#keyset[id] +function_is_const( + int id: @function ref +); + +#keyset[id] +function_is_default( + int id: @function ref +); + +#keyset[id] +function_is_gen( + int id: @function ref +); + +#keyset[id] +function_is_unsafe( + int id: @function ref +); + +#keyset[id] +function_names( + int id: @function ref, + int name: @name ref +); + +#keyset[id] +function_ret_types( + int id: @function ref, + int ret_type: @ret_type_repr ref +); + +#keyset[id] +function_visibilities( + int id: @function ref, + int visibility: @visibility ref +); + +#keyset[id] +function_where_clauses( + int id: @function ref, + int where_clause: @where_clause ref +); + +impls( + unique int id: @impl +); + +#keyset[id] +impl_assoc_item_lists( + int id: @impl ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +impl_attrs( + int id: @impl ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +impl_generic_param_lists( + int id: @impl ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +impl_is_const( + int id: @impl ref +); + +#keyset[id] +impl_is_default( + int id: @impl ref +); + +#keyset[id] +impl_is_unsafe( + int id: @impl ref +); + +#keyset[id] +impl_self_ties( + int id: @impl ref, + int self_ty: @type_repr ref +); + +#keyset[id] +impl_traits( + int id: @impl ref, + int trait: @type_repr ref +); + +#keyset[id] +impl_visibilities( + int id: @impl ref, + int visibility: @visibility ref +); + +#keyset[id] +impl_where_clauses( + int id: @impl ref, + int where_clause: @where_clause ref +); + +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + +macro_calls( + unique int id: @macro_call +); + +#keyset[id, index] +macro_call_attrs( + int id: @macro_call ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_call_paths( + int id: @macro_call ref, + int path: @path ref +); + +#keyset[id] +macro_call_token_trees( + int id: @macro_call ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_call_macro_call_expansions( + int id: @macro_call ref, + int macro_call_expansion: @ast_node ref +); + +macro_defs( + unique int id: @macro_def +); + +#keyset[id] +macro_def_args( + int id: @macro_def ref, + int args: @token_tree ref +); + +#keyset[id, index] +macro_def_attrs( + int id: @macro_def ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_def_bodies( + int id: @macro_def ref, + int body: @token_tree ref +); + +#keyset[id] +macro_def_names( + int id: @macro_def ref, + int name: @name ref +); + +#keyset[id] +macro_def_visibilities( + int id: @macro_def ref, + int visibility: @visibility ref +); + +macro_rules( + unique int id: @macro_rules +); + +#keyset[id, index] +macro_rules_attrs( + int id: @macro_rules ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +macro_rules_names( + int id: @macro_rules ref, + int name: @name ref +); + +#keyset[id] +macro_rules_token_trees( + int id: @macro_rules ref, + int token_tree: @token_tree ref +); + +#keyset[id] +macro_rules_visibilities( + int id: @macro_rules ref, + int visibility: @visibility ref +); + +method_call_exprs( + unique int id: @method_call_expr +); + +#keyset[id] +method_call_expr_generic_arg_lists( + int id: @method_call_expr ref, + int generic_arg_list: @generic_arg_list ref +); + +#keyset[id] +method_call_expr_identifiers( + int id: @method_call_expr ref, + int identifier: @name_ref ref +); + +#keyset[id] +method_call_expr_receivers( + int id: @method_call_expr ref, + int receiver: @expr ref +); + +modules( + unique int id: @module +); + +#keyset[id, index] +module_attrs( + int id: @module ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +module_item_lists( + int id: @module ref, + int item_list: @item_list ref +); + +#keyset[id] +module_names( + int id: @module ref, + int name: @name ref +); + +#keyset[id] +module_visibilities( + int id: @module ref, + int visibility: @visibility ref +); + +path_exprs( + unique int id: @path_expr +); + +#keyset[id, index] +path_expr_attrs( + int id: @path_expr ref, + int index: int ref, + int attr: @attr ref +); + +path_pats( + unique int id: @path_pat +); + +statics( + unique int id: @static +); + +#keyset[id, index] +static_attrs( + int id: @static ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +static_bodies( + int id: @static ref, + int body: @expr ref +); + +#keyset[id] +static_is_mut( + int id: @static ref +); + +#keyset[id] +static_is_static( + int id: @static ref +); + +#keyset[id] +static_is_unsafe( + int id: @static ref +); + +#keyset[id] +static_names( + int id: @static ref, + int name: @name ref +); + +#keyset[id] +static_type_reprs( + int id: @static ref, + int type_repr: @type_repr ref +); + +#keyset[id] +static_visibilities( + int id: @static ref, + int visibility: @visibility ref +); + +structs( + unique int id: @struct +); + +#keyset[id, index] +struct_attrs( + int id: @struct ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +struct_field_lists_( + int id: @struct ref, + int field_list: @field_list ref +); + +#keyset[id] +struct_generic_param_lists( + int id: @struct ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +struct_names( + int id: @struct ref, + int name: @name ref +); + +#keyset[id] +struct_visibilities( + int id: @struct ref, + int visibility: @visibility ref +); + +#keyset[id] +struct_where_clauses( + int id: @struct ref, + int where_clause: @where_clause ref +); + +struct_exprs( + unique int id: @struct_expr +); + +#keyset[id] +struct_expr_struct_expr_field_lists( + int id: @struct_expr ref, + int struct_expr_field_list: @struct_expr_field_list ref +); + +struct_pats( + unique int id: @struct_pat +); + +#keyset[id] +struct_pat_struct_pat_field_lists( + int id: @struct_pat ref, + int struct_pat_field_list: @struct_pat_field_list ref +); + +traits( + unique int id: @trait +); + +#keyset[id] +trait_assoc_item_lists( + int id: @trait ref, + int assoc_item_list: @assoc_item_list ref +); + +#keyset[id, index] +trait_attrs( + int id: @trait ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_generic_param_lists( + int id: @trait ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_is_auto( + int id: @trait ref +); + +#keyset[id] +trait_is_unsafe( + int id: @trait ref +); + +#keyset[id] +trait_names( + int id: @trait ref, + int name: @name ref +); + +#keyset[id] +trait_type_bound_lists( + int id: @trait ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_visibilities( + int id: @trait ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_where_clauses( + int id: @trait ref, + int where_clause: @where_clause ref +); + +trait_aliases( + unique int id: @trait_alias +); + +#keyset[id, index] +trait_alias_attrs( + int id: @trait_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +trait_alias_generic_param_lists( + int id: @trait_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +trait_alias_names( + int id: @trait_alias ref, + int name: @name ref +); + +#keyset[id] +trait_alias_type_bound_lists( + int id: @trait_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +trait_alias_visibilities( + int id: @trait_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +trait_alias_where_clauses( + int id: @trait_alias ref, + int where_clause: @where_clause ref +); + +tuple_struct_pats( + unique int id: @tuple_struct_pat +); + +#keyset[id, index] +tuple_struct_pat_fields( + int id: @tuple_struct_pat ref, + int index: int ref, + int field: @pat ref +); + +type_aliases( + unique int id: @type_alias +); + +#keyset[id, index] +type_alias_attrs( + int id: @type_alias ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +type_alias_generic_param_lists( + int id: @type_alias ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +type_alias_is_default( + int id: @type_alias ref +); + +#keyset[id] +type_alias_names( + int id: @type_alias ref, + int name: @name ref +); + +#keyset[id] +type_alias_type_reprs( + int id: @type_alias ref, + int type_repr: @type_repr ref +); + +#keyset[id] +type_alias_type_bound_lists( + int id: @type_alias ref, + int type_bound_list: @type_bound_list ref +); + +#keyset[id] +type_alias_visibilities( + int id: @type_alias ref, + int visibility: @visibility ref +); + +#keyset[id] +type_alias_where_clauses( + int id: @type_alias ref, + int where_clause: @where_clause ref +); + +unions( + unique int id: @union +); + +#keyset[id, index] +union_attrs( + int id: @union ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +union_generic_param_lists( + int id: @union ref, + int generic_param_list: @generic_param_list ref +); + +#keyset[id] +union_names( + int id: @union ref, + int name: @name ref +); + +#keyset[id] +union_struct_field_lists( + int id: @union ref, + int struct_field_list: @struct_field_list ref +); + +#keyset[id] +union_visibilities( + int id: @union ref, + int visibility: @visibility ref +); + +#keyset[id] +union_where_clauses( + int id: @union ref, + int where_clause: @where_clause ref +); + +uses( + unique int id: @use +); + +#keyset[id, index] +use_attrs( + int id: @use ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +use_use_trees( + int id: @use ref, + int use_tree: @use_tree ref +); + +#keyset[id] +use_visibilities( + int id: @use ref, + int visibility: @visibility ref +); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/lib/upgrades/2df29df1bf8f8ba77919fd0873007e8322654f67/upgrade.properties b/rust/ql/lib/upgrades/2df29df1bf8f8ba77919fd0873007e8322654f67/upgrade.properties new file mode 100644 index 000000000000..deb8bcdb9440 --- /dev/null +++ b/rust/ql/lib/upgrades/2df29df1bf8f8ba77919fd0873007e8322654f67/upgrade.properties @@ -0,0 +1,4 @@ +description: Remove 'module' from Crate +compatibility: partial + +crate_modules.rel: delete diff --git a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll index cd82003feac1..e6cf20da84dc 100644 --- a/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll +++ b/rust/ql/lib/utils/test/PathResolutionInlineExpectationsTest.qll @@ -18,7 +18,8 @@ private module ResolveTest implements TestSig { private predicate commmentAt(string text, string filepath, int line) { exists(Comment c | c.getLocation().hasLocationInfo(filepath, line, _, _, _) and - c.getCommentText().trim() = text + c.getCommentText().trim() = text and + c.fromSource() ) } @@ -35,6 +36,8 @@ private module ResolveTest implements TestSig { exists(AstNode n | not n = any(Path parent).getQualifier() and location = n.getLocation() and + n.fromSource() and + not n.isFromMacroExpansion() and element = n.toString() and tag = "item" | diff --git a/rust/ql/src/queries/diagnostics/UnresolvedMacroCalls.ql b/rust/ql/src/queries/diagnostics/UnresolvedMacroCalls.ql index 9b04fca82f49..f4e6a73fa7ac 100644 --- a/rust/ql/src/queries/diagnostics/UnresolvedMacroCalls.ql +++ b/rust/ql/src/queries/diagnostics/UnresolvedMacroCalls.ql @@ -8,5 +8,5 @@ import rust from MacroCall mc -where not mc.hasMacroCallExpansion() +where mc.fromSource() and not mc.hasMacroCallExpansion() select mc, "Macro call was not resolved to a target." diff --git a/rust/ql/src/queries/summary/Stats.qll b/rust/ql/src/queries/summary/Stats.qll index 8ce0126e4fde..2199a3ddff0b 100644 --- a/rust/ql/src/queries/summary/Stats.qll +++ b/rust/ql/src/queries/summary/Stats.qll @@ -28,7 +28,7 @@ private import codeql.rust.security.WeakSensitiveDataHashingExtensions /** * Gets a count of the total number of lines of code in the database. */ -int getLinesOfCode() { result = sum(File f | | f.getNumberOfLinesOfCode()) } +int getLinesOfCode() { result = sum(File f | f.fromSource() | f.getNumberOfLinesOfCode()) } /** * Gets a count of the total number of lines of code from the source code directory in the database. @@ -91,8 +91,7 @@ int getQuerySinksCount() { result = count(QuerySink s) } class CrateElement extends Element { CrateElement() { this instanceof Crate or - this instanceof NamedCrate or - this.(AstNode).getParentNode*() = any(Crate c).getModule() + this instanceof NamedCrate } } @@ -110,9 +109,11 @@ predicate elementStats(string key, int value) { * Gets summary statistics about extraction. */ predicate extractionStats(string key, int value) { - key = "Extraction errors" and value = count(ExtractionError e) + key = "Extraction errors" and + value = count(ExtractionError e | not exists(e.getLocation()) or e.getLocation().fromSource()) or - key = "Extraction warnings" and value = count(ExtractionWarning w) + key = "Extraction warnings" and + value = count(ExtractionWarning w | not exists(w.getLocation()) or w.getLocation().fromSource()) or key = "Files extracted - total" and value = count(ExtractedFile f | exists(f.getRelativePath())) or @@ -134,11 +135,13 @@ predicate extractionStats(string key, int value) { or key = "Lines of user code extracted" and value = getLinesOfUserCode() or - key = "Macro calls - total" and value = count(MacroCall mc) + key = "Macro calls - total" and value = count(MacroCall mc | mc.fromSource()) or - key = "Macro calls - resolved" and value = count(MacroCall mc | mc.hasMacroCallExpansion()) + key = "Macro calls - resolved" and + value = count(MacroCall mc | mc.fromSource() and mc.hasMacroCallExpansion()) or - key = "Macro calls - unresolved" and value = count(MacroCall mc | not mc.hasMacroCallExpansion()) + key = "Macro calls - unresolved" and + value = count(MacroCall mc | mc.fromSource() and not mc.hasMacroCallExpansion()) } /** diff --git a/rust/ql/test/TestUtils.qll b/rust/ql/test/TestUtils.qll index dc75d109a339..f1e3c7294942 100644 --- a/rust/ql/test/TestUtils.qll +++ b/rust/ql/test/TestUtils.qll @@ -1,12 +1,19 @@ private import rust -predicate toBeTested(Element e) { not e instanceof CrateElement and not e instanceof Builtin } +predicate toBeTested(Element e) { + not e instanceof CrateElement and + not e instanceof Builtin and + ( + not e instanceof Locatable + or + e.(Locatable).fromSource() + ) +} class CrateElement extends Element { CrateElement() { this instanceof Crate or - this instanceof NamedCrate or - any(Crate c).getModule() = this.(AstNode).getParentNode*() + this instanceof NamedCrate } } diff --git a/rust/ql/test/extractor-tests/crate_graph/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/extractor-tests/crate_graph/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..0aa771632529 --- /dev/null +++ b/rust/ql/test/extractor-tests/crate_graph/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,13 @@ +multipleCanonicalPaths +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | diff --git a/rust/ql/test/extractor-tests/crate_graph/modules.expected b/rust/ql/test/extractor-tests/crate_graph/modules.expected deleted file mode 100644 index 157432a77e33..000000000000 --- a/rust/ql/test/extractor-tests/crate_graph/modules.expected +++ /dev/null @@ -1,140 +0,0 @@ -#-----| Const - -#-----| Static - -#-----| enum X - -#-----| fn as_string - -#-----| fn as_string - -#-----| fn fmt - -#-----| fn from - -#-----| fn length - -#-----| impl ...::AsString for ...::X { ... } -#-----| -> fn as_string - -#-----| impl ...::Display for ...::X { ... } -#-----| -> fn fmt - -#-----| impl ...::From::<...> for ...::Thing::<...> { ... } -#-----| -> fn from - -lib.rs: -# 0| mod crate -#-----| -> mod module - -#-----| mod module -#-----| -> Const -#-----| -> Static -#-----| -> enum X -#-----| -> fn length -#-----| -> impl ...::AsString for ...::X { ... } -#-----| -> impl ...::Display for ...::X { ... } -#-----| -> impl ...::From::<...> for ...::Thing::<...> { ... } -#-----| -> struct LocalKey -#-----| -> struct Thing -#-----| -> struct X_List -#-----| -> trait AsString -#-----| -> use ...::DirBuilder -#-----| -> use ...::DirEntry -#-----| -> use ...::File -#-----| -> use ...::FileTimes -#-----| -> use ...::FileType -#-----| -> use ...::Metadata -#-----| -> use ...::OpenOptions -#-----| -> use ...::PathBuf -#-----| -> use ...::Permissions -#-----| -> use ...::ReadDir -#-----| -> use ...::canonicalize -#-----| -> use ...::copy -#-----| -> use ...::create_dir -#-----| -> use ...::create_dir as mkdir -#-----| -> use ...::create_dir_all -#-----| -> use ...::exists -#-----| -> use ...::hard_link -#-----| -> use ...::metadata -#-----| -> use ...::read -#-----| -> use ...::read_dir -#-----| -> use ...::read_link -#-----| -> use ...::read_to_string -#-----| -> use ...::remove_dir -#-----| -> use ...::remove_dir_all -#-----| -> use ...::remove_file -#-----| -> use ...::rename -#-----| -> use ...::set_permissions -#-----| -> use ...::soft_link -#-----| -> use ...::symlink_metadata -#-----| -> use ...::write - -#-----| struct LocalKey - -#-----| struct Thing - -#-----| struct X_List - -#-----| trait AsString -#-----| -> fn as_string - -#-----| use ...::DirBuilder - -#-----| use ...::DirEntry - -#-----| use ...::File - -#-----| use ...::FileTimes - -#-----| use ...::FileType - -#-----| use ...::Metadata - -#-----| use ...::OpenOptions - -#-----| use ...::PathBuf - -#-----| use ...::Permissions - -#-----| use ...::ReadDir - -#-----| use ...::canonicalize - -#-----| use ...::copy - -#-----| use ...::create_dir - -#-----| use ...::create_dir as mkdir - -#-----| use ...::create_dir_all - -#-----| use ...::exists - -#-----| use ...::hard_link - -#-----| use ...::metadata - -#-----| use ...::read - -#-----| use ...::read_dir - -#-----| use ...::read_link - -#-----| use ...::read_to_string - -#-----| use ...::remove_dir - -#-----| use ...::remove_dir_all - -#-----| use ...::remove_file - -#-----| use ...::rename - -#-----| use ...::set_permissions - -#-----| use ...::soft_link - -#-----| use ...::symlink_metadata - -#-----| use ...::write diff --git a/rust/ql/test/extractor-tests/crate_graph/modules.ql b/rust/ql/test/extractor-tests/crate_graph/modules.ql deleted file mode 100644 index 5554a69d1a96..000000000000 --- a/rust/ql/test/extractor-tests/crate_graph/modules.ql +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @id module-graph - * @name Module and Item Graph - * @kind graph - */ - -import rust - -predicate nodes(Item i) { i instanceof RelevantNode } - -class RelevantNode extends Item { - RelevantNode() { - this.getParentNode*() = - any(Crate m | m.getName() = "test" and m.getVersion() = "0.0.1").getModule() - } - - string label() { result = this.toString() } -} - -class HasGenericParams extends RelevantNode { - private GenericParamList params; - - HasGenericParams() { - params = this.(Function).getGenericParamList() or - params = this.(Enum).getGenericParamList() or - params = this.(Struct).getGenericParamList() or - params = this.(Union).getGenericParamList() or - params = this.(Impl).getGenericParamList() or - params = this.(Enum).getGenericParamList() or - params = this.(Trait).getGenericParamList() or - params = this.(TraitAlias).getGenericParamList() - } - - override string label() { - result = - super.toString() + "<" + - strictconcat(string part, int index | - part = params.getGenericParam(index).toString() - | - part, ", " order by index - ) + ">" - } -} - -predicate edges(RelevantNode container, RelevantNode element) { - element = container.(Module).getItemList().getAnItem() or - element = container.(Impl).getAssocItemList().getAnAssocItem() or - element = container.(Trait).getAssocItemList().getAnAssocItem() -} - -query predicate nodes(RelevantNode node, string attr, string val) { - nodes(node) and - ( - attr = "semmle.label" and - val = node.label() - or - attr = "semmle.order" and - val = - any(int i | node = rank[i](RelevantNode n | nodes(n) | n order by n.toString())).toString() - ) -} - -query predicate edges(RelevantNode pred, RelevantNode succ, string attr, string val) { - edges(pred, succ) and - ( - attr = "semmle.label" and - val = "" - or - attr = "semmle.order" and - val = any(int i | succ = rank[i](Item s | edges(pred, s) | s order by s.toString())).toString() - ) -} diff --git a/rust/ql/test/extractor-tests/literal/literal.ql b/rust/ql/test/extractor-tests/literal/literal.ql index 3585ad2f5b91..21c36ab57618 100644 --- a/rust/ql/test/extractor-tests/literal/literal.ql +++ b/rust/ql/test/extractor-tests/literal/literal.ql @@ -1,13 +1,16 @@ import rust +import TestUtils -query predicate charLiteral(CharLiteralExpr e) { any() } +query predicate charLiteral(CharLiteralExpr e) { toBeTested(e) } -query predicate stringLiteral(StringLiteralExpr e) { any() } +query predicate stringLiteral(StringLiteralExpr e) { toBeTested(e) } query predicate integerLiteral(IntegerLiteralExpr e, string suffix) { - suffix = concat(e.getSuffix()) + toBeTested(e) and suffix = concat(e.getSuffix()) } -query predicate floatLiteral(FloatLiteralExpr e, string suffix) { suffix = concat(e.getSuffix()) } +query predicate floatLiteral(FloatLiteralExpr e, string suffix) { + toBeTested(e) and suffix = concat(e.getSuffix()) +} -query predicate booleanLiteral(BooleanLiteralExpr e) { any() } +query predicate booleanLiteral(BooleanLiteralExpr e) { toBeTested(e) } diff --git a/rust/ql/test/library-tests/controlflow/BasicBlocks.ql b/rust/ql/test/library-tests/controlflow/BasicBlocks.ql index 2d072fa5b7cf..770fd1133e65 100644 --- a/rust/ql/test/library-tests/controlflow/BasicBlocks.ql +++ b/rust/ql/test/library-tests/controlflow/BasicBlocks.ql @@ -1,23 +1,28 @@ import rust import codeql.rust.controlflow.ControlFlowGraph import codeql.rust.controlflow.BasicBlocks +import TestUtils -query predicate dominates(BasicBlock bb1, BasicBlock bb2) { bb1.dominates(bb2) } +query predicate dominates(BasicBlock bb1, BasicBlock bb2) { + toBeTested(bb1.getScope()) and bb1.dominates(bb2) +} -query predicate postDominance(BasicBlock bb1, BasicBlock bb2) { bb1.postDominates(bb2) } +query predicate postDominance(BasicBlock bb1, BasicBlock bb2) { + toBeTested(bb1.getScope()) and bb1.postDominates(bb2) +} query predicate immediateDominator(BasicBlock bb1, BasicBlock bb2) { - bb1.getImmediateDominator() = bb2 + toBeTested(bb1.getScope()) and bb1.getImmediateDominator() = bb2 } query predicate controls(ConditionBasicBlock bb1, BasicBlock bb2, SuccessorType t) { - bb1.edgeDominates(bb2, t) + toBeTested(bb1.getScope()) and bb1.edgeDominates(bb2, t) } query predicate successor(ConditionBasicBlock bb1, BasicBlock bb2, SuccessorType t) { - bb1.getASuccessor(t) = bb2 + toBeTested(bb1.getScope()) and bb1.getASuccessor(t) = bb2 } query predicate joinBlockPredecessor(JoinBasicBlock bb1, BasicBlock bb2, int i) { - bb1.getJoinBlockPredecessor(i) = bb2 + toBeTested(bb1.getScope()) and bb1.getJoinBlockPredecessor(i) = bb2 } diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 463915258e82..b7300075dc3b 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -867,1626 +867,205 @@ localStep | main.rs:577:36:577:41 | ...::new(...) | main.rs:577:36:577:41 | MacroExpr | | main.rs:577:36:577:41 | [post] MacroExpr | main.rs:577:36:577:41 | [post] ...::new(...) | storeStep -| file://:0:0:0:0 | [summary] to write: Argument[0].Field[crate::option::Option::Some(0)] in lang:core::_::::zip_with | Some | file://:0:0:0:0 | [post] [summary param] 0 in lang:core::_::::zip_with | -| file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[0].Reference in lang:alloc::_::::retain_mut | &ref | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[0] in lang:alloc::_::::retain_mut | -| file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[0].Reference in lang:core::_::::take_if | &ref | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[0] in lang:core::_::::take_if | -| file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[0].Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::default_tcp_http_server | &ref | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::default_tcp_http_server | -| file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[0].Reference in repo:https://github.com/servo/rust-smallvec:smallvec::_::::retain | &ref | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[0] in repo:https://github.com/servo/rust-smallvec:smallvec::_::::retain | -| file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[1].Reference in lang:core::_::crate::num::flt2dec::to_exact_exp_str | &ref | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[1] in lang:core::_::crate::num::flt2dec::to_exact_exp_str | -| file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[1].Reference in lang:core::_::crate::num::flt2dec::to_exact_fixed_str | &ref | file://:0:0:0:0 | [summary] to write: Argument[0].Parameter[1] in lang:core::_::crate::num::flt2dec::to_exact_fixed_str | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:alloc::_::<_ as crate::borrow::ToOwned>::clone_into | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:alloc::_::<_ as crate::borrow::ToOwned>::clone_into | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:alloc::_::crate::collections::btree::mem::replace | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:alloc::_::crate::collections::btree::mem::replace | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:alloc::_::crate::collections::btree::mem::take_mut | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:alloc::_::crate::collections::btree::mem::take_mut | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:core::_::crate::mem::replace | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:core::_::crate::mem::replace | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:core::_::crate::ptr::replace | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:core::_::crate::ptr::replace | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:core::_::crate::ptr::write | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:core::_::crate::ptr::write | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:core::_::crate::ptr::write_unaligned | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:core::_::crate::ptr::write_unaligned | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:core::_::crate::ptr::write_volatile | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:core::_::crate::ptr::write_volatile | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:proc_macro::_::<&[u8] as crate::bridge::rpc::DecodeMut>::decode | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:proc_macro::_::<&[u8] as crate::bridge::rpc::DecodeMut>::decode | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:proc_macro::_::::decode | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:proc_macro::_::::decode | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:proc_macro::_::::decode | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:proc_macro::_::::decode | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:proc_macro::_::::decode | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:proc_macro::_::::decode | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_:::::read_to_end | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_:::::read_to_end | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_:::::read_to_end | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_:::::read_to_end | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read_exact | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read_exact | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read_to_end | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read_to_end | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read_to_string | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read_to_string | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::advance_slices | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::advance_slices | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::advance_slices | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::advance_slices | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read_exact | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read_exact | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read_to_string | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read_to_string | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read_exact | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read_exact | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read_to_string | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read_to_string | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read_exact | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read_exact | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read_to_end | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read_to_end | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::read_to_string | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::::read_to_string | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::crate::io::BufRead::read_line | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::crate::io::BufRead::read_line | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::crate::io::Read::read | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::crate::io::Read::read | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::crate::io::Read::read_exact | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::crate::io::Read::read_exact | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::crate::io::Read::read_to_end | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::crate::io::Read::read_to_end | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::crate::io::Read::read_to_string | &ref | file://:0:0:0:0 | [post] [summary param] 0 in lang:std::_::crate::io::Read::read_to_string | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::arch::generic::memchr::count_byte_by_byte | &ref | file://:0:0:0:0 | [post] [summary param] 0 in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::arch::generic::memchr::count_byte_by_byte | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::arch::generic::memchr::fwd_byte_by_byte | &ref | file://:0:0:0:0 | [post] [summary param] 0 in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::arch::generic::memchr::fwd_byte_by_byte | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::peek | &ref | file://:0:0:0:0 | [post] [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::peek | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_read | &ref | file://:0:0:0:0 | [post] [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_read | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_read_buf | &ref | file://:0:0:0:0 | [post] [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_read_buf | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_buf_read_ext::AsyncBufReadExt::read_line | &ref | file://:0:0:0:0 | [post] [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_buf_read_ext::AsyncBufReadExt::read_line | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read | &ref | file://:0:0:0:0 | [post] [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_buf | &ref | file://:0:0:0:0 | [post] [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_buf | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_exact | &ref | file://:0:0:0:0 | [post] [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_exact | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_to_end | &ref | file://:0:0:0:0 | [post] [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_to_end | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_to_string | &ref | file://:0:0:0:0 | [post] [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_to_string | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference.Reference in lang:proc_macro::_::<&[u8] as crate::bridge::rpc::DecodeMut>::decode | &ref | file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:proc_macro::_::<&[u8] as crate::bridge::rpc::DecodeMut>::decode | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference.Reference in lang:proc_macro::_::::decode | &ref | file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:proc_macro::_::::decode | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference.Reference in lang:proc_macro::_::::decode | &ref | file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:proc_macro::_::::decode | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference.Reference in lang:proc_macro::_::::decode | &ref | file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:proc_macro::_::::decode | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference.Reference in lang:std::_::::advance_slices | &ref | file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::advance_slices | -| file://:0:0:0:0 | [summary] to write: Argument[0].Reference.Reference in lang:std::_::::advance_slices | &ref | file://:0:0:0:0 | [summary] to write: Argument[0].Reference in lang:std::_::::advance_slices | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in lang:proc_macro::_::crate::bridge::client::state::set | function argument at 0 | file://:0:0:0:0 | [post] [summary param] 1 in lang:proc_macro::_::crate::bridge::client::state::set | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in lang:core::_::::filter_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in lang:core::_::::filter_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in lang:core::_::::map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in lang:core::_::::map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in lang:core::_::::filter_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in lang:core::_::::filter_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in lang:core::_::::map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in lang:core::_::::map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in lang:std::_::::wait_while | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in lang:std::_::::wait_while | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::crate::derive::form_field::first_duplicate | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::crate::derive::form_field::first_duplicate | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::downgrade_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::downgrade_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_downgrade_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_downgrade_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::downgrade_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::downgrade_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_downgrade_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_downgrade_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[1].Reference in lang:core::_::crate::slice::sort::stable::sort | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[1] in lang:core::_::crate::slice::sort::stable::sort | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[1].Reference in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::tests::substring::prop::prefix_is_substring | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[1] in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::tests::substring::prop::prefix_is_substring | -| file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[1].Reference in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::tests::substring::prop::suffix_is_substring | &ref | file://:0:0:0:0 | [summary] to write: Argument[1].Parameter[1] in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::tests::substring::prop::suffix_is_substring | -| file://:0:0:0:0 | [summary] to write: Argument[1].Reference in lang:core::_::<_ as crate::clone::uninit::CopySpec>::clone_one | &ref | file://:0:0:0:0 | [post] [summary param] 1 in lang:core::_::<_ as crate::clone::uninit::CopySpec>::clone_one | -| file://:0:0:0:0 | [summary] to write: Argument[1].Reference in lang:std::_::crate::io::BufRead::read_until | &ref | file://:0:0:0:0 | [post] [summary param] 1 in lang:std::_::crate::io::BufRead::read_until | -| file://:0:0:0:0 | [summary] to write: Argument[1].Reference in repo:https://github.com/tokio-rs/tokio:tokio-stream::_::::extend | &ref | file://:0:0:0:0 | [post] [summary param] 1 in repo:https://github.com/tokio-rs/tokio:tokio-stream::_::::extend | -| file://:0:0:0:0 | [summary] to write: Argument[1].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_buf_read_ext::AsyncBufReadExt::read_until | &ref | file://:0:0:0:0 | [post] [summary param] 1 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_buf_read_ext::AsyncBufReadExt::read_until | -| file://:0:0:0:0 | [summary] to write: Argument[1].Reference.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio-stream::_::::extend | Err | file://:0:0:0:0 | [summary] to write: Argument[1].Reference in repo:https://github.com/tokio-rs/tokio:tokio-stream::_::::extend | -| file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0].Reference in lang:core::_::crate::cmp::max_by | &ref | file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0] in lang:core::_::crate::cmp::max_by | -| file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0].Reference in lang:core::_::crate::cmp::max_by_key | &ref | file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0] in lang:core::_::crate::cmp::max_by_key | -| file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0].Reference in lang:core::_::crate::cmp::min_by | &ref | file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0] in lang:core::_::crate::cmp::min_by | -| file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0].Reference in lang:core::_::crate::cmp::min_by_key | &ref | file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0] in lang:core::_::crate::cmp::min_by_key | -| file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0].Reference in lang:core::_::crate::cmp::minmax_by | &ref | file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0] in lang:core::_::crate::cmp::minmax_by | -| file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0].Reference in lang:core::_::crate::cmp::minmax_by_key | &ref | file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0] in lang:core::_::crate::cmp::minmax_by_key | -| file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0].Reference in lang:std::_::::wait_timeout_while | &ref | file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[0] in lang:std::_::::wait_timeout_while | -| file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[1].Reference in lang:core::_::crate::cmp::max_by | &ref | file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[1] in lang:core::_::crate::cmp::max_by | -| file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[1].Reference in lang:core::_::crate::cmp::min_by | &ref | file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[1] in lang:core::_::crate::cmp::min_by | -| file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[1].Reference in lang:core::_::crate::cmp::minmax_by | &ref | file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[1] in lang:core::_::crate::cmp::minmax_by | -| file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[1].Reference in lang:core::_::crate::slice::sort::shared::smallsort::sort4_stable | &ref | file://:0:0:0:0 | [summary] to write: Argument[2].Parameter[1] in lang:core::_::crate::slice::sort::shared::smallsort::sort4_stable | -| file://:0:0:0:0 | [summary] to write: Argument[3].Parameter[1].Reference in lang:core::_::crate::slice::sort::stable::drift::sort | &ref | file://:0:0:0:0 | [summary] to write: Argument[3].Parameter[1] in lang:core::_::crate::slice::sort::stable::drift::sort | -| file://:0:0:0:0 | [summary] to write: Argument[3].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::finish_string_read | &ref | file://:0:0:0:0 | [post] [summary param] 3 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::finish_string_read | -| file://:0:0:0:0 | [summary] to write: Argument[4].Parameter[1].Reference in lang:core::_::crate::slice::sort::stable::quicksort::quicksort | &ref | file://:0:0:0:0 | [summary] to write: Argument[4].Parameter[1] in lang:core::_::crate::slice::sort::stable::quicksort::quicksort | -| file://:0:0:0:0 | [summary] to write: Argument[self].Element in lang:core::_::::for_each | element | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::for_each | -| file://:0:0:0:0 | [summary] to write: Argument[self].Element in lang:core::_::::map | element | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::map | -| file://:0:0:0:0 | [summary] to write: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::for_each | element | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::crate::iter::traits::iterator::Iterator::for_each | -| file://:0:0:0:0 | [summary] to write: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::map | element | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::crate::iter::traits::iterator::Iterator::map | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-http::_::::write_u64 | tuple.0 | file://:0:0:0:0 | [post] [summary param] self in repo:https://github.com/actix/actix-web:actix-http::_::::write_u64 | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[0] in repo:https://github.com/serde-rs/serde:serde::_::::visit_string | tuple.0 | file://:0:0:0:0 | [post] [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::visit_string | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[0].Reference in repo:https://github.com/serde-rs/serde:serde::_::::visit_string | &ref | file://:0:0:0:0 | [summary] to write: Argument[self].Field[0] in repo:https://github.com/serde-rs/serde:serde::_::::visit_string | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::and_then | Some | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::and_then | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::is_none_or | Some | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::is_none_or | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::is_some_and | Some | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::is_some_and | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::map_or | Some | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::map_or | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::map_or_else | Some | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::map_or_else | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::zip_with | Some | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::zip_with | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::is_err_and | Err | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::is_err_and | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::map_err | Err | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::map_err | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::map_or_else | Err | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::map_or_else | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::or_else | Err | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::or_else | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::unwrap_or_else | Err | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::unwrap_or_else | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::and_then | Ok | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::and_then | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::is_ok_and | Ok | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::is_ok_and | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::map_or | Ok | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::map_or | -| file://:0:0:0:0 | [summary] to write: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::map_or_else | Ok | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::map_or_else | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:alloc::_::::add_assign | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:alloc::_::::add_assign | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:alloc::_::::clone_from | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:alloc::_::::clone_from | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::get_or_insert | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::get_or_insert | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::insert | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::insert | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::replace | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::replace | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::clone_from | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::clone_from | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::clone_from | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:core::_::::clone_from | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:std::_::<&[u8] as crate::io::BufRead>::consume | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:std::_::<&[u8] as crate::io::BufRead>::consume | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:std::_::<&[u8] as crate::io::Read>::read_buf_exact | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:std::_::<&[u8] as crate::io::Read>::read_buf_exact | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:std::_::<&[u8] as crate::io::Read>::read_exact | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:std::_::<&[u8] as crate::io::Read>::read_exact | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:std::_::<&[u8] as crate::io::Read>::read_to_end | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:std::_::<&[u8] as crate::io::Read>::read_to_end | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:std::_::<&[u8] as crate::io::Read>::read_to_string | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:std::_::<&[u8] as crate::io::Read>::read_to_string | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:std::_::<&[u8] as crate::io::copy::BufferedReaderSpec>::copy_to | &ref | file://:0:0:0:0 | [post] [summary param] self in lang:std::_::<&[u8] as crate::io::copy::BufferedReaderSpec>::copy_to | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in repo:https://github.com/matklad/once_cell:once_cell::_::::clone_from | &ref | file://:0:0:0:0 | [post] [summary param] self in repo:https://github.com/matklad/once_cell:once_cell::_::::clone_from | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in repo:https://github.com/matklad/once_cell:once_cell::_::::clone_from | &ref | file://:0:0:0:0 | [post] [summary param] self in repo:https://github.com/matklad/once_cell:once_cell::_::::clone_from | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::<&[u8] as crate::io::async_buf_read::AsyncBufRead>::consume | &ref | file://:0:0:0:0 | [post] [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::<&[u8] as crate::io::async_buf_read::AsyncBufRead>::consume | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Field[crate::option::Option::Some(0)] in lang:core::_::::get_or_insert | Some | file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::get_or_insert | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Field[crate::option::Option::Some(0)] in lang:core::_::::insert | Some | file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::insert | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Field[crate::option::Option::Some(0)] in lang:core::_::::replace | Some | file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:core::_::::replace | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Reference in lang:std::_::<&[u8] as crate::io::BufRead>::consume | &ref | file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:std::_::<&[u8] as crate::io::BufRead>::consume | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Reference in lang:std::_::<&[u8] as crate::io::Read>::read_buf_exact | &ref | file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:std::_::<&[u8] as crate::io::Read>::read_buf_exact | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Reference in lang:std::_::<&[u8] as crate::io::Read>::read_exact | &ref | file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:std::_::<&[u8] as crate::io::Read>::read_exact | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Reference in lang:std::_::<&[u8] as crate::io::Read>::read_to_end | &ref | file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:std::_::<&[u8] as crate::io::Read>::read_to_end | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Reference in lang:std::_::<&[u8] as crate::io::Read>::read_to_string | &ref | file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:std::_::<&[u8] as crate::io::Read>::read_to_string | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Reference in lang:std::_::<&[u8] as crate::io::copy::BufferedReaderSpec>::copy_to | &ref | file://:0:0:0:0 | [summary] to write: Argument[self].Reference in lang:std::_::<&[u8] as crate::io::copy::BufferedReaderSpec>::copy_to | -| file://:0:0:0:0 | [summary] to write: Argument[self].Reference.Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::<&[u8] as crate::io::async_buf_read::AsyncBufRead>::consume | &ref | file://:0:0:0:0 | [summary] to write: Argument[self].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::<&[u8] as crate::io::async_buf_read::AsyncBufRead>::consume | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Element in lang:core::_::::collect | element | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::collect | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Element in lang:core::_::crate::cmp::minmax | element | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::cmp::minmax | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Element in lang:core::_::crate::cmp::minmax_by | element | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::cmp::minmax_by | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Element in lang:core::_::crate::cmp::minmax_by_key | element | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::cmp::minmax_by_key | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Element in lang:core::_::crate::iter::traits::iterator::Iterator::collect | element | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::iter::traits::iterator::Iterator::collect | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::<[_]>::align_to | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<[_]>::align_to | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::<[_]>::align_to_mut | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<[_]>::align_to_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::<[_]>::partition_dedup_by | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<[_]>::partition_dedup_by | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::div_rem_small | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::div_rem_small | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::div_rem_small | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::div_rem_small | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::unzip | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unzip | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::overflowing_div | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::overflowing_div | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::overflowing_div_euclid | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::overflowing_div_euclid | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::overflowing_div | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::overflowing_div | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::overflowing_div_euclid | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::overflowing_div_euclid | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::overflowing_div | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::overflowing_div | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::overflowing_div_euclid | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::overflowing_div_euclid | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::overflowing_div | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::overflowing_div | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::overflowing_div_euclid | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::overflowing_div_euclid | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::overflowing_div | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::overflowing_div | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::overflowing_div_euclid | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::overflowing_div_euclid | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::overflowing_div | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::overflowing_div | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::overflowing_div_euclid | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::overflowing_div_euclid | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::split_at_byte | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_http::_::::split_at_byte | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in repo:https://github.com/serde-rs/serde:serde::_::crate::de::value::private::unit_only | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/serde-rs/serde:serde::_::crate::de::value::private::unit_only | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0].Field[crate::option::Option::Some(0)] in lang:core::_::::unzip | Some | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[0] in lang:core::_::::unzip | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[1] in lang:alloc::_::::find_lower_bound_edge | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::find_lower_bound_edge | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[1] in lang:alloc::_::::find_upper_bound_edge | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::find_upper_bound_edge | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[1] in lang:core::_::::unzip | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::unzip | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[1] in lang:core::_::crate::slice::sort::shared::find_existing_run | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::slice::sort::shared::find_existing_run | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[1] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::split_at_byte | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_http::_::::split_at_byte | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[1] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::try_reuse | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::try_reuse | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[1].Field[crate::option::Option::Some(0)] in lang:core::_::::unzip | Some | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[1] in lang:core::_::::unzip | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[1].Reference in repo:https://github.com/rwf2/Rocket:rocket_http::_::::split_at_byte | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[1] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::split_at_byte | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::then | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::then | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::then_some | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::then_some | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::nth_back | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::nth_back | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::nth_back | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::nth_back | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::get | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::get | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::get_mut | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::get_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::clone | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::clone | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::from | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::from | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::from_output | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::from_output | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::and_then | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::and_then | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::as_mut | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::as_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::as_ref | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::cloned | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::cloned | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::copied | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::copied | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::zip | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::zip | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::zip_with | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::zip_with | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::nth | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::nth | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::nth | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::nth | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::nth | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::nth | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::err | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::err | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::ok | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::ok | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::transpose | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::transpose | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::last | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::last | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::next | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::next | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::nth | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::nth | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::nth | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::nth | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::matching | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::matching | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_abs | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_abs | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_next_multiple_of | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_next_multiple_of | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_abs | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_abs | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_next_multiple_of | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_next_multiple_of | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_abs | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_abs | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_next_multiple_of | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_next_multiple_of | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_abs | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_abs | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_next_multiple_of | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_next_multiple_of | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_abs | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_abs | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_next_multiple_of | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_next_multiple_of | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_abs | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_abs | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_next_multiple_of | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_next_multiple_of | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_next_multiple_of | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_next_multiple_of | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_next_multiple_of | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_next_multiple_of | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_next_multiple_of | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_next_multiple_of | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_next_multiple_of | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_next_multiple_of | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_next_multiple_of | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_next_multiple_of | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::checked_next_multiple_of | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::checked_next_multiple_of | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::crate::iter::traits::iterator::Iterator::next | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::iter::traits::iterator::Iterator::next | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::crate::iter::traits::iterator::Iterator::nth | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::crate::iter::traits::iterator::Iterator::nth | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:proc_macro::_::::next | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:proc_macro::_::::next | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:std::_::::next | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::next | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/BurntSushi/memchr:memchr::_::::find_raw | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::arch::generic::memchr::fwd_byte_by_byte | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::arch::generic::memchr::fwd_byte_by_byte | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in repo:https://github.com/clap-rs/clap:clap_builder::_::::insert | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/clap-rs/clap:clap_builder::_::::insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::ty | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::ty | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::source | Some | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::source | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)].Field[0] in lang:core::_::::zip | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::zip | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)].Field[0] in lang:core::_::::matching | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::matching | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)].Field[1] in lang:core::_::::zip | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::zip | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)].Field[1] in lang:core::_::::matching | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::matching | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::result::Result::Err(0)] in lang:core::_::::transpose | Err | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::transpose | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::result::Result::Ok(0)] in lang:core::_::::transpose | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::transpose | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::result::Result::Ok(0)] in lang:std::_::::next | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:std::_::::next | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)].Reference in lang:core::_::::from | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::from | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)].Reference in lang:core::_::::as_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::as_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)].Reference in lang:core::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in lang:core::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)].Reference in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::arch::generic::memchr::fwd_byte_by_byte | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::arch::generic::memchr::fwd_byte_by_byte | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)].Reference in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::source | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::option::Option::Some(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::source | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:alloc::_::::try_from | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::try_from | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:alloc::_::::downcast | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::downcast | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:alloc::_::::left_kv | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::left_kv | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:alloc::_::::right_kv | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::right_kv | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:alloc::_::::try_from | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::try_from | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:alloc::_::::downcast | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::downcast | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:alloc::_::::try_unwrap | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::try_unwrap | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:alloc::_::::try_from | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::try_from | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:alloc::_::::downcast | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::downcast | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:alloc::_::::try_unwrap | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::try_unwrap | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:alloc::_::::push_within_capacity | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::push_within_capacity | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:alloc::_::::downcast | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::downcast | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::filter_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::filter_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::filter_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::filter_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::set | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::set | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::try_insert | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::try_insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::ok_or | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::ok_or | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::ok_or_else | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::ok_or_else | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::transpose | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::transpose | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::and | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::and | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::and_then | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::and_then | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::as_deref | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::as_deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::as_deref_mut | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::as_deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::as_mut | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::as_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::as_ref | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::cloned | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::cloned | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::copied | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::copied | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::flatten | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::flatten | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::map_err | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::map_err | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::::write | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::write | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::::write | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::write | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::::write | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::write | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::::set | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::set | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::::try_insert | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::try_insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::::into_string | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::into_string | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::crate::sys_common::ignore_notfound | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::crate::sys_common::ignore_notfound | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::crate::thread::current::set_current | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::crate::thread::current::set_current | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo::pastebin::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo::pastebin::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/actix/actix-web:actix-http::_::::try_into_bytes | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-http::_::::try_into_bytes | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/actix/actix-web:actix-http::_::::try_into_bytes | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-http::_::::try_into_bytes | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/actix/actix-web:actix-http::_::::try_into_bytes | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-http::_::::try_into_bytes | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/hyperium/hyper:hyper::_::::send_request | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/hyperium/hyper:hyper::_::::send_request | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/hyperium/hyper:hyper::_::::try_send_request | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/hyperium/hyper:hyper::_::::try_send_request | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/hyperium/hyper:hyper::_::::send | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/hyperium/hyper:hyper::_::::send | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/hyperium/hyper:hyper::_::::try_send | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/hyperium/hyper:hyper::_::::try_send | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/hyperium/hyper:hyper::_::::recv_msg | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/hyperium/hyper:hyper::_::::recv_msg | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/matklad/once_cell:once_cell::_::::set | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/matklad/once_cell:once_cell::_::::set | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/matklad/once_cell:once_cell::_::::try_insert | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/matklad/once_cell:once_cell::_::::try_insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/matklad/once_cell:once_cell::_::::set | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/matklad/once_cell:once_cell::_::::set | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/matklad/once_cell:once_cell::_::::try_insert | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/matklad/once_cell:once_cell::_::::try_insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::success_or | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::success_or | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::success_or_else | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::success_or_else | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::respond_to | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::respond_to | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/servo/rust-smallvec:smallvec::_::::into_inner | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/servo/rust-smallvec:smallvec::_::::into_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio-util::_::::try_set | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio-util::_::::try_set | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio-util::_::::insert | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio-util::_::::insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_into_std | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_into_std | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_into_panic | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_into_panic | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::insert | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_set | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_set | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_downgrade_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_downgrade_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_downgrade_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_downgrade_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::finish_string_read | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::finish_string_read | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::util::typeid::try_transmute | Err | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::util::typeid::try_transmute | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio-util::_::::insert | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio-util::_::::insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::insert | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)].Field[1] in lang:core::_::::try_insert | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::try_insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)].Field[1] in lang:std::_::::try_insert | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:std::_::::try_insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)].Field[1] in repo:https://github.com/matklad/once_cell:once_cell::_::::try_insert | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/matklad/once_cell:once_cell::_::::try_insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)].Field[1] in repo:https://github.com/matklad/once_cell:once_cell::_::::try_insert | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in repo:https://github.com/matklad/once_cell:once_cell::_::::try_insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)].Reference in lang:core::_::::as_deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::as_deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)].Reference in lang:core::_::::as_deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::as_deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)].Reference in lang:core::_::::as_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::as_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)].Reference in lang:core::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Err(0)] in lang:core::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:alloc::_::::search_tree_for_bifurcation | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::search_tree_for_bifurcation | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:alloc::_::::parse | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::parse | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::align_to | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::align_to | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::array | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::array | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::extend | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::extend | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::extend_packed | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::extend_packed | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::from_size_align | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::from_size_align | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::repeat | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::repeat | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::repeat_packed | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::repeat_packed | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::ok_or | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::ok_or | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::ok_or_else | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::ok_or_else | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::transpose | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::transpose | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::from_output | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::from_output | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::as_mut | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::as_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::as_ref | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::cloned | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::cloned | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::copied | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::copied | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::map | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::map | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::map_err | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::map_err | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::or | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::or | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::or_else | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::or_else | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::parse | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::parse | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::<&[u8] as crate::io::BufRead>::fill_buf | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::<&[u8] as crate::io::BufRead>::fill_buf | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::::fill_buf | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::fill_buf | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::::try_clone | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::try_clone | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::::canonicalize | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::canonicalize | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::::wait | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::wait | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::::wait_timeout | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::wait_timeout | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::::wait_timeout_ms | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::wait_timeout_ms | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::::wait_timeout_while | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::wait_timeout_while | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::::wait_while | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::wait_while | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::::try_with | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::try_with | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::crate::sys::pal::unix::cvt | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::crate::sys::pal::unix::cvt | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo::serde_test_suite::_::::variant_seed | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo::serde_test_suite::_::::variant_seed | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo::serde_test_suite::_::::visit_byte_buf | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo::serde_test_suite::_::::visit_byte_buf | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-http::_::<&crate::header::value::HeaderValue as crate::header::into_value::TryIntoHeaderValue>::try_into_value | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-http::_::<&crate::header::value::HeaderValue as crate::header::into_value::TryIntoHeaderValue>::try_into_value | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-http::_::::try_into_bytes | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-http::_::::try_into_bytes | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-http::_::::try_into_value | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-http::_::::try_into_value | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-web::_::::bind | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::bind | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-web::_::::bind_auto_h2c | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::bind_auto_h2c | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-web::_::::bind_openssl | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::bind_openssl | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-web::_::::bind_rustls | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::bind_rustls | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-web::_::::bind_rustls_0_22 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::bind_rustls_0_22 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-web::_::::bind_rustls_0_23 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::bind_rustls_0_23 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-web::_::::bind_rustls_021 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::bind_rustls_021 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-web::_::::bind_uds | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::bind_uds | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-web::_::::listen | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::listen | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-web::_::::listen_auto_h2c | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::listen_auto_h2c | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:actix-web::_::::listen_uds | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::listen_uds | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/actix/actix-web:awc::_::::query | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:awc::_::::query | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/clap-rs/clap:clap_builder::_::::parse | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/clap-rs/clap:clap_builder::_::::parse | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/matklad/once_cell:once_cell::_::::try_insert | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/matklad/once_cell:once_cell::_::::try_insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::<&str as crate::request::from_param::FromParam>::from_param | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::<&str as crate::request::from_param::FromParam>::from_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::map_base | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::map_base | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::map_base | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::map_base | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/rwf2/Rocket:rocket::_::::from_segments | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::from_segments | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::upgrade_param | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::upgrade_param | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::head_err_or | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::head_err_or | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/rwf2/Rocket:rocket_http::_::crate::parse::uri::scheme_from_str | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_http::_::crate::parse::uri::scheme_from_str | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::into_url | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::into_url | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::error_for_status | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::error_for_status | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::error_for_status_ref | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::error_for_status_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::bytes | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::bytes | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text_with_charset | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text_with_charset | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::into_proxy_scheme | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::into_proxy_scheme | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/serde-rs/serde:serde::_::::visit_bool | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/serde-rs/serde:serde::_::::visit_bool | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/serde-rs/serde:serde::_::::visit_borrowed_bytes | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/serde-rs/serde:serde::_::::visit_borrowed_bytes | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/serde-rs/serde:serde::_::::visit_char | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/serde-rs/serde:serde::_::::visit_char | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/serde-rs/serde:serde::_::::visit_borrowed_str | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/serde-rs/serde:serde::_::::visit_borrowed_str | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/serde-rs/serde:serde::_::::visit_string | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/serde-rs/serde:serde::_::::visit_string | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/servo/rust-url:url::_::::parse | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/servo/rust-url:url::_::::parse | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::<&[u8] as crate::io::async_buf_read::AsyncBufRead>::poll_fill_buf | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::<&[u8] as crate::io::async_buf_read::AsyncBufRead>::poll_fill_buf | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::wait | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::wait | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::wait_timeout | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::wait_timeout | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::finish_string_read | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::finish_string_read | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::read_line_internal | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::read_line_internal | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_to_end::read_to_end_internal | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_to_end::read_to_end_internal | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_until::read_until_internal | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_until::read_until_internal | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::context::budget | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::context::budget | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)].Field[0] in lang:alloc::_::::search_tree_for_bifurcation | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:alloc::_::::search_tree_for_bifurcation | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)].Field[0] in lang:core::_::::extend | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::extend | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)].Field[0] in lang:core::_::::repeat | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::repeat | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)].Field[0] in lang:std::_::::wait_timeout | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::::wait_timeout | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)].Field[0] in lang:std::_::::wait_timeout_ms | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::::wait_timeout_ms | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)].Field[0] in lang:std::_::::wait_timeout_while | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:std::_::::wait_timeout_while | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::wait_timeout | tuple.0 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::wait_timeout | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)].Field[1] in repo::serde_test_suite::_::::variant_seed | tuple.1 | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo::serde_test_suite::_::::variant_seed | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)] in lang:core::_::::transpose | Some | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::transpose | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)].Reference in lang:core::_::::as_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::as_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)].Reference in lang:core::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in lang:core::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)].Reference in repo:https://github.com/matklad/once_cell:once_cell::_::::try_insert | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue.Field[crate::result::Result::Ok(0)] in repo:https://github.com/matklad/once_cell:once_cell::_::::try_insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::bytes | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::bytes | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::bytes | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::bytes | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text_with_charset | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text_with_charset | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::::next_line | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::next_line | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::::next_segment | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::next_segment | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_buf_read_ext::AsyncBufReadExt::fill_buf | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_buf_read_ext::AsyncBufReadExt::fill_buf | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f32 | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f32 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f32_le | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f32_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f64 | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f64 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f64_le | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f64_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i8 | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i8 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i8_le | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i8_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i16 | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i16 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i16_le | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i16_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i32 | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i32 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i32_le | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i32_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i64 | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i64 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i64_le | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i64_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i128 | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i128 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i128_le | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i128_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u8 | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u8 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u8_le | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u8_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u16 | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u16 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u16_le | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u16_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u32 | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u32 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u32_le | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u32_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u64 | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u64 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u64_le | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u64_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u128 | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u128 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u128_le | future | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u128_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::bytes | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::bytes | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::bytes | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::bytes | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text_with_charset | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::text_with_charset | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::next_line | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::::next_line | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::next_segment | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::::next_segment | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_buf_read_ext::AsyncBufReadExt::fill_buf | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_buf_read_ext::AsyncBufReadExt::fill_buf | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f32 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f32 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f32_le | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f32_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f64 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f64 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f64_le | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_f64_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i8 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i8 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i8_le | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i8_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i16 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i16 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i16_le | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i16_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i32 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i32 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i32_le | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i32_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i64 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i64 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i64_le | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i64_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i128 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i128 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i128_le | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_i128_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u8 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u8 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u8_le | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u8_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u16 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u16 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u16_le | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u16_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u32 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u32 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u32_le | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u32_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u64 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u64 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u64_le | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u64_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u128 | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u128 | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u128_le | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue.Future in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::async_read_ext::AsyncReadExt::read_u128_le | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | Some | file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | Some | file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::chunk | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::next_line | Some | file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::next_line | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::next_segment | Some | file://:0:0:0:0 | [summary] to write: ReturnValue.Future.Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::::next_segment | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::borrow_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::borrow_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::as_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::as_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::allocator | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::allocator | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::as_mut_ptr | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::as_mut_ptr | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::as_ptr | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::as_ptr | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::borrow_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::borrow_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::as_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::as_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::index | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::index | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::index_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::index_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::as_bytes | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::as_bytes | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::as_c_str | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::as_c_str | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::borrow_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::borrow_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::as_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::as_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::borrow_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::borrow_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::trim | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::trim | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:alloc::_::::borrow_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::::borrow_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::<&_ as crate::borrow::Borrow>::borrow | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<&_ as crate::borrow::Borrow>::borrow | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::<&mut _ as crate::borrow::Borrow>::borrow | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<&mut _ as crate::borrow::Borrow>::borrow | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::<&mut _ as crate::borrow::BorrowMut>::borrow_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<&mut _ as crate::borrow::BorrowMut>::borrow_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::borrow | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::borrow | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::borrow_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::borrow_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::as_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::as_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::index | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::index | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::index_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::index_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::as_bytes | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::as_bytes | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::get_or_insert | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::get_or_insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::get_or_insert_default | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::get_or_insert_default | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::get_or_insert_with | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::get_or_insert_with | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::insert | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::insert | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::trim | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::trim | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::index | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::index | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:core::_::::index_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::::index_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:proc_macro::_::<&[u8] as crate::bridge::rpc::DecodeMut>::decode | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:proc_macro::_::<&[u8] as crate::bridge::rpc::DecodeMut>::decode | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::borrow | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::borrow | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::error | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::error | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_inner_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_inner_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in lang:std::_::::as_file_desc | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:std::_::::as_file_desc | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo::serde_test_suite::_::::get | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo::serde_test_suite::_::::get | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo::serde_test_suite::_::::second | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo::serde_test_suite::_::::second | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-files::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-files::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-router::_::<_ as crate::resource_path::Resource>::resource_path | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-router::_::<_ as crate::resource_path::Resource>::resource_path | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::as_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::as_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/actix/actix-web:awc::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/actix/actix-web:awc::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/clap-rs/clap:clap_builder::_::::as_styled_str | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/clap-rs/clap:clap_builder::_::::as_styled_str | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/clap-rs/clap:clap_builder::_::::as_internal_str | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/clap-rs/clap:clap_builder::_::::as_internal_str | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/hyperium/hyper:hyper::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/hyperium/hyper:hyper::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/hyperium/hyper:hyper::_::::as_bytes | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/hyperium/hyper:hyper::_::::as_bytes | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rust-random/rand:rand_chacha::_::::as_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rust-random/rand:rand_chacha::_::::as_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rust-random/rand:rand_chacha::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rust-random/rand:rand_chacha::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates::_::::context | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates::_::::context | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::as_str | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::as_str | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::as_str | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::as_str | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::file | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::file | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::file_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::file_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::inner | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::inner | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket_http::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_http::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket_http::_::::media_type | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_http::_::::media_type | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket_http::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_http::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket_http::_::::media_type | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_http::_::::media_type | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket_http::_::::from_source | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_http::_::::from_source | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket_http::_::::borrow | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_http::_::::borrow | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket_http::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_http::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket_http::_::::as_str | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_http::_::::as_str | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/rwf2/Rocket:rocket_http::_::::deref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/rwf2/Rocket:rocket_http::_::::deref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/tokio-rs/tokio:tokio-util::_::::as_ref | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio-util::_::::as_ref | -| file://:0:0:0:0 | [summary] to write: ReturnValue.Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_inner_mut | &ref | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_inner_mut | -| main.rs:97:14:97:22 | source(...) | tuple.0 | main.rs:97:13:97:26 | TupleExpr | -| main.rs:97:25:97:25 | 2 | tuple.1 | main.rs:97:13:97:26 | TupleExpr | -| main.rs:103:14:103:14 | 2 | tuple.0 | main.rs:103:13:103:30 | TupleExpr | -| main.rs:103:17:103:26 | source(...) | tuple.1 | main.rs:103:13:103:30 | TupleExpr | -| main.rs:103:29:103:29 | 2 | tuple.2 | main.rs:103:13:103:30 | TupleExpr | -| main.rs:111:18:111:18 | 2 | tuple.0 | main.rs:111:17:111:31 | TupleExpr | -| main.rs:111:21:111:30 | source(...) | tuple.1 | main.rs:111:17:111:31 | TupleExpr | -| main.rs:114:11:114:20 | source(...) | tuple.0 | main.rs:114:5:114:5 | [post] a | -| main.rs:115:11:115:11 | 2 | tuple.1 | main.rs:115:5:115:5 | [post] a | -| main.rs:121:14:121:14 | 3 | tuple.0 | main.rs:121:13:121:27 | TupleExpr | -| main.rs:121:17:121:26 | source(...) | tuple.1 | main.rs:121:13:121:27 | TupleExpr | -| main.rs:122:14:122:14 | a | tuple.0 | main.rs:122:13:122:18 | TupleExpr | -| main.rs:122:17:122:17 | 3 | tuple.1 | main.rs:122:13:122:18 | TupleExpr | -| main.rs:137:24:137:32 | source(...) | Point.x | main.rs:137:13:137:40 | Point {...} | -| main.rs:137:38:137:38 | 2 | Point.y | main.rs:137:13:137:40 | Point {...} | -| main.rs:143:28:143:36 | source(...) | Point.x | main.rs:143:17:143:44 | Point {...} | -| main.rs:143:42:143:42 | 2 | Point.y | main.rs:143:17:143:44 | Point {...} | -| main.rs:145:11:145:20 | source(...) | Point.y | main.rs:145:5:145:5 | [post] p | -| main.rs:151:12:151:21 | source(...) | Point.x | main.rs:150:13:153:5 | Point {...} | -| main.rs:152:12:152:12 | 2 | Point.y | main.rs:150:13:153:5 | Point {...} | -| main.rs:166:16:169:9 | Point {...} | Point3D.plane | main.rs:165:13:171:5 | Point3D {...} | -| main.rs:167:16:167:16 | 2 | Point.x | main.rs:166:16:169:9 | Point {...} | -| main.rs:168:16:168:25 | source(...) | Point.y | main.rs:166:16:169:9 | Point {...} | -| main.rs:170:12:170:12 | 4 | Point3D.z | main.rs:165:13:171:5 | Point3D {...} | -| main.rs:180:16:180:32 | Point {...} | Point3D.plane | main.rs:179:13:182:5 | Point3D {...} | -| main.rs:180:27:180:27 | 2 | Point.x | main.rs:180:16:180:32 | Point {...} | -| main.rs:180:30:180:30 | y | Point.y | main.rs:180:16:180:32 | Point {...} | -| main.rs:181:12:181:12 | 4 | Point3D.z | main.rs:179:13:182:5 | Point3D {...} | -| main.rs:198:27:198:36 | source(...) | MyTupleStruct(0) | main.rs:198:13:198:40 | MyTupleStruct(...) | -| main.rs:198:39:198:39 | 2 | MyTupleStruct(1) | main.rs:198:13:198:40 | MyTupleStruct(...) | -| main.rs:214:27:214:36 | source(...) | Some | main.rs:214:14:214:37 | ...::Some(...) | -| main.rs:215:27:215:27 | 2 | Some | main.rs:215:14:215:28 | ...::Some(...) | -| main.rs:227:19:227:28 | source(...) | Some | main.rs:227:14:227:29 | Some(...) | -| main.rs:228:19:228:19 | 2 | Some | main.rs:228:14:228:20 | Some(...) | -| main.rs:240:19:240:28 | source(...) | Some | main.rs:240:14:240:29 | Some(...) | -| main.rs:245:19:245:28 | source(...) | Some | main.rs:245:14:245:29 | Some(...) | -| main.rs:248:19:248:19 | 0 | Some | main.rs:248:14:248:20 | Some(...) | -| main.rs:253:19:253:28 | source(...) | Some | main.rs:253:14:253:29 | Some(...) | -| main.rs:261:19:261:28 | source(...) | Some | main.rs:261:14:261:29 | Some(...) | -| main.rs:262:19:262:19 | 2 | Some | main.rs:262:14:262:20 | Some(...) | -| main.rs:266:10:266:10 | 0 | Some | main.rs:266:5:266:11 | Some(...) | -| main.rs:270:36:270:45 | source(...) | Ok | main.rs:270:33:270:46 | Ok(...) | -| main.rs:276:37:276:46 | source(...) | Err | main.rs:276:33:276:47 | Err(...) | -| main.rs:284:35:284:44 | source(...) | Ok | main.rs:284:32:284:45 | Ok(...) | -| main.rs:285:35:285:35 | 2 | Ok | main.rs:285:32:285:36 | Ok(...) | -| main.rs:286:36:286:45 | source(...) | Err | main.rs:286:32:286:46 | Err(...) | -| main.rs:293:8:293:8 | 0 | Ok | main.rs:293:5:293:9 | Ok(...) | -| main.rs:297:35:297:44 | source(...) | Ok | main.rs:297:32:297:45 | Ok(...) | -| main.rs:301:36:301:45 | source(...) | Err | main.rs:301:32:301:46 | Err(...) | -| main.rs:312:29:312:38 | source(...) | A | main.rs:312:14:312:39 | ...::A(...) | -| main.rs:313:29:313:29 | 2 | B | main.rs:313:14:313:30 | ...::B(...) | -| main.rs:330:16:330:25 | source(...) | A | main.rs:330:14:330:26 | A(...) | -| main.rs:331:16:331:16 | 2 | B | main.rs:331:14:331:17 | B(...) | -| main.rs:352:18:352:27 | source(...) | C | main.rs:351:14:353:5 | ...::C {...} | -| main.rs:354:41:354:41 | 2 | D | main.rs:354:14:354:43 | ...::D {...} | -| main.rs:372:18:372:27 | source(...) | C | main.rs:371:14:373:5 | C {...} | -| main.rs:374:27:374:27 | 2 | D | main.rs:374:14:374:29 | D {...} | -| main.rs:392:17:392:17 | 1 | element | main.rs:392:16:392:33 | [...] | -| main.rs:392:20:392:20 | 2 | element | main.rs:392:16:392:33 | [...] | -| main.rs:392:23:392:32 | source(...) | element | main.rs:392:16:392:33 | [...] | -| main.rs:396:17:396:26 | source(...) | element | main.rs:396:16:396:31 | [...; 10] | -| main.rs:400:17:400:17 | 1 | element | main.rs:400:16:400:24 | [...] | -| main.rs:400:20:400:20 | 2 | element | main.rs:400:16:400:24 | [...] | -| main.rs:400:23:400:23 | 3 | element | main.rs:400:16:400:24 | [...] | -| main.rs:406:17:406:17 | 1 | element | main.rs:406:16:406:33 | [...] | -| main.rs:406:20:406:20 | 2 | element | main.rs:406:16:406:33 | [...] | -| main.rs:406:23:406:32 | source(...) | element | main.rs:406:16:406:33 | [...] | -| main.rs:411:17:411:17 | 1 | element | main.rs:411:16:411:24 | [...] | -| main.rs:411:20:411:20 | 2 | element | main.rs:411:16:411:24 | [...] | -| main.rs:411:23:411:23 | 3 | element | main.rs:411:16:411:24 | [...] | -| main.rs:418:17:418:17 | 1 | element | main.rs:418:16:418:33 | [...] | -| main.rs:418:20:418:20 | 2 | element | main.rs:418:16:418:33 | [...] | -| main.rs:418:23:418:32 | source(...) | element | main.rs:418:16:418:33 | [...] | -| main.rs:429:24:429:24 | 1 | element | main.rs:429:23:429:31 | [...] | -| main.rs:429:27:429:27 | 2 | element | main.rs:429:23:429:31 | [...] | -| main.rs:429:30:429:30 | 3 | element | main.rs:429:23:429:31 | [...] | -| main.rs:432:18:432:27 | source(...) | element | main.rs:432:5:432:11 | [post] mut_arr | -| main.rs:444:41:444:67 | default_name | captured default_name | main.rs:444:41:444:67 | \|...\| ... | -| main.rs:479:15:479:24 | source(...) | element | main.rs:479:14:479:34 | [...] | -| main.rs:479:27:479:27 | 2 | element | main.rs:479:14:479:34 | [...] | -| main.rs:479:30:479:30 | 3 | element | main.rs:479:14:479:34 | [...] | -| main.rs:479:33:479:33 | 4 | element | main.rs:479:14:479:34 | [...] | -| main.rs:504:23:504:32 | source(...) | element | main.rs:504:22:504:42 | [...] | -| main.rs:504:35:504:35 | 2 | element | main.rs:504:22:504:42 | [...] | -| main.rs:504:38:504:38 | 3 | element | main.rs:504:22:504:42 | [...] | -| main.rs:504:41:504:41 | 4 | element | main.rs:504:22:504:42 | [...] | -| main.rs:519:18:519:18 | c | &ref | main.rs:519:17:519:18 | &c | -| main.rs:522:15:522:15 | b | &ref | main.rs:522:14:522:15 | &b | -| main.rs:545:27:545:27 | 0 | Some | main.rs:545:22:545:28 | Some(...) | +| main.rs:97:14:97:22 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:97:13:97:26 | TupleExpr | +| main.rs:97:25:97:25 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:97:13:97:26 | TupleExpr | +| main.rs:103:14:103:14 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:103:13:103:30 | TupleExpr | +| main.rs:103:17:103:26 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:103:13:103:30 | TupleExpr | +| main.rs:103:29:103:29 | 2 | file://:0:0:0:0 | tuple.2 | main.rs:103:13:103:30 | TupleExpr | +| main.rs:111:18:111:18 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:111:17:111:31 | TupleExpr | +| main.rs:111:21:111:30 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:111:17:111:31 | TupleExpr | +| main.rs:114:11:114:20 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:114:5:114:5 | [post] a | +| main.rs:115:11:115:11 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:115:5:115:5 | [post] a | +| main.rs:121:14:121:14 | 3 | file://:0:0:0:0 | tuple.0 | main.rs:121:13:121:27 | TupleExpr | +| main.rs:121:17:121:26 | source(...) | file://:0:0:0:0 | tuple.1 | main.rs:121:13:121:27 | TupleExpr | +| main.rs:122:14:122:14 | a | file://:0:0:0:0 | tuple.0 | main.rs:122:13:122:18 | TupleExpr | +| main.rs:122:17:122:17 | 3 | file://:0:0:0:0 | tuple.1 | main.rs:122:13:122:18 | TupleExpr | +| main.rs:137:24:137:32 | source(...) | main.rs:132:5:132:10 | Point.x | main.rs:137:13:137:40 | Point {...} | +| main.rs:137:38:137:38 | 2 | main.rs:133:5:133:10 | Point.y | main.rs:137:13:137:40 | Point {...} | +| main.rs:143:28:143:36 | source(...) | main.rs:132:5:132:10 | Point.x | main.rs:143:17:143:44 | Point {...} | +| main.rs:143:42:143:42 | 2 | main.rs:133:5:133:10 | Point.y | main.rs:143:17:143:44 | Point {...} | +| main.rs:145:11:145:20 | source(...) | main.rs:133:5:133:10 | Point.y | main.rs:145:5:145:5 | [post] p | +| main.rs:151:12:151:21 | source(...) | main.rs:132:5:132:10 | Point.x | main.rs:150:13:153:5 | Point {...} | +| main.rs:152:12:152:12 | 2 | main.rs:133:5:133:10 | Point.y | main.rs:150:13:153:5 | Point {...} | +| main.rs:166:16:169:9 | Point {...} | main.rs:160:5:160:16 | Point3D.plane | main.rs:165:13:171:5 | Point3D {...} | +| main.rs:167:16:167:16 | 2 | main.rs:132:5:132:10 | Point.x | main.rs:166:16:169:9 | Point {...} | +| main.rs:168:16:168:25 | source(...) | main.rs:133:5:133:10 | Point.y | main.rs:166:16:169:9 | Point {...} | +| main.rs:170:12:170:12 | 4 | main.rs:161:5:161:10 | Point3D.z | main.rs:165:13:171:5 | Point3D {...} | +| main.rs:180:16:180:32 | Point {...} | main.rs:160:5:160:16 | Point3D.plane | main.rs:179:13:182:5 | Point3D {...} | +| main.rs:180:27:180:27 | 2 | main.rs:132:5:132:10 | Point.x | main.rs:180:16:180:32 | Point {...} | +| main.rs:180:30:180:30 | y | main.rs:133:5:133:10 | Point.y | main.rs:180:16:180:32 | Point {...} | +| main.rs:181:12:181:12 | 4 | main.rs:161:5:161:10 | Point3D.z | main.rs:179:13:182:5 | Point3D {...} | +| main.rs:198:27:198:36 | source(...) | main.rs:195:22:195:24 | MyTupleStruct(0) | main.rs:198:13:198:40 | MyTupleStruct(...) | +| main.rs:198:39:198:39 | 2 | main.rs:195:27:195:29 | MyTupleStruct(1) | main.rs:198:13:198:40 | MyTupleStruct(...) | +| main.rs:214:27:214:36 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:214:14:214:37 | ...::Some(...) | +| main.rs:215:27:215:27 | 2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:215:14:215:28 | ...::Some(...) | +| main.rs:227:19:227:28 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:227:14:227:29 | Some(...) | +| main.rs:228:19:228:19 | 2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:228:14:228:20 | Some(...) | +| main.rs:240:19:240:28 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:240:14:240:29 | Some(...) | +| main.rs:245:19:245:28 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:245:14:245:29 | Some(...) | +| main.rs:248:19:248:19 | 0 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:248:14:248:20 | Some(...) | +| main.rs:253:19:253:28 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:253:14:253:29 | Some(...) | +| main.rs:261:19:261:28 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:261:14:261:29 | Some(...) | +| main.rs:262:19:262:19 | 2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:262:14:262:20 | Some(...) | +| main.rs:266:10:266:10 | 0 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:266:5:266:11 | Some(...) | +| main.rs:270:36:270:45 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:270:33:270:46 | Ok(...) | +| main.rs:276:37:276:46 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:537:9:537:55 | Err | main.rs:276:33:276:47 | Err(...) | +| main.rs:284:35:284:44 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:284:32:284:45 | Ok(...) | +| main.rs:285:35:285:35 | 2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:285:32:285:36 | Ok(...) | +| main.rs:286:36:286:45 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:537:9:537:55 | Err | main.rs:286:32:286:46 | Err(...) | +| main.rs:293:8:293:8 | 0 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:293:5:293:9 | Ok(...) | +| main.rs:297:35:297:44 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:297:32:297:45 | Ok(...) | +| main.rs:301:36:301:45 | source(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:537:9:537:55 | Err | main.rs:301:32:301:46 | Err(...) | +| main.rs:312:29:312:38 | source(...) | main.rs:307:7:307:9 | A | main.rs:312:14:312:39 | ...::A(...) | +| main.rs:313:29:313:29 | 2 | main.rs:308:7:308:9 | B | main.rs:313:14:313:30 | ...::B(...) | +| main.rs:330:16:330:25 | source(...) | main.rs:307:7:307:9 | A | main.rs:330:14:330:26 | A(...) | +| main.rs:331:16:331:16 | 2 | main.rs:308:7:308:9 | B | main.rs:331:14:331:17 | B(...) | +| main.rs:352:18:352:27 | source(...) | main.rs:346:9:346:20 | C | main.rs:351:14:353:5 | ...::C {...} | +| main.rs:354:41:354:41 | 2 | main.rs:347:9:347:20 | D | main.rs:354:14:354:43 | ...::D {...} | +| main.rs:372:18:372:27 | source(...) | main.rs:346:9:346:20 | C | main.rs:371:14:373:5 | C {...} | +| main.rs:374:27:374:27 | 2 | main.rs:347:9:347:20 | D | main.rs:374:14:374:29 | D {...} | +| main.rs:392:17:392:17 | 1 | file://:0:0:0:0 | element | main.rs:392:16:392:33 | [...] | +| main.rs:392:20:392:20 | 2 | file://:0:0:0:0 | element | main.rs:392:16:392:33 | [...] | +| main.rs:392:23:392:32 | source(...) | file://:0:0:0:0 | element | main.rs:392:16:392:33 | [...] | +| main.rs:396:17:396:26 | source(...) | file://:0:0:0:0 | element | main.rs:396:16:396:31 | [...; 10] | +| main.rs:400:17:400:17 | 1 | file://:0:0:0:0 | element | main.rs:400:16:400:24 | [...] | +| main.rs:400:20:400:20 | 2 | file://:0:0:0:0 | element | main.rs:400:16:400:24 | [...] | +| main.rs:400:23:400:23 | 3 | file://:0:0:0:0 | element | main.rs:400:16:400:24 | [...] | +| main.rs:406:17:406:17 | 1 | file://:0:0:0:0 | element | main.rs:406:16:406:33 | [...] | +| main.rs:406:20:406:20 | 2 | file://:0:0:0:0 | element | main.rs:406:16:406:33 | [...] | +| main.rs:406:23:406:32 | source(...) | file://:0:0:0:0 | element | main.rs:406:16:406:33 | [...] | +| main.rs:411:17:411:17 | 1 | file://:0:0:0:0 | element | main.rs:411:16:411:24 | [...] | +| main.rs:411:20:411:20 | 2 | file://:0:0:0:0 | element | main.rs:411:16:411:24 | [...] | +| main.rs:411:23:411:23 | 3 | file://:0:0:0:0 | element | main.rs:411:16:411:24 | [...] | +| main.rs:418:17:418:17 | 1 | file://:0:0:0:0 | element | main.rs:418:16:418:33 | [...] | +| main.rs:418:20:418:20 | 2 | file://:0:0:0:0 | element | main.rs:418:16:418:33 | [...] | +| main.rs:418:23:418:32 | source(...) | file://:0:0:0:0 | element | main.rs:418:16:418:33 | [...] | +| main.rs:429:24:429:24 | 1 | file://:0:0:0:0 | element | main.rs:429:23:429:31 | [...] | +| main.rs:429:27:429:27 | 2 | file://:0:0:0:0 | element | main.rs:429:23:429:31 | [...] | +| main.rs:429:30:429:30 | 3 | file://:0:0:0:0 | element | main.rs:429:23:429:31 | [...] | +| main.rs:432:18:432:27 | source(...) | file://:0:0:0:0 | element | main.rs:432:5:432:11 | [post] mut_arr | +| main.rs:444:41:444:67 | default_name | main.rs:441:9:441:20 | captured default_name | main.rs:444:41:444:67 | \|...\| ... | +| main.rs:479:15:479:24 | source(...) | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | +| main.rs:479:27:479:27 | 2 | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | +| main.rs:479:30:479:30 | 3 | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | +| main.rs:479:33:479:33 | 4 | file://:0:0:0:0 | element | main.rs:479:14:479:34 | [...] | +| main.rs:504:23:504:32 | source(...) | file://:0:0:0:0 | element | main.rs:504:22:504:42 | [...] | +| main.rs:504:35:504:35 | 2 | file://:0:0:0:0 | element | main.rs:504:22:504:42 | [...] | +| main.rs:504:38:504:38 | 3 | file://:0:0:0:0 | element | main.rs:504:22:504:42 | [...] | +| main.rs:504:41:504:41 | 4 | file://:0:0:0:0 | element | main.rs:504:22:504:42 | [...] | +| main.rs:519:18:519:18 | c | file://:0:0:0:0 | &ref | main.rs:519:17:519:18 | &c | +| main.rs:522:15:522:15 | b | file://:0:0:0:0 | &ref | main.rs:522:14:522:15 | &b | +| main.rs:545:27:545:27 | 0 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:545:22:545:28 | Some(...) | readStep -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::clone_from | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:alloc::_::::clone_from | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::allocator | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[0].Field[1] in lang:alloc::_::::allocator | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::as_mut_ptr | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:alloc::_::::as_mut_ptr | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::as_ptr | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:alloc::_::::as_ptr | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::into_inner | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:alloc::_::::into_inner | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::visit_nodes_in_order | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:alloc::_::::visit_nodes_in_order | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::fold | Ok | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Ok(0)] in lang:alloc::_::::fold | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::try_rfold | Ok | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Ok(0)] in lang:alloc::_::::try_rfold | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::try_rfold | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in lang:alloc::_::::try_rfold | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::try_fold | Ok | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Ok(0)] in lang:alloc::_::::try_fold | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::try_fold | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in lang:alloc::_::::try_fold | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::try_rfold | Ok | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Ok(0)] in lang:alloc::_::::try_rfold | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::try_rfold | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in lang:alloc::_::::try_rfold | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::try_fold | Ok | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Ok(0)] in lang:alloc::_::::try_fold | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::try_fold | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in lang:alloc::_::::try_fold | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::unwrap_or_clone | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:alloc::_::::unwrap_or_clone | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::unwrap_or_clone | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:alloc::_::::unwrap_or_clone | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::::from | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[0].Field[0] in lang:alloc::_::::from | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::crate::collections::btree::mem::replace | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:alloc::_::crate::collections::btree::mem::replace | -| file://:0:0:0:0 | [summary param] 0 in lang:alloc::_::crate::collections::btree::mem::take_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:alloc::_::crate::collections::btree::mem::take_mut | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::<_ as crate::array::SpecArrayClone>::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::<_ as crate::array::SpecArrayClone>::clone | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::<_ as crate::clone::uninit::CopySpec>::clone_one | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::<_ as crate::clone::uninit::CopySpec>::clone_one | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::then | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::then | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::update | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::update | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::filter_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::filter_map | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::map | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::filter_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::filter_map | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::map | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::then_with | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::then_with | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::with_copy | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::with_copy | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::fold | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[0].Field[0] in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::spec_fold | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[0].Field[0] in lang:core::_::::spec_fold | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::from | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::from | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::and_then | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::and_then | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::is_none_or | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::is_none_or | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::is_some_and | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::is_some_and | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::map_or_else | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::map_or_else | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::ok_or_else | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::ok_or_else | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::or_else | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::or_else | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::unwrap_or_else | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::unwrap_or_else | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::zip | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in lang:core::_::::zip | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::zip_with | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in lang:core::_::::zip_with | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::is_err_and | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::is_err_and | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::is_ok_and | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::is_ok_and | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::map | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::map | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::map_err | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::map_err | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::map_or_else | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::map_or_else | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::or_else | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::or_else | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::unwrap_or_else | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::::unwrap_or_else | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::call | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[0].Field[0] in lang:core::_::::call | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::clone_from | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::clone_from | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::clone_from | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::clone_from | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::index | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::index | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::::index_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::index_mut | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::mem::copy | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::crate::mem::copy | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::mem::replace | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::crate::mem::replace | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::mem::take | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::crate::mem::take | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::panic::abort_unwind | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:core::_::crate::panic::abort_unwind | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::ptr::read | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::crate::ptr::read | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::ptr::read_unaligned | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::crate::ptr::read_unaligned | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::ptr::read_volatile | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::crate::ptr::read_volatile | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::ptr::replace | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::crate::ptr::replace | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::slice::sort::shared::smallsort::sort4_stable | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::crate::slice::sort::shared::smallsort::sort4_stable | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::slice::sort::stable::drift::sort | element | file://:0:0:0:0 | [summary] read: Argument[0].Element in lang:core::_::crate::slice::sort::stable::drift::sort | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::slice::sort::stable::quicksort::quicksort | element | file://:0:0:0:0 | [summary] read: Argument[0].Element in lang:core::_::crate::slice::sort::stable::quicksort::quicksort | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::slice::sort::stable::sort | element | file://:0:0:0:0 | [summary] read: Argument[0].Element in lang:core::_::crate::slice::sort::stable::sort | -| file://:0:0:0:0 | [summary param] 0 in lang:core::_::crate::str::validations::next_code_point | element | file://:0:0:0:0 | [summary] read: Argument[0].Element in lang:core::_::crate::str::validations::next_code_point | -| file://:0:0:0:0 | [summary param] 0 in lang:proc_macro::_::<&[u8] as crate::bridge::rpc::DecodeMut>::decode | element | file://:0:0:0:0 | [summary] read: Argument[0].Element in lang:proc_macro::_::<&[u8] as crate::bridge::rpc::DecodeMut>::decode | -| file://:0:0:0:0 | [summary param] 0 in lang:proc_macro::_::::decode | element | file://:0:0:0:0 | [summary] read: Argument[0].Element in lang:proc_macro::_::::decode | -| file://:0:0:0:0 | [summary param] 0 in lang:proc_macro::_::::decode | element | file://:0:0:0:0 | [summary] read: Argument[0].Element in lang:proc_macro::_::::decode | -| file://:0:0:0:0 | [summary param] 0 in lang:proc_macro::_::::decode | element | file://:0:0:0:0 | [summary] read: Argument[0].Element in lang:proc_macro::_::::decode | -| file://:0:0:0:0 | [summary param] 0 in lang:proc_macro::_::crate::bridge::client::state::with | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:proc_macro::_::crate::bridge::client::state::with | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::advance_slices | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:std::_::::advance_slices | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::advance_slices | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:std::_::::advance_slices | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::from | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[0].Field[1] in lang:std::_::::from | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::wait_timeout_while | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:std::_::::wait_timeout_while | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::wait_while | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:std::_::::wait_while | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::bind | Ok | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Ok(0)] in lang:std::_::::bind | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::bind | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in lang:std::_::::bind | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::connect | Ok | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Ok(0)] in lang:std::_::::connect | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::connect | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in lang:std::_::::connect | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::bind | Ok | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Ok(0)] in lang:std::_::::bind | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::bind | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in lang:std::_::::bind | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::connect | Ok | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Ok(0)] in lang:std::_::::connect | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::connect | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in lang:std::_::::connect | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::try_with | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:std::_::::try_with | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::with | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:std::_::::with | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::with_borrow | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:std::_::::with_borrow | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::::with_borrow_mut | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:std::_::::with_borrow_mut | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::crate::io::default_read_vectored | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:std::_::crate::io::default_read_vectored | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::crate::io::default_write_vectored | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:std::_::crate::io::default_write_vectored | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::crate::sys::backtrace::__rust_begin_short_backtrace | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:std::_::crate::sys::backtrace::__rust_begin_short_backtrace | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::crate::sys::backtrace::__rust_end_short_backtrace | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:std::_::crate::sys::backtrace::__rust_end_short_backtrace | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::crate::sys_common::ignore_notfound | Err | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Err(0)] in lang:std::_::crate::sys_common::ignore_notfound | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::crate::thread::current::try_with_current | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:std::_::crate::thread::current::try_with_current | -| file://:0:0:0:0 | [summary param] 0 in lang:std::_::crate::thread::with_current_name | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in lang:std::_::crate::thread::with_current_name | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/BurntSushi/memchr:memchr::_::::count | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/BurntSushi/memchr:memchr::_::::count | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::arch::generic::memchr::count_byte_by_byte | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::arch::generic::memchr::count_byte_by_byte | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::arch::generic::memchr::fwd_byte_by_byte | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::arch::generic::memchr::fwd_byte_by_byte | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::tests::substring::prop::prefix_is_substring | element | file://:0:0:0:0 | [summary] read: Argument[0].Element in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::tests::substring::prop::prefix_is_substring | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::tests::substring::prop::suffix_is_substring | element | file://:0:0:0:0 | [summary] read: Argument[0].Element in repo:https://github.com/BurntSushi/memchr:memchr::_::crate::tests::substring::prop::suffix_is_substring | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/actix/actix-web:actix-http::_::::with_pool | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/actix/actix-web:actix-http::_::::with_pool | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[0].Field[0] in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[0].Field[0] in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/clap-rs/clap:clap_builder::_::::from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/hyperium/hyper:hyper::_::::from | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in repo:https://github.com/hyperium/hyper:hyper::_::::from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/hyperium/hyper:hyper::_::::from | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[0].Field[0] in repo:https://github.com/hyperium/hyper:hyper::_::::from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/hyperium/hyper:hyper::_::::recv_msg | Err | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Err(0)] in repo:https://github.com/hyperium/hyper:hyper::_::::recv_msg | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/hyperium/hyper:hyper::_::::recv_msg | Ok | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Ok(0)] in repo:https://github.com/hyperium/hyper:hyper::_::::recv_msg | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/hyperium/hyper:hyper::_::::recv_msg | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in repo:https://github.com/hyperium/hyper:hyper::_::::recv_msg | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/matklad/once_cell:once_cell::_::::get_or_try_init | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/matklad/once_cell:once_cell::_::::get_or_try_init | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/matklad/once_cell:once_cell::_::::get_or_init | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/matklad/once_cell:once_cell::_::::get_or_init | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/matklad/once_cell:once_cell::_::::get_or_try_init | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/matklad/once_cell:once_cell::_::::get_or_try_init | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/matklad/once_cell:once_cell::_::::clone_from | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/matklad/once_cell:once_cell::_::::clone_from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/matklad/once_cell:once_cell::_::::clone_from | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/matklad/once_cell:once_cell::_::::clone_from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/matklad/once_cell:once_cell::_::::get_or_try_init | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/matklad/once_cell:once_cell::_::::get_or_try_init | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/rust-lang/regex:regex::_::crate::escape | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/rust-lang/regex:regex::_::crate::escape | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/rwf2/Rocket:rocket::_::::_with_raw_cookies | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::_with_raw_cookies | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/rwf2/Rocket:rocket::_::::_with_raw_cookies_mut | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::_with_raw_cookies_mut | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/rwf2/Rocket:rocket::_::::_test | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::_test | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/rwf2/Rocket:rocket::_::::_with_raw_cookies | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::_with_raw_cookies | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/rwf2/Rocket:rocket::_::::and_then | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::and_then | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/rwf2/Rocket:rocket::_::::error_then | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::error_then | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/rwf2/Rocket:rocket::_::::forward_then | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::forward_then | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/rwf2/Rocket:rocket::_::::ok_map_error | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::ok_map_error | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/rwf2/Rocket:rocket::_::::ok_map_forward | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::ok_map_forward | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/rwf2/Rocket:rocket::_::::success_or_else | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::::success_or_else | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::crate::derive::form_field::first_duplicate | element | file://:0:0:0:0 | [summary] read: Argument[0].Element in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::crate::derive::form_field::first_duplicate | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/rwf2/Rocket:rocket_http::_::::from_source | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::from_source | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/serde-rs/serde:serde::_::crate::de::size_hint::cautious | Some | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in repo:https://github.com/serde-rs/serde:serde::_::crate::de::size_hint::cautious | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/serde-rs/serde:serde_derive::_::crate::bound::with_where_predicates | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/serde-rs/serde:serde_derive::_::crate::bound::with_where_predicates | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/servo/rust-url:url::_::::parse | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/servo/rust-url:url::_::::parse | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio-test::_::::enter | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio-test::_::::enter | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::with_mut | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::with_mut | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::with | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::with | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::with_mut | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::with_mut | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::from | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[0].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::with | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::with | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_raw | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_raw | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::with_mut | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::with_mut | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_raw | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_raw | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_raw | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_raw | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_raw | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_raw | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::downgrade_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::downgrade_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_downgrade_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_downgrade_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::downgrade_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::downgrade_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_downgrade_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_downgrade_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_map | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::from | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[0].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::::from | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[0].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::from | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::finish_string_read | Err | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::finish_string_read | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::finish_string_read | Ok | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::finish_string_read | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::context::budget | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::context::budget | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::context::runtime_mt::exit_runtime | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::context::runtime_mt::exit_runtime | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::context::with_scheduler | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::context::with_scheduler | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::scheduler::block_in_place::block_in_place | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::scheduler::block_in_place::block_in_place | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::scheduler::multi_thread::worker::block_in_place | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::scheduler::multi_thread::worker::block_in_place | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::task::blocking::block_in_place | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::task::blocking::block_in_place | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::task::coop::budget | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::task::coop::budget | -| file://:0:0:0:0 | [summary param] 0 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::task::coop::with_unconstrained | function return | file://:0:0:0:0 | [summary] read: Argument[0].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::task::coop::with_unconstrained | -| file://:0:0:0:0 | [summary param] 1 in lang:alloc::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:alloc::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:alloc::_::crate::collections::btree::mem::replace | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:alloc::_::crate::collections::btree::mem::replace | -| file://:0:0:0:0 | [summary param] 1 in lang:alloc::_::crate::collections::btree::mem::take_mut | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:alloc::_::crate::collections::btree::mem::take_mut | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::<&mut _ as crate::iter::traits::double_ended::DoubleEndedIteratorRefSpec>::spec_rfold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::<&mut _ as crate::iter::traits::double_ended::DoubleEndedIteratorRefSpec>::spec_rfold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::<&mut _ as crate::iter::traits::iterator::IteratorRefSpec>::spec_fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::<&mut _ as crate::iter::traits::iterator::IteratorRefSpec>::spec_fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::rfold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::rfold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::rfold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::rfold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::rfold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::rfold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::rfold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::rfold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::rfold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::rfold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::rfold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::rfold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::rfold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::rfold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::try_rfold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::try_rfold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::rfold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::rfold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::spec_rfold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::spec_rfold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::spec_fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::spec_fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::spec_fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::spec_fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::rfold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::rfold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::spec_fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::spec_fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::map_or | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::map_or | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::map_or_else | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::map_or_else | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::zip_with | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::zip_with | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::map_or | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::map_or | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::map_or_else | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::map_or_else | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::crate::array::drain::drain_array_with | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::crate::array::drain::drain_array_with | -| file://:0:0:0:0 | [summary param] 1 in lang:core::_::crate::slice::sort::shared::find_existing_run | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:core::_::crate::slice::sort::shared::find_existing_run | -| file://:0:0:0:0 | [summary param] 1 in lang:proc_macro::_::crate::bridge::client::state::set | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:proc_macro::_::crate::bridge::client::state::set | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::::fold | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::::fold | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::crate::io::append_to_string | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::crate::io::append_to_string | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::crate::sys::pal::common::small_c_string::run_path_with_cstr | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::crate::sys::pal::common::small_c_string::run_path_with_cstr | -| file://:0:0:0:0 | [summary param] 1 in lang:std::_::crate::sys::pal::common::small_c_string::run_with_cstr | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in lang:std::_::crate::sys::pal::common::small_c_string::run_with_cstr | -| file://:0:0:0:0 | [summary param] 1 in repo:https://github.com/clap-rs/clap:clap_builder::_::::unwrap | Ok | file://:0:0:0:0 | [summary] read: Argument[1].Field[crate::result::Result::Ok(0)] in repo:https://github.com/clap-rs/clap:clap_builder::_::::unwrap | -| file://:0:0:0:0 | [summary param] 1 in repo:https://github.com/serde-rs/serde:serde_derive::_::crate::bound::with_bound | &ref | file://:0:0:0:0 | [summary] read: Argument[1].Reference in repo:https://github.com/serde-rs/serde:serde_derive::_::crate::bound::with_bound | -| file://:0:0:0:0 | [summary param] 1 in repo:https://github.com/serde-rs/serde:serde_derive::_::crate::bound::with_self_bound | &ref | file://:0:0:0:0 | [summary] read: Argument[1].Reference in repo:https://github.com/serde-rs/serde:serde_derive::_::crate::bound::with_self_bound | -| file://:0:0:0:0 | [summary param] 1 in repo:https://github.com/serde-rs/serde:serde_derive::_::crate::bound::with_where_predicates_from_fields | &ref | file://:0:0:0:0 | [summary] read: Argument[1].Reference in repo:https://github.com/serde-rs/serde:serde_derive::_::crate::bound::with_where_predicates_from_fields | -| file://:0:0:0:0 | [summary param] 1 in repo:https://github.com/serde-rs/serde:serde_derive::_::crate::bound::with_where_predicates_from_variants | &ref | file://:0:0:0:0 | [summary] read: Argument[1].Reference in repo:https://github.com/serde-rs/serde:serde_derive::_::crate::bound::with_where_predicates_from_variants | -| file://:0:0:0:0 | [summary param] 1 in repo:https://github.com/tokio-rs/tokio:tokio-stream::_::::finalize | &ref | file://:0:0:0:0 | [summary] read: Argument[1].Reference in repo:https://github.com/tokio-rs/tokio:tokio-stream::_::::finalize | -| file://:0:0:0:0 | [summary param] 1 in repo:https://github.com/tokio-rs/tokio:tokio-stream::_::::finalize | &ref | file://:0:0:0:0 | [summary] read: Argument[1].Reference in repo:https://github.com/tokio-rs/tokio:tokio-stream::_::::finalize | -| file://:0:0:0:0 | [summary param] 1 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io | -| file://:0:0:0:0 | [summary param] 1 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io_mut | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io_mut | -| file://:0:0:0:0 | [summary param] 1 in repo:https://github.com/tokio-rs/tokio:tokio::_::::set | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::set | -| file://:0:0:0:0 | [summary param] 1 in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::try_io | -| file://:0:0:0:0 | [summary param] 1 in repo:https://github.com/tokio-rs/tokio:tokio::_::::sync_scope | function return | file://:0:0:0:0 | [summary] read: Argument[1].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::::sync_scope | -| file://:0:0:0:0 | [summary param] 1 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::finish_string_read | Ok | file://:0:0:0:0 | [summary] read: Argument[1].Field[crate::result::Result::Ok(0)] in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::finish_string_read | -| file://:0:0:0:0 | [summary param] 2 in lang:proc_macro::_::::run_bridge_and_client | function return | file://:0:0:0:0 | [summary] read: Argument[2].ReturnValue in lang:proc_macro::_::::run_bridge_and_client | -| file://:0:0:0:0 | [summary param] 2 in lang:proc_macro::_::::run_bridge_and_client | function return | file://:0:0:0:0 | [summary] read: Argument[2].ReturnValue in lang:proc_macro::_::::run_bridge_and_client | -| file://:0:0:0:0 | [summary param] 2 in repo:https://github.com/tokio-rs/tokio:tokio-stream::_::::extend | Err | file://:0:0:0:0 | [summary] read: Argument[2].Field[crate::result::Result::Err(0)] in repo:https://github.com/tokio-rs/tokio:tokio-stream::_::::extend | -| file://:0:0:0:0 | [summary param] 2 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_to_end::read_to_end_internal | &ref | file://:0:0:0:0 | [summary] read: Argument[2].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_to_end::read_to_end_internal | -| file://:0:0:0:0 | [summary param] 2 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::context::runtime::enter_runtime | function return | file://:0:0:0:0 | [summary] read: Argument[2].ReturnValue in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::runtime::context::runtime::enter_runtime | -| file://:0:0:0:0 | [summary param] 4 in lang:core::_::crate::num::flt2dec::to_exact_fixed_str | element | file://:0:0:0:0 | [summary] read: Argument[4].Element in lang:core::_::crate::num::flt2dec::to_exact_fixed_str | -| file://:0:0:0:0 | [summary param] 4 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::read_line_internal | &ref | file://:0:0:0:0 | [summary] read: Argument[4].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_line::read_line_internal | -| file://:0:0:0:0 | [summary param] 4 in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_until::read_until_internal | &ref | file://:0:0:0:0 | [summary] read: Argument[4].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::crate::io::util::read_until::read_until_internal | -| file://:0:0:0:0 | [summary param] 5 in lang:core::_::crate::num::flt2dec::to_exact_exp_str | element | file://:0:0:0:0 | [summary] read: Argument[5].Element in lang:core::_::crate::num::flt2dec::to_exact_exp_str | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::<&&str as crate::string::SpecToString>::spec_to_string | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::<&&str as crate::string::SpecToString>::spec_to_string | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::<&str as crate::string::SpecToString>::spec_to_string | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::<&str as crate::string::SpecToString>::spec_to_string | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::<_ as crate::borrow::ToOwned>::clone_into | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::<_ as crate::borrow::ToOwned>::clone_into | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::<_ as crate::borrow::ToOwned>::to_owned | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::<_ as crate::borrow::ToOwned>::to_owned | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::borrow_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow_mut | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::as_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::as_mut | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::as_ref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::deref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::deref | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::borrow | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::borrow_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:alloc::_::::borrow_mut | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::as_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:alloc::_::::as_mut | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::as_ref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:alloc::_::::deref | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:alloc::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::index | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:alloc::_::::index | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::index_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:alloc::_::::index_mut | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::as_bytes | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:alloc::_::::as_bytes | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::retain_mut | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:alloc::_::::retain_mut | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::as_c_str | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::as_c_str | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::into_vec | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Field[1] in lang:alloc::_::::into_vec | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::nul_position | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:alloc::_::::nul_position | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::as_ref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::borrow_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow_mut | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::as_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::as_mut | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::as_ref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::borrow | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::borrow_mut | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:alloc::_::::borrow_mut | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::as_ref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::borrow | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary param] self in lang:alloc::_::::borrow_mut | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:alloc::_::::borrow_mut | -| file://:0:0:0:0 | [summary param] self in lang:core::_::<&_ as crate::borrow::Borrow>::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&_ as crate::borrow::Borrow>::borrow | -| file://:0:0:0:0 | [summary param] self in lang:core::_::<&_ as crate::clone::Clone>::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&_ as crate::clone::Clone>::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::<&_ as crate::ops::deref::Deref>::deref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&_ as crate::ops::deref::Deref>::deref | -| file://:0:0:0:0 | [summary param] self in lang:core::_::<&crate::net::ip_addr::Ipv4Addr as crate::ops::bit::BitAnd>::bitand | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&crate::net::ip_addr::Ipv4Addr as crate::ops::bit::BitAnd>::bitand | -| file://:0:0:0:0 | [summary param] self in lang:core::_::<&crate::net::ip_addr::Ipv4Addr as crate::ops::bit::BitOr>::bitor | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&crate::net::ip_addr::Ipv4Addr as crate::ops::bit::BitOr>::bitor | -| file://:0:0:0:0 | [summary param] self in lang:core::_::<&crate::net::ip_addr::Ipv6Addr as crate::ops::bit::BitAnd>::bitand | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&crate::net::ip_addr::Ipv6Addr as crate::ops::bit::BitAnd>::bitand | -| file://:0:0:0:0 | [summary param] self in lang:core::_::<&crate::net::ip_addr::Ipv6Addr as crate::ops::bit::BitOr>::bitor | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&crate::net::ip_addr::Ipv6Addr as crate::ops::bit::BitOr>::bitor | -| file://:0:0:0:0 | [summary param] self in lang:core::_::<&mut _ as crate::borrow::Borrow>::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&mut _ as crate::borrow::Borrow>::borrow | -| file://:0:0:0:0 | [summary param] self in lang:core::_::<&mut _ as crate::borrow::BorrowMut>::borrow_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&mut _ as crate::borrow::BorrowMut>::borrow_mut | -| file://:0:0:0:0 | [summary param] self in lang:core::_::<&mut _ as crate::ops::deref::Deref>::deref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&mut _ as crate::ops::deref::Deref>::deref | -| file://:0:0:0:0 | [summary param] self in lang:core::_::<&mut _ as crate::ops::deref::DerefMut>::deref_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&mut _ as crate::ops::deref::DerefMut>::deref_mut | -| file://:0:0:0:0 | [summary param] self in lang:core::_::<_ as crate::str::pattern::MultiCharEq>::matches | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<_ as crate::str::pattern::MultiCharEq>::matches | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::to_ascii_lowercase | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::to_ascii_lowercase | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::to_ascii_uppercase | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::to_ascii_uppercase | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::borrow | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::borrow | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::borrow_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::borrow_mut | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::as_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::as_mut | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::as_ref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::deref | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::index | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::index | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::index_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::index_mut | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::as_bytes | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::as_bytes | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::nth_back | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::::nth_back | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::nth_back | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::::nth_back | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::to_canonical | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::to_canonical | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::and_then | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::and_then | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::as_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_mut | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::as_ref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::cloned | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::cloned | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::copied | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::copied | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::expect | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::expect | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::flatten | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::flatten | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::get_or_insert | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::get_or_insert | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::get_or_insert_default | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::get_or_insert_default | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::get_or_insert_with | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::get_or_insert_with | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::insert | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::insert | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::is_none_or | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::is_none_or | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::is_some_and | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::is_some_and | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::map_or | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::map_or | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::map_or_else | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::map_or_else | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::ok_or | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::ok_or | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::ok_or_else | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::ok_or_else | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::replace | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::replace | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::take | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::take | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::take_if | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::take_if | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::transpose | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::transpose | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::unwrap | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_or | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::unwrap_or | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_or_default | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::unwrap_or_default | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_or_else | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::unwrap_or_else | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_unchecked | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::unwrap_unchecked | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unzip | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::unzip | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::zip | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::zip | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::zip_with | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::zip_with | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::deref | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::nth | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::nth | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::nth | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::nth | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::nth | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::nth | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::and | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::and | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::and_then | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::and_then | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::and_then | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::and_then | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::as_deref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_deref | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::as_deref_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_deref_mut | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::as_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_mut | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::as_ref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::cloned | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::cloned | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::cloned | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::cloned | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::copied | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::copied | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::copied | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::copied | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::err | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::err | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::expect | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::expect | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::expect_err | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::expect_err | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::flatten | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::flatten | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::flatten | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::flatten | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::into_err | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::into_err | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::into_ok | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::into_ok | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::is_err_and | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::is_err_and | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::is_ok_and | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::is_ok_and | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::map_err | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::map_err | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::map_err | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::map_err | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::map_or | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::map_or | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::map_or_else | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::map_or_else | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::map_or_else | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::map_or_else | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::ok | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::ok | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::or | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::or | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::or_else | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::or_else | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::or_else | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::or_else | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::transpose | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::transpose | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::transpose | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::transpose | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::unwrap | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_err | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::unwrap_err | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_err_unchecked | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::unwrap_err_unchecked | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_or | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::unwrap_or | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_or_default | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::unwrap_or_default | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_or_else | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::unwrap_or_else | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_or_else | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::unwrap_or_else | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::unwrap_unchecked | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::unwrap_unchecked | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::last | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::::last | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::collect | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::::collect | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::for_each | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::::for_each | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::map | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::::map | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::next | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::::next | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::nth | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::::nth | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::nth | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::nth | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:core::_::crate::iter::traits::iterator::Iterator::collect | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::collect | -| file://:0:0:0:0 | [summary param] self in lang:core::_::crate::iter::traits::iterator::Iterator::for_each | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::for_each | -| file://:0:0:0:0 | [summary param] self in lang:core::_::crate::iter::traits::iterator::Iterator::map | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::map | -| file://:0:0:0:0 | [summary param] self in lang:core::_::crate::iter::traits::iterator::Iterator::next | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::next | -| file://:0:0:0:0 | [summary param] self in lang:core::_::crate::iter::traits::iterator::Iterator::nth | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:core::_::crate::iter::traits::iterator::Iterator::nth | -| file://:0:0:0:0 | [summary param] self in lang:proc_macro::_::::take | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:proc_macro::_::::take | -| file://:0:0:0:0 | [summary param] self in lang:proc_macro::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:proc_macro::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:proc_macro::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:proc_macro::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:proc_macro::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:proc_macro::_::::clone | -| file://:0:0:0:0 | [summary param] self in lang:proc_macro::_::::next | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:proc_macro::_::::next | -| file://:0:0:0:0 | [summary param] self in lang:std::_::<&[u8] as crate::io::BufRead>::consume | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:std::_::<&[u8] as crate::io::BufRead>::consume | -| file://:0:0:0:0 | [summary param] self in lang:std::_::<&[u8] as crate::io::BufRead>::fill_buf | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:std::_::<&[u8] as crate::io::BufRead>::fill_buf | -| file://:0:0:0:0 | [summary param] self in lang:std::_::<&[u8] as crate::io::Read>::read_buf_exact | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:std::_::<&[u8] as crate::io::Read>::read_buf_exact | -| file://:0:0:0:0 | [summary param] self in lang:std::_::<&[u8] as crate::io::Read>::read_exact | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:std::_::<&[u8] as crate::io::Read>::read_exact | -| file://:0:0:0:0 | [summary param] self in lang:std::_::<&[u8] as crate::io::Read>::read_to_end | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:std::_::<&[u8] as crate::io::Read>::read_to_end | -| file://:0:0:0:0 | [summary param] self in lang:std::_::<&[u8] as crate::io::Read>::read_to_string | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:std::_::<&[u8] as crate::io::Read>::read_to_string | -| file://:0:0:0:0 | [summary param] self in lang:std::_::<&[u8] as crate::io::copy::BufferedReaderSpec>::copy_to | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:std::_::<&[u8] as crate::io::copy::BufferedReaderSpec>::copy_to | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::borrow | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:std::_::::borrow | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::deref | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:std::_::::deref | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::deref_mut | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in lang:std::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner_mut | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner_mut | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::error | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Field[1] in lang:std::_::::error | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::into_error | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Field[1] in lang:std::_::::into_error | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_fd | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:std::_::::as_fd | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::is_leader | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::is_leader | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::timed_out | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::timed_out | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_inner_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_inner_mut | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_file_desc | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_file_desc | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::into_raw | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::into_raw | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_u64 | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::as_u64 | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::duration | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:std::_::::duration | -| file://:0:0:0:0 | [summary param] self in lang:std::_::::as_raw_fd | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:std::_::::as_raw_fd | -| file://:0:0:0:0 | [summary param] self in repo::serde_test_suite::_::::get | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo::serde_test_suite::_::::get | -| file://:0:0:0:0 | [summary param] self in repo::serde_test_suite::_::::get | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo::serde_test_suite::_::::get | -| file://:0:0:0:0 | [summary param] self in repo::serde_test_suite::_::::first | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo::serde_test_suite::_::::first | -| file://:0:0:0:0 | [summary param] self in repo::serde_test_suite::_::::second | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Field[1] in repo::serde_test_suite::_::::second | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-files::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-files::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-http::_::<&crate::header::value::HeaderValue as crate::header::into_value::TryIntoHeaderValue>::try_into_value | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/actix/actix-web:actix-http::_::<&crate::header::value::HeaderValue as crate::header::into_value::TryIntoHeaderValue>::try_into_value | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-http::_::::finish | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-http::_::::finish | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-http::_::::take | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/actix/actix-web:actix-http::_::::take | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-multipart::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-multipart::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-multipart::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-multipart::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-multipart::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-multipart::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-router::_::<_ as crate::resource_path::Resource>::resource_path | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/actix/actix-web:actix-router::_::<_ as crate::resource_path::Resource>::resource_path | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-router::_::::patterns | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/actix/actix-web:actix-router::_::::patterns | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::<_ as crate::guard::Guard>::check | function return | file://:0:0:0:0 | [summary] read: Argument[self].ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::<_ as crate::guard::Guard>::check | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::<_ as crate::handler::Handler>::call | function return | file://:0:0:0:0 | [summary] read: Argument[self].ReturnValue in repo:https://github.com/actix/actix-web:actix-web::_::<_ as crate::handler::Handler>::call | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::as_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::as_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::as_ref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:actix-web::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:awc::_::::no_disconnect_timeout | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/actix/actix-web:awc::_::::no_disconnect_timeout | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/actix/actix-web:awc::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/actix/actix-web:awc::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/clap-rs/clap:clap_bench::_::::args | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Field[1] in repo:https://github.com/clap-rs/clap:clap_bench::_::::args | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/clap-rs/clap:clap_bench::_::::name | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/clap-rs/clap:clap_bench::_::::name | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/clap-rs/clap:clap_builder::_::::ansi | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/clap-rs/clap:clap_builder::_::::ansi | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/clap-rs/clap:clap_builder::_::::as_styled_str | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/clap-rs/clap:clap_builder::_::::as_styled_str | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/clap-rs/clap:clap_builder::_::::as_internal_str | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/clap-rs/clap:clap_builder::_::::as_internal_str | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/clap-rs/clap:clap_complete::_::<_ as crate::engine::custom::ValueCandidates>::candidates | function return | file://:0:0:0:0 | [summary] read: Argument[self].ReturnValue in repo:https://github.com/clap-rs/clap:clap_complete::_::<_ as crate::engine::custom::ValueCandidates>::candidates | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/clap-rs/clap:clap_complete::_::<_ as crate::engine::custom::ValueCompleter>::complete | function return | file://:0:0:0:0 | [summary] read: Argument[self].ReturnValue in repo:https://github.com/clap-rs/clap:clap_complete::_::<_ as crate::engine::custom::ValueCompleter>::complete | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/hyperium/hyper:hyper::_::::danger_len | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/hyperium/hyper:hyper::_::::danger_len | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/hyperium/hyper:hyper::_::::handshake | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/hyperium/hyper:hyper::_::::handshake | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/hyperium/hyper:hyper::_::::handshake | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/hyperium/hyper:hyper::_::::handshake | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/hyperium/hyper:hyper::_::::as_ref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/hyperium/hyper:hyper::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/hyperium/hyper:hyper::_::::as_bytes | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/hyperium/hyper:hyper::_::::as_bytes | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rust-lang/libc:libc::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/rust-lang/libc:libc::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rust-lang/libc:libc::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/rust-lang/libc:libc::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rust-lang/libc:libc::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/rust-lang/libc:libc::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rust-lang/libc:libc::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/rust-lang/libc:libc::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rust-random/rand:rand_chacha::_::::as_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rust-random/rand:rand_chacha::_::::as_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rust-random/rand:rand_chacha::_::::as_ref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rust-random/rand:rand_chacha::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/db_pools:rocket_db_pools::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates::_::::context | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket/tree/v0.5/contrib/dyn_templates:rocket_dyn_templates::_::::context | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::<_ as crate::catcher::handler::Handler>::handle | function return | file://:0:0:0:0 | [summary] read: Argument[self].ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::<_ as crate::catcher::handler::Handler>::handle | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::<_ as crate::route::handler::Handler>::handle | function return | file://:0:0:0:0 | [summary] read: Argument[self].ReturnValue in repo:https://github.com/rwf2/Rocket:rocket::_::<_ as crate::route::handler::Handler>::handle | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::as_str | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::as_str | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::as_str | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::as_str | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Field[1] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Field[1] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::file | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Field[1] in repo:https://github.com/rwf2/Rocket:rocket::_::::file | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::file_mut | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Field[1] in repo:https://github.com/rwf2/Rocket:rocket::_::::file_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::take_file | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Field[1] in repo:https://github.com/rwf2/Rocket:rocket::_::::take_file | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::take | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::take | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::poll_next | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::poll_next | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket::_::::inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket_codegen::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::media_type | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::media_type | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::weight | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Field[1] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::weight | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::weight_or | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Field[1] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::weight_or | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::media_type | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::media_type | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::borrow | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::borrow | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::as_ref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::as_str | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::as_str | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::split_at_byte | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in repo:https://github.com/rwf2/Rocket:rocket_http::_::::split_at_byte | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::into_string | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::into_string | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::render | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::render | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/rwf2/Rocket:rocket_http::_::::render | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::render | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::source | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::::source | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/serde-rs/serde:serde::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/serde-rs/serde:serde::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/servo/rust-smallvec:smallvec::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/servo/rust-smallvec:smallvec::_::::clone | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/servo/rust-smallvec:smallvec::_::::retain | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in repo:https://github.com/servo/rust-smallvec:smallvec::_::::retain | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio-util::_::::into_inner | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio-util::_::::into_inner | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio-util::_::::as_ref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio-util::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::<&[u8] as crate::io::async_buf_read::AsyncBufRead>::consume | element | file://:0:0:0:0 | [summary] read: Argument[self].Element in repo:https://github.com/tokio-rs/tokio:tokio::_::<&[u8] as crate::io::async_buf_read::AsyncBufRead>::consume | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::<&[u8] as crate::io::async_buf_read::AsyncBufRead>::poll_fill_buf | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::<&[u8] as crate::io::async_buf_read::AsyncBufRead>::poll_fill_buf | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::<&crate::task::wake::Waker as crate::sync::task::atomic_waker::WakerRef>::into_waker | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference in repo:https://github.com/tokio-rs/tokio:tokio::_::<&crate::task::wake::Waker as crate::sync::task::atomic_waker::WakerRef>::into_waker | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_inner_mut | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_inner_mut | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_usize | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_usize | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::::is_leader | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::is_leader | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_ref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_ref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_ref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_ref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_ref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_raw_value | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::as_raw_value | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::::deref | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::deref | -| file://:0:0:0:0 | [summary param] self in repo:https://github.com/tokio-rs/tokio:tokio::_::::is_leader | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/tokio-rs/tokio:tokio::_::::is_leader | -| file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in repo:https://github.com/hyperium/hyper:hyper::_::::from | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)].Field[0] in repo:https://github.com/hyperium/hyper:hyper::_::::from | -| file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::from_source | element | file://:0:0:0:0 | [summary] read: Argument[0].Field[crate::option::Option::Some(0)].Element in repo:https://github.com/rwf2/Rocket:rocket_http::_::::from_source | -| file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:alloc::_::::as_mut_ptr | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference.Reference in lang:alloc::_::::as_mut_ptr | -| file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:alloc::_::::as_ptr | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference.Reference in lang:alloc::_::::as_ptr | -| file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:alloc::_::::unwrap_or_clone | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference.Reference in lang:alloc::_::::unwrap_or_clone | -| file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:alloc::_::::unwrap_or_clone | &ref | file://:0:0:0:0 | [summary] read: Argument[0].Reference.Reference in lang:alloc::_::::unwrap_or_clone | -| file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::from | Some | file://:0:0:0:0 | [summary] read: Argument[0].Reference.Field[crate::option::Option::Some(0)] in lang:core::_::::from | -| file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::index | element | file://:0:0:0:0 | [summary] read: Argument[0].Reference.Element in lang:core::_::::index | -| file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:core::_::::index_mut | element | file://:0:0:0:0 | [summary] read: Argument[0].Reference.Element in lang:core::_::::index_mut | -| file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:std::_::::advance_slices | element | file://:0:0:0:0 | [summary] read: Argument[0].Reference.Element in lang:std::_::::advance_slices | -| file://:0:0:0:0 | [summary] read: Argument[0].Reference in lang:std::_::::advance_slices | element | file://:0:0:0:0 | [summary] read: Argument[0].Reference.Element in lang:std::_::::advance_slices | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:alloc::_::::index | element | file://:0:0:0:0 | [summary] read: Argument[self].Field[0].Element in lang:alloc::_::::index | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:alloc::_::::index_mut | element | file://:0:0:0:0 | [summary] read: Argument[self].Field[0].Element in lang:alloc::_::::index_mut | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::index | element | file://:0:0:0:0 | [summary] read: Argument[self].Field[0].Element in lang:core::_::::index | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::index_mut | element | file://:0:0:0:0 | [summary] read: Argument[self].Field[0].Element in lang:core::_::::index_mut | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::into_inner | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[0].Field[crate::option::Option::Some(0)] in lang:core::_::::into_inner | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::nth | element | file://:0:0:0:0 | [summary] read: Argument[self].Field[0].Element in lang:core::_::::nth | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::nth | element | file://:0:0:0:0 | [summary] read: Argument[self].Field[0].Element in lang:core::_::::nth | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::nth | element | file://:0:0:0:0 | [summary] read: Argument[self].Field[0].Element in lang:core::_::::nth | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:core::_::::nth | element | file://:0:0:0:0 | [summary] read: Argument[self].Field[0].Element in lang:core::_::::nth | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in lang:proc_macro::_::::next | element | file://:0:0:0:0 | [summary] read: Argument[self].Field[0].Element in lang:proc_macro::_::::next | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[0] in repo:https://github.com/rwf2/Rocket:rocket::_::::poll_next | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Field[0].Reference in repo:https://github.com/rwf2/Rocket:rocket::_::::poll_next | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[1] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::weight_or | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[1].Field[crate::option::Option::Some(0)] in repo:https://github.com/rwf2/Rocket:rocket_http::_::::weight_or | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::clone | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)].Reference in lang:core::_::::clone | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::and_then | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)].Field[0] in lang:core::_::::and_then | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::cloned | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)].Reference in lang:core::_::::cloned | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::copied | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)].Reference in lang:core::_::::copied | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::transpose | Err | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)].Field[crate::result::Result::Err(0)] in lang:core::_::::transpose | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::transpose | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)].Field[crate::result::Result::Ok(0)] in lang:core::_::::transpose | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::unzip | tuple.0 | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)].Field[0] in lang:core::_::::unzip | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)] in lang:core::_::::unzip | tuple.1 | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::option::Option::Some(0)].Field[1] in lang:core::_::::unzip | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)] in lang:core::_::::unwrap_or_else | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Err(0)].Reference in lang:core::_::::unwrap_or_else | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::cloned | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)].Reference in lang:core::_::::cloned | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::copied | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)].Reference in lang:core::_::::copied | -| file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)] in lang:core::_::::transpose | Some | file://:0:0:0:0 | [summary] read: Argument[self].Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)] in lang:core::_::::transpose | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::<&&str as crate::string::SpecToString>::spec_to_string | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::<&&str as crate::string::SpecToString>::spec_to_string | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::<&str as crate::string::SpecToString>::spec_to_string | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::<&str as crate::string::SpecToString>::spec_to_string | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::borrow_mut | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::as_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::as_mut | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::as_ref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::deref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::deref | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::deref_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::deref_mut | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::as_ref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::borrow_mut | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::as_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::as_mut | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::as_ref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::borrow | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:alloc::_::::as_ref | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:alloc::_::::as_ref | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&_ as crate::borrow::Borrow>::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:core::_::<&_ as crate::borrow::Borrow>::borrow | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&mut _ as crate::borrow::Borrow>::borrow | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:core::_::<&mut _ as crate::borrow::Borrow>::borrow | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<&mut _ as crate::borrow::BorrowMut>::borrow_mut | &ref | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Reference in lang:core::_::<&mut _ as crate::borrow::BorrowMut>::borrow_mut | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::<_ as crate::str::pattern::MultiCharEq>::matches | function return | file://:0:0:0:0 | [summary] read: Argument[self].Reference.ReturnValue in lang:core::_::<_ as crate::str::pattern::MultiCharEq>::matches | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_mut | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Field[crate::option::Option::Some(0)] in lang:core::_::::as_mut | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_ref | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Field[crate::option::Option::Some(0)] in lang:core::_::::as_ref | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::get_or_insert | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Field[crate::option::Option::Some(0)] in lang:core::_::::get_or_insert | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::get_or_insert_default | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Field[crate::option::Option::Some(0)] in lang:core::_::::get_or_insert_default | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::get_or_insert_with | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Field[crate::option::Option::Some(0)] in lang:core::_::::get_or_insert_with | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::insert | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Field[crate::option::Option::Some(0)] in lang:core::_::::insert | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::take_if | Some | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Field[crate::option::Option::Some(0)] in lang:core::_::::take_if | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_deref | Err | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Field[crate::result::Result::Err(0)] in lang:core::_::::as_deref | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_deref_mut | Err | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Field[crate::result::Result::Err(0)] in lang:core::_::::as_deref_mut | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_mut | Err | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Field[crate::result::Result::Err(0)] in lang:core::_::::as_mut | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_mut | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Field[crate::result::Result::Ok(0)] in lang:core::_::::as_mut | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_ref | Err | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Field[crate::result::Result::Err(0)] in lang:core::_::::as_ref | -| file://:0:0:0:0 | [summary] read: Argument[self].Reference in lang:core::_::::as_ref | Ok | file://:0:0:0:0 | [summary] read: Argument[self].Reference.Field[crate::result::Result::Ok(0)] in lang:core::_::::as_ref | -| main.rs:36:9:36:15 | Some(...) | Some | main.rs:36:14:36:14 | _ | -| main.rs:90:11:90:11 | i | &ref | main.rs:90:10:90:11 | * ... | -| main.rs:98:10:98:10 | a | tuple.0 | main.rs:98:10:98:12 | a.0 | -| main.rs:99:10:99:10 | a | tuple.1 | main.rs:99:10:99:12 | a.1 | -| main.rs:104:9:104:20 | TuplePat | tuple.0 | main.rs:104:10:104:11 | a0 | -| main.rs:104:9:104:20 | TuplePat | tuple.1 | main.rs:104:14:104:15 | a1 | -| main.rs:104:9:104:20 | TuplePat | tuple.2 | main.rs:104:18:104:19 | a2 | -| main.rs:112:10:112:10 | a | tuple.0 | main.rs:112:10:112:12 | a.0 | -| main.rs:113:10:113:10 | a | tuple.1 | main.rs:113:10:113:12 | a.1 | -| main.rs:114:5:114:5 | a | tuple.0 | main.rs:114:5:114:7 | a.0 | -| main.rs:115:5:115:5 | a | tuple.1 | main.rs:115:5:115:7 | a.1 | -| main.rs:116:10:116:10 | a | tuple.0 | main.rs:116:10:116:12 | a.0 | -| main.rs:117:10:117:10 | a | tuple.1 | main.rs:117:10:117:12 | a.1 | -| main.rs:123:10:123:10 | b | tuple.0 | main.rs:123:10:123:12 | b.0 | -| main.rs:123:10:123:12 | b.0 | tuple.0 | main.rs:123:10:123:15 | ... .0 | -| main.rs:124:10:124:10 | b | tuple.0 | main.rs:124:10:124:12 | b.0 | -| main.rs:124:10:124:12 | b.0 | tuple.1 | main.rs:124:10:124:15 | ... .1 | -| main.rs:125:10:125:10 | b | tuple.1 | main.rs:125:10:125:12 | b.1 | -| main.rs:138:10:138:10 | p | Point.x | main.rs:138:10:138:12 | p.x | -| main.rs:139:10:139:10 | p | Point.y | main.rs:139:10:139:12 | p.y | -| main.rs:144:10:144:10 | p | Point.y | main.rs:144:10:144:12 | p.y | -| main.rs:145:5:145:5 | p | Point.y | main.rs:145:5:145:7 | p.y | -| main.rs:146:10:146:10 | p | Point.y | main.rs:146:10:146:12 | p.y | -| main.rs:154:9:154:28 | Point {...} | Point.x | main.rs:154:20:154:20 | a | -| main.rs:154:9:154:28 | Point {...} | Point.y | main.rs:154:26:154:26 | b | -| main.rs:172:10:172:10 | p | Point3D.plane | main.rs:172:10:172:16 | p.plane | -| main.rs:172:10:172:16 | p.plane | Point.x | main.rs:172:10:172:18 | ... .x | -| main.rs:173:10:173:10 | p | Point3D.plane | main.rs:173:10:173:16 | p.plane | -| main.rs:173:10:173:16 | p.plane | Point.y | main.rs:173:10:173:18 | ... .y | -| main.rs:174:10:174:10 | p | Point3D.z | main.rs:174:10:174:12 | p.z | -| main.rs:184:9:187:9 | Point3D {...} | Point3D.plane | main.rs:185:20:185:33 | Point {...} | -| main.rs:184:9:187:9 | Point3D {...} | Point3D.z | main.rs:186:13:186:13 | z | -| main.rs:185:20:185:33 | Point {...} | Point.x | main.rs:185:28:185:28 | x | -| main.rs:185:20:185:33 | Point {...} | Point.y | main.rs:185:31:185:31 | y | -| main.rs:199:10:199:10 | s | MyTupleStruct(0) | main.rs:199:10:199:12 | s.0 | -| main.rs:199:10:199:10 | s | tuple.0 | main.rs:199:10:199:12 | s.0 | -| main.rs:200:10:200:10 | s | MyTupleStruct(1) | main.rs:200:10:200:12 | s.1 | -| main.rs:200:10:200:10 | s | tuple.1 | main.rs:200:10:200:12 | s.1 | -| main.rs:203:9:203:27 | MyTupleStruct(...) | MyTupleStruct(0) | main.rs:203:23:203:23 | x | -| main.rs:203:9:203:27 | MyTupleStruct(...) | MyTupleStruct(1) | main.rs:203:26:203:26 | y | -| main.rs:217:9:217:23 | ...::Some(...) | Some | main.rs:217:22:217:22 | n | -| main.rs:221:9:221:23 | ...::Some(...) | Some | main.rs:221:22:221:22 | n | -| main.rs:230:9:230:15 | Some(...) | Some | main.rs:230:14:230:14 | n | -| main.rs:234:9:234:15 | Some(...) | Some | main.rs:234:14:234:14 | n | -| main.rs:263:14:263:15 | s1 | Ok | main.rs:263:14:263:16 | TryExpr | -| main.rs:263:14:263:15 | s1 | Some | main.rs:263:14:263:16 | TryExpr | -| main.rs:265:10:265:11 | s2 | Ok | main.rs:265:10:265:12 | TryExpr | -| main.rs:265:10:265:11 | s2 | Some | main.rs:265:10:265:12 | TryExpr | -| main.rs:287:14:287:15 | s1 | Ok | main.rs:287:14:287:16 | TryExpr | -| main.rs:287:14:287:15 | s1 | Some | main.rs:287:14:287:16 | TryExpr | -| main.rs:288:14:288:15 | s2 | Ok | main.rs:288:14:288:16 | TryExpr | -| main.rs:288:14:288:15 | s2 | Some | main.rs:288:14:288:16 | TryExpr | -| main.rs:291:14:291:15 | s3 | Ok | main.rs:291:14:291:16 | TryExpr | -| main.rs:291:14:291:15 | s3 | Some | main.rs:291:14:291:16 | TryExpr | -| main.rs:315:9:315:25 | ...::A(...) | A | main.rs:315:24:315:24 | n | -| main.rs:316:9:316:25 | ...::B(...) | B | main.rs:316:24:316:24 | n | -| main.rs:319:9:319:25 | ...::A(...) | A | main.rs:319:24:319:24 | n | -| main.rs:319:29:319:45 | ...::B(...) | B | main.rs:319:44:319:44 | n | -| main.rs:322:9:322:25 | ...::A(...) | A | main.rs:322:24:322:24 | n | -| main.rs:323:9:323:25 | ...::B(...) | B | main.rs:323:24:323:24 | n | -| main.rs:333:9:333:12 | A(...) | A | main.rs:333:11:333:11 | n | -| main.rs:334:9:334:12 | B(...) | B | main.rs:334:11:334:11 | n | -| main.rs:337:9:337:12 | A(...) | A | main.rs:337:11:337:11 | n | -| main.rs:337:16:337:19 | B(...) | B | main.rs:337:18:337:18 | n | -| main.rs:340:9:340:12 | A(...) | A | main.rs:340:11:340:11 | n | -| main.rs:341:9:341:12 | B(...) | B | main.rs:341:11:341:11 | n | -| main.rs:356:9:356:38 | ...::C {...} | C | main.rs:356:36:356:36 | n | -| main.rs:357:9:357:38 | ...::D {...} | D | main.rs:357:36:357:36 | n | -| main.rs:360:9:360:38 | ...::C {...} | C | main.rs:360:36:360:36 | n | -| main.rs:360:42:360:71 | ...::D {...} | D | main.rs:360:69:360:69 | n | -| main.rs:363:9:363:38 | ...::C {...} | C | main.rs:363:36:363:36 | n | -| main.rs:364:9:364:38 | ...::D {...} | D | main.rs:364:36:364:36 | n | -| main.rs:376:9:376:24 | C {...} | C | main.rs:376:22:376:22 | n | -| main.rs:377:9:377:24 | D {...} | D | main.rs:377:22:377:22 | n | -| main.rs:380:9:380:24 | C {...} | C | main.rs:380:22:380:22 | n | -| main.rs:380:28:380:43 | D {...} | D | main.rs:380:41:380:41 | n | -| main.rs:383:9:383:24 | C {...} | C | main.rs:383:22:383:22 | n | -| main.rs:384:9:384:24 | D {...} | D | main.rs:384:22:384:22 | n | -| main.rs:393:14:393:17 | arr1 | element | main.rs:393:14:393:20 | arr1[2] | -| main.rs:397:14:397:17 | arr2 | element | main.rs:397:14:397:20 | arr2[4] | -| main.rs:401:14:401:17 | arr3 | element | main.rs:401:14:401:20 | arr3[2] | -| main.rs:407:15:407:18 | arr1 | element | main.rs:407:9:407:10 | n1 | -| main.rs:412:15:412:18 | arr2 | element | main.rs:412:9:412:10 | n2 | -| main.rs:420:9:420:17 | SlicePat | element | main.rs:420:10:420:10 | a | -| main.rs:420:9:420:17 | SlicePat | element | main.rs:420:13:420:13 | b | -| main.rs:420:9:420:17 | SlicePat | element | main.rs:420:16:420:16 | c | -| main.rs:430:10:430:16 | mut_arr | element | main.rs:430:10:430:19 | mut_arr[1] | -| main.rs:432:5:432:11 | mut_arr | element | main.rs:432:5:432:14 | mut_arr[1] | -| main.rs:433:13:433:19 | mut_arr | element | main.rs:433:13:433:22 | mut_arr[1] | -| main.rs:435:10:435:16 | mut_arr | element | main.rs:435:10:435:19 | mut_arr[0] | -| main.rs:442:9:442:20 | TuplePat | tuple.0 | main.rs:442:10:442:13 | cond | -| main.rs:442:9:442:20 | TuplePat | tuple.1 | main.rs:442:16:442:19 | name | -| main.rs:442:25:442:29 | names | element | main.rs:442:9:442:20 | TuplePat | -| main.rs:444:41:444:67 | [post] \|...\| ... | captured default_name | main.rs:444:41:444:67 | [post] default_name | -| main.rs:444:44:444:55 | this | captured default_name | main.rs:444:44:444:55 | default_name | -| main.rs:481:10:481:11 | vs | element | main.rs:481:10:481:14 | vs[0] | -| main.rs:482:11:482:35 | ... .unwrap() | &ref | main.rs:482:10:482:35 | * ... | -| main.rs:483:11:483:35 | ... .unwrap() | &ref | main.rs:483:10:483:35 | * ... | -| main.rs:485:14:485:15 | vs | element | main.rs:485:9:485:9 | v | -| main.rs:488:9:488:10 | &... | &ref | main.rs:488:10:488:10 | v | -| main.rs:488:15:488:23 | vs.iter() | element | main.rs:488:9:488:10 | &... | -| main.rs:493:9:493:10 | &... | &ref | main.rs:493:10:493:10 | v | -| main.rs:493:15:493:17 | vs2 | element | main.rs:493:9:493:10 | &... | -| main.rs:497:29:497:29 | x | &ref | main.rs:497:28:497:29 | * ... | -| main.rs:498:34:498:34 | x | &ref | main.rs:498:33:498:34 | * ... | -| main.rs:500:14:500:27 | vs.into_iter() | element | main.rs:500:9:500:9 | v | -| main.rs:506:10:506:15 | vs_mut | element | main.rs:506:10:506:18 | vs_mut[0] | -| main.rs:507:11:507:39 | ... .unwrap() | &ref | main.rs:507:10:507:39 | * ... | -| main.rs:508:11:508:39 | ... .unwrap() | &ref | main.rs:508:10:508:39 | * ... | -| main.rs:510:9:510:14 | &mut ... | &ref | main.rs:510:14:510:14 | v | -| main.rs:510:19:510:35 | vs_mut.iter_mut() | element | main.rs:510:9:510:14 | &mut ... | -| main.rs:524:11:524:15 | c_ref | &ref | main.rs:524:10:524:15 | * ... | +| main.rs:36:9:36:15 | Some(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:36:14:36:14 | _ | +| main.rs:90:11:90:11 | i | file://:0:0:0:0 | &ref | main.rs:90:10:90:11 | * ... | +| main.rs:98:10:98:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:98:10:98:12 | a.0 | +| main.rs:99:10:99:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:99:10:99:12 | a.1 | +| main.rs:104:9:104:20 | TuplePat | file://:0:0:0:0 | tuple.0 | main.rs:104:10:104:11 | a0 | +| main.rs:104:9:104:20 | TuplePat | file://:0:0:0:0 | tuple.1 | main.rs:104:14:104:15 | a1 | +| main.rs:104:9:104:20 | TuplePat | file://:0:0:0:0 | tuple.2 | main.rs:104:18:104:19 | a2 | +| main.rs:112:10:112:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:112:10:112:12 | a.0 | +| main.rs:113:10:113:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:113:10:113:12 | a.1 | +| main.rs:114:5:114:5 | a | file://:0:0:0:0 | tuple.0 | main.rs:114:5:114:7 | a.0 | +| main.rs:115:5:115:5 | a | file://:0:0:0:0 | tuple.1 | main.rs:115:5:115:7 | a.1 | +| main.rs:116:10:116:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:116:10:116:12 | a.0 | +| main.rs:117:10:117:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:117:10:117:12 | a.1 | +| main.rs:123:10:123:10 | b | file://:0:0:0:0 | tuple.0 | main.rs:123:10:123:12 | b.0 | +| main.rs:123:10:123:12 | b.0 | file://:0:0:0:0 | tuple.0 | main.rs:123:10:123:15 | ... .0 | +| main.rs:124:10:124:10 | b | file://:0:0:0:0 | tuple.0 | main.rs:124:10:124:12 | b.0 | +| main.rs:124:10:124:12 | b.0 | file://:0:0:0:0 | tuple.1 | main.rs:124:10:124:15 | ... .1 | +| main.rs:125:10:125:10 | b | file://:0:0:0:0 | tuple.1 | main.rs:125:10:125:12 | b.1 | +| main.rs:138:10:138:10 | p | main.rs:132:5:132:10 | Point.x | main.rs:138:10:138:12 | p.x | +| main.rs:139:10:139:10 | p | main.rs:133:5:133:10 | Point.y | main.rs:139:10:139:12 | p.y | +| main.rs:144:10:144:10 | p | main.rs:133:5:133:10 | Point.y | main.rs:144:10:144:12 | p.y | +| main.rs:145:5:145:5 | p | main.rs:133:5:133:10 | Point.y | main.rs:145:5:145:7 | p.y | +| main.rs:146:10:146:10 | p | main.rs:133:5:133:10 | Point.y | main.rs:146:10:146:12 | p.y | +| main.rs:154:9:154:28 | Point {...} | main.rs:132:5:132:10 | Point.x | main.rs:154:20:154:20 | a | +| main.rs:154:9:154:28 | Point {...} | main.rs:133:5:133:10 | Point.y | main.rs:154:26:154:26 | b | +| main.rs:172:10:172:10 | p | main.rs:160:5:160:16 | Point3D.plane | main.rs:172:10:172:16 | p.plane | +| main.rs:172:10:172:16 | p.plane | main.rs:132:5:132:10 | Point.x | main.rs:172:10:172:18 | ... .x | +| main.rs:173:10:173:10 | p | main.rs:160:5:160:16 | Point3D.plane | main.rs:173:10:173:16 | p.plane | +| main.rs:173:10:173:16 | p.plane | main.rs:133:5:133:10 | Point.y | main.rs:173:10:173:18 | ... .y | +| main.rs:174:10:174:10 | p | main.rs:161:5:161:10 | Point3D.z | main.rs:174:10:174:12 | p.z | +| main.rs:184:9:187:9 | Point3D {...} | main.rs:160:5:160:16 | Point3D.plane | main.rs:185:20:185:33 | Point {...} | +| main.rs:184:9:187:9 | Point3D {...} | main.rs:161:5:161:10 | Point3D.z | main.rs:186:13:186:13 | z | +| main.rs:185:20:185:33 | Point {...} | main.rs:132:5:132:10 | Point.x | main.rs:185:28:185:28 | x | +| main.rs:185:20:185:33 | Point {...} | main.rs:133:5:133:10 | Point.y | main.rs:185:31:185:31 | y | +| main.rs:199:10:199:10 | s | file://:0:0:0:0 | tuple.0 | main.rs:199:10:199:12 | s.0 | +| main.rs:199:10:199:10 | s | main.rs:195:22:195:24 | MyTupleStruct(0) | main.rs:199:10:199:12 | s.0 | +| main.rs:200:10:200:10 | s | file://:0:0:0:0 | tuple.1 | main.rs:200:10:200:12 | s.1 | +| main.rs:200:10:200:10 | s | main.rs:195:27:195:29 | MyTupleStruct(1) | main.rs:200:10:200:12 | s.1 | +| main.rs:203:9:203:27 | MyTupleStruct(...) | main.rs:195:22:195:24 | MyTupleStruct(0) | main.rs:203:23:203:23 | x | +| main.rs:203:9:203:27 | MyTupleStruct(...) | main.rs:195:27:195:29 | MyTupleStruct(1) | main.rs:203:26:203:26 | y | +| main.rs:217:9:217:23 | ...::Some(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:217:22:217:22 | n | +| main.rs:221:9:221:23 | ...::Some(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:221:22:221:22 | n | +| main.rs:230:9:230:15 | Some(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:230:14:230:14 | n | +| main.rs:234:9:234:15 | Some(...) | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:234:14:234:14 | n | +| main.rs:263:14:263:15 | s1 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:263:14:263:16 | TryExpr | +| main.rs:263:14:263:15 | s1 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:263:14:263:16 | TryExpr | +| main.rs:265:10:265:11 | s2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:265:10:265:12 | TryExpr | +| main.rs:265:10:265:11 | s2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:265:10:265:12 | TryExpr | +| main.rs:287:14:287:15 | s1 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:287:14:287:16 | TryExpr | +| main.rs:287:14:287:15 | s1 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:287:14:287:16 | TryExpr | +| main.rs:288:14:288:15 | s2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:288:14:288:16 | TryExpr | +| main.rs:288:14:288:15 | s2 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:288:14:288:16 | TryExpr | +| main.rs:291:14:291:15 | s3 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:580:10:580:56 | Some | main.rs:291:14:291:16 | TryExpr | +| main.rs:291:14:291:15 | s3 | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:532:8:532:54 | Ok | main.rs:291:14:291:16 | TryExpr | +| main.rs:315:9:315:25 | ...::A(...) | main.rs:307:7:307:9 | A | main.rs:315:24:315:24 | n | +| main.rs:316:9:316:25 | ...::B(...) | main.rs:308:7:308:9 | B | main.rs:316:24:316:24 | n | +| main.rs:319:9:319:25 | ...::A(...) | main.rs:307:7:307:9 | A | main.rs:319:24:319:24 | n | +| main.rs:319:29:319:45 | ...::B(...) | main.rs:308:7:308:9 | B | main.rs:319:44:319:44 | n | +| main.rs:322:9:322:25 | ...::A(...) | main.rs:307:7:307:9 | A | main.rs:322:24:322:24 | n | +| main.rs:323:9:323:25 | ...::B(...) | main.rs:308:7:308:9 | B | main.rs:323:24:323:24 | n | +| main.rs:333:9:333:12 | A(...) | main.rs:307:7:307:9 | A | main.rs:333:11:333:11 | n | +| main.rs:334:9:334:12 | B(...) | main.rs:308:7:308:9 | B | main.rs:334:11:334:11 | n | +| main.rs:337:9:337:12 | A(...) | main.rs:307:7:307:9 | A | main.rs:337:11:337:11 | n | +| main.rs:337:16:337:19 | B(...) | main.rs:308:7:308:9 | B | main.rs:337:18:337:18 | n | +| main.rs:340:9:340:12 | A(...) | main.rs:307:7:307:9 | A | main.rs:340:11:340:11 | n | +| main.rs:341:9:341:12 | B(...) | main.rs:308:7:308:9 | B | main.rs:341:11:341:11 | n | +| main.rs:356:9:356:38 | ...::C {...} | main.rs:346:9:346:20 | C | main.rs:356:36:356:36 | n | +| main.rs:357:9:357:38 | ...::D {...} | main.rs:347:9:347:20 | D | main.rs:357:36:357:36 | n | +| main.rs:360:9:360:38 | ...::C {...} | main.rs:346:9:346:20 | C | main.rs:360:36:360:36 | n | +| main.rs:360:42:360:71 | ...::D {...} | main.rs:347:9:347:20 | D | main.rs:360:69:360:69 | n | +| main.rs:363:9:363:38 | ...::C {...} | main.rs:346:9:346:20 | C | main.rs:363:36:363:36 | n | +| main.rs:364:9:364:38 | ...::D {...} | main.rs:347:9:347:20 | D | main.rs:364:36:364:36 | n | +| main.rs:376:9:376:24 | C {...} | main.rs:346:9:346:20 | C | main.rs:376:22:376:22 | n | +| main.rs:377:9:377:24 | D {...} | main.rs:347:9:347:20 | D | main.rs:377:22:377:22 | n | +| main.rs:380:9:380:24 | C {...} | main.rs:346:9:346:20 | C | main.rs:380:22:380:22 | n | +| main.rs:380:28:380:43 | D {...} | main.rs:347:9:347:20 | D | main.rs:380:41:380:41 | n | +| main.rs:383:9:383:24 | C {...} | main.rs:346:9:346:20 | C | main.rs:383:22:383:22 | n | +| main.rs:384:9:384:24 | D {...} | main.rs:347:9:347:20 | D | main.rs:384:22:384:22 | n | +| main.rs:393:14:393:17 | arr1 | file://:0:0:0:0 | element | main.rs:393:14:393:20 | arr1[2] | +| main.rs:397:14:397:17 | arr2 | file://:0:0:0:0 | element | main.rs:397:14:397:20 | arr2[4] | +| main.rs:401:14:401:17 | arr3 | file://:0:0:0:0 | element | main.rs:401:14:401:20 | arr3[2] | +| main.rs:407:15:407:18 | arr1 | file://:0:0:0:0 | element | main.rs:407:9:407:10 | n1 | +| main.rs:412:15:412:18 | arr2 | file://:0:0:0:0 | element | main.rs:412:9:412:10 | n2 | +| main.rs:420:9:420:17 | SlicePat | file://:0:0:0:0 | element | main.rs:420:10:420:10 | a | +| main.rs:420:9:420:17 | SlicePat | file://:0:0:0:0 | element | main.rs:420:13:420:13 | b | +| main.rs:420:9:420:17 | SlicePat | file://:0:0:0:0 | element | main.rs:420:16:420:16 | c | +| main.rs:430:10:430:16 | mut_arr | file://:0:0:0:0 | element | main.rs:430:10:430:19 | mut_arr[1] | +| main.rs:432:5:432:11 | mut_arr | file://:0:0:0:0 | element | main.rs:432:5:432:14 | mut_arr[1] | +| main.rs:433:13:433:19 | mut_arr | file://:0:0:0:0 | element | main.rs:433:13:433:22 | mut_arr[1] | +| main.rs:435:10:435:16 | mut_arr | file://:0:0:0:0 | element | main.rs:435:10:435:19 | mut_arr[0] | +| main.rs:442:9:442:20 | TuplePat | file://:0:0:0:0 | tuple.0 | main.rs:442:10:442:13 | cond | +| main.rs:442:9:442:20 | TuplePat | file://:0:0:0:0 | tuple.1 | main.rs:442:16:442:19 | name | +| main.rs:442:25:442:29 | names | file://:0:0:0:0 | element | main.rs:442:9:442:20 | TuplePat | +| main.rs:444:41:444:67 | [post] \|...\| ... | main.rs:441:9:441:20 | captured default_name | main.rs:444:41:444:67 | [post] default_name | +| main.rs:444:44:444:55 | this | main.rs:441:9:441:20 | captured default_name | main.rs:444:44:444:55 | default_name | +| main.rs:481:10:481:11 | vs | file://:0:0:0:0 | element | main.rs:481:10:481:14 | vs[0] | +| main.rs:482:11:482:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:482:10:482:35 | * ... | +| main.rs:483:11:483:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:483:10:483:35 | * ... | +| main.rs:485:14:485:15 | vs | file://:0:0:0:0 | element | main.rs:485:9:485:9 | v | +| main.rs:488:9:488:10 | &... | file://:0:0:0:0 | &ref | main.rs:488:10:488:10 | v | +| main.rs:488:15:488:23 | vs.iter() | file://:0:0:0:0 | element | main.rs:488:9:488:10 | &... | +| main.rs:493:9:493:10 | &... | file://:0:0:0:0 | &ref | main.rs:493:10:493:10 | v | +| main.rs:493:15:493:17 | vs2 | file://:0:0:0:0 | element | main.rs:493:9:493:10 | &... | +| main.rs:497:29:497:29 | x | file://:0:0:0:0 | &ref | main.rs:497:28:497:29 | * ... | +| main.rs:498:34:498:34 | x | file://:0:0:0:0 | &ref | main.rs:498:33:498:34 | * ... | +| main.rs:500:14:500:27 | vs.into_iter() | file://:0:0:0:0 | element | main.rs:500:9:500:9 | v | +| main.rs:506:10:506:15 | vs_mut | file://:0:0:0:0 | element | main.rs:506:10:506:18 | vs_mut[0] | +| main.rs:507:11:507:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:507:10:507:39 | * ... | +| main.rs:508:11:508:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:508:10:508:39 | * ... | +| main.rs:510:9:510:14 | &mut ... | file://:0:0:0:0 | &ref | main.rs:510:14:510:14 | v | +| main.rs:510:19:510:35 | vs_mut.iter_mut() | file://:0:0:0:0 | element | main.rs:510:9:510:14 | &mut ... | +| main.rs:524:11:524:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:524:10:524:15 | * ... | diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.ql b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.ql index 29158454b2f7..e3043d55bb6b 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.ql +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.ql @@ -1,5 +1,6 @@ import codeql.rust.dataflow.DataFlow import codeql.rust.dataflow.internal.DataFlowImpl +import codeql.rust.dataflow.internal.Node import utils.test.TranslateModels query predicate localStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { @@ -7,6 +8,27 @@ query predicate localStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { RustDataFlow::simpleLocalFlowStep(nodeFrom, nodeTo, "") } -query predicate storeStep = RustDataFlow::storeStep/3; +class Content extends DataFlow::Content { + predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + exists(string file | + this.getLocation().hasLocationInfo(file, startline, startcolumn, endline, endcolumn) and + filepath = + file.regexpReplaceAll("^/.*/tools/builtins/", "/BUILTINS/") + .regexpReplaceAll("^/.*/.rustup/toolchains/[^/]+/", "/RUSTUP_HOME/toolchain/") + ) + } +} + +class Node extends DataFlow::Node { + Node() { not this instanceof FlowSummaryNode } +} -query predicate readStep = RustDataFlow::readStep/3; +query predicate storeStep(Node node1, Content c, Node node2) { + RustDataFlow::storeContentStep(node1, c, node2) +} + +query predicate readStep(Node node1, Content c, Node node2) { + RustDataFlow::readContentStep(node1, c, node2) +} diff --git a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected index b7afe9dae35b..ff44b6acc8a2 100644 --- a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected @@ -29,32 +29,38 @@ edges | main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:5 | | main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | generated | | main.rs:28:13:28:21 | a.clone() | main.rs:28:9:28:9 | b | provenance | | -| main.rs:41:13:41:13 | w [Wrapper] | main.rs:42:15:42:15 | w [Wrapper] | provenance | | -| main.rs:41:17:41:41 | Wrapper {...} [Wrapper] | main.rs:41:13:41:13 | w [Wrapper] | provenance | | -| main.rs:41:30:41:39 | source(...) | main.rs:41:17:41:41 | Wrapper {...} [Wrapper] | provenance | | -| main.rs:42:15:42:15 | w [Wrapper] | main.rs:43:13:43:28 | Wrapper {...} [Wrapper] | provenance | | -| main.rs:42:15:42:15 | w [Wrapper] | main.rs:45:17:45:17 | w [Wrapper] | provenance | | -| main.rs:43:13:43:28 | Wrapper {...} [Wrapper] | main.rs:43:26:43:26 | n | provenance | | -| main.rs:43:26:43:26 | n | main.rs:43:38:43:38 | n | provenance | | -| main.rs:45:13:45:13 | u [Wrapper] | main.rs:46:15:46:15 | u [Wrapper] | provenance | | -| main.rs:45:17:45:17 | w [Wrapper] | main.rs:45:17:45:25 | w.clone() [Wrapper] | provenance | generated | -| main.rs:45:17:45:25 | w.clone() [Wrapper] | main.rs:45:13:45:13 | u [Wrapper] | provenance | | -| main.rs:46:15:46:15 | u [Wrapper] | main.rs:47:13:47:28 | Wrapper {...} [Wrapper] | provenance | | -| main.rs:47:13:47:28 | Wrapper {...} [Wrapper] | main.rs:47:26:47:26 | n | provenance | | -| main.rs:47:26:47:26 | n | main.rs:47:38:47:38 | n | provenance | | -| main.rs:58:13:58:13 | b [Some] | main.rs:59:23:59:23 | b [Some] | provenance | | -| main.rs:58:17:58:32 | Some(...) [Some] | main.rs:58:13:58:13 | b [Some] | provenance | | -| main.rs:58:22:58:31 | source(...) | main.rs:58:17:58:32 | Some(...) [Some] | provenance | | -| main.rs:59:13:59:13 | z [Some, tuple.1] | main.rs:60:15:60:15 | z [Some, tuple.1] | provenance | | -| main.rs:59:17:59:24 | a.zip(...) [Some, tuple.1] | main.rs:59:13:59:13 | z [Some, tuple.1] | provenance | | -| main.rs:59:23:59:23 | b [Some] | main.rs:59:17:59:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:3 | -| main.rs:60:15:60:15 | z [Some, tuple.1] | main.rs:61:13:61:24 | Some(...) [Some, tuple.1] | provenance | | -| main.rs:61:13:61:24 | Some(...) [Some, tuple.1] | main.rs:61:18:61:23 | TuplePat [tuple.1] | provenance | | -| main.rs:61:18:61:23 | TuplePat [tuple.1] | main.rs:61:22:61:22 | m | provenance | | -| main.rs:61:22:61:22 | m | main.rs:63:22:63:22 | m | provenance | | -| main.rs:84:29:84:29 | [post] y [&ref] | main.rs:85:33:85:33 | y [&ref] | provenance | | -| main.rs:84:32:84:41 | source(...) | main.rs:84:29:84:29 | [post] y [&ref] | provenance | MaD:7 | -| main.rs:85:33:85:33 | y [&ref] | main.rs:85:18:85:34 | ...::read(...) | provenance | MaD:6 | +| main.rs:43:18:43:22 | SelfParam [Wrapper] | main.rs:44:26:44:29 | self [Wrapper] | provenance | | +| main.rs:44:13:44:33 | Wrapper {...} [Wrapper] | main.rs:43:33:45:9 | { ... } [Wrapper] | provenance | | +| main.rs:44:26:44:29 | self [Wrapper] | main.rs:44:26:44:31 | self.n | provenance | | +| main.rs:44:26:44:31 | self.n | main.rs:44:13:44:33 | Wrapper {...} [Wrapper] | provenance | | +| main.rs:49:13:49:13 | w [Wrapper] | main.rs:50:15:50:15 | w [Wrapper] | provenance | | +| main.rs:49:17:49:41 | Wrapper {...} [Wrapper] | main.rs:49:13:49:13 | w [Wrapper] | provenance | | +| main.rs:49:30:49:39 | source(...) | main.rs:49:17:49:41 | Wrapper {...} [Wrapper] | provenance | | +| main.rs:50:15:50:15 | w [Wrapper] | main.rs:43:18:43:22 | SelfParam [Wrapper] | provenance | | +| main.rs:50:15:50:15 | w [Wrapper] | main.rs:51:13:51:28 | Wrapper {...} [Wrapper] | provenance | | +| main.rs:50:15:50:15 | w [Wrapper] | main.rs:53:17:53:17 | w [Wrapper] | provenance | | +| main.rs:50:15:50:15 | w [Wrapper] | main.rs:53:17:53:25 | w.clone() [Wrapper] | provenance | | +| main.rs:51:13:51:28 | Wrapper {...} [Wrapper] | main.rs:51:26:51:26 | n | provenance | | +| main.rs:51:26:51:26 | n | main.rs:51:38:51:38 | n | provenance | | +| main.rs:53:13:53:13 | u [Wrapper] | main.rs:54:15:54:15 | u [Wrapper] | provenance | | +| main.rs:53:17:53:17 | w [Wrapper] | main.rs:53:17:53:25 | w.clone() [Wrapper] | provenance | generated | +| main.rs:53:17:53:25 | w.clone() [Wrapper] | main.rs:53:13:53:13 | u [Wrapper] | provenance | | +| main.rs:54:15:54:15 | u [Wrapper] | main.rs:55:13:55:28 | Wrapper {...} [Wrapper] | provenance | | +| main.rs:55:13:55:28 | Wrapper {...} [Wrapper] | main.rs:55:26:55:26 | n | provenance | | +| main.rs:55:26:55:26 | n | main.rs:55:38:55:38 | n | provenance | | +| main.rs:66:13:66:13 | b [Some] | main.rs:67:23:67:23 | b [Some] | provenance | | +| main.rs:66:17:66:32 | Some(...) [Some] | main.rs:66:13:66:13 | b [Some] | provenance | | +| main.rs:66:22:66:31 | source(...) | main.rs:66:17:66:32 | Some(...) [Some] | provenance | | +| main.rs:67:13:67:13 | z [Some, tuple.1] | main.rs:68:15:68:15 | z [Some, tuple.1] | provenance | | +| main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | main.rs:67:13:67:13 | z [Some, tuple.1] | provenance | | +| main.rs:67:23:67:23 | b [Some] | main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | provenance | MaD:3 | +| main.rs:68:15:68:15 | z [Some, tuple.1] | main.rs:69:13:69:24 | Some(...) [Some, tuple.1] | provenance | | +| main.rs:69:13:69:24 | Some(...) [Some, tuple.1] | main.rs:69:18:69:23 | TuplePat [tuple.1] | provenance | | +| main.rs:69:18:69:23 | TuplePat [tuple.1] | main.rs:69:22:69:22 | m | provenance | | +| main.rs:69:22:69:22 | m | main.rs:71:22:71:22 | m | provenance | | +| main.rs:92:29:92:29 | [post] y [&ref] | main.rs:93:33:93:33 | y [&ref] | provenance | | +| main.rs:92:32:92:41 | source(...) | main.rs:92:29:92:29 | [post] y [&ref] | provenance | MaD:7 | +| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:6 | nodes | main.rs:12:9:12:9 | a [Some] | semmle.label | a [Some] | | main.rs:12:13:12:28 | Some(...) [Some] | semmle.label | Some(...) [Some] | @@ -79,36 +85,42 @@ nodes | main.rs:28:13:28:13 | a | semmle.label | a | | main.rs:28:13:28:21 | a.clone() | semmle.label | a.clone() | | main.rs:29:10:29:10 | b | semmle.label | b | -| main.rs:41:13:41:13 | w [Wrapper] | semmle.label | w [Wrapper] | -| main.rs:41:17:41:41 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] | -| main.rs:41:30:41:39 | source(...) | semmle.label | source(...) | -| main.rs:42:15:42:15 | w [Wrapper] | semmle.label | w [Wrapper] | -| main.rs:43:13:43:28 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] | -| main.rs:43:26:43:26 | n | semmle.label | n | -| main.rs:43:38:43:38 | n | semmle.label | n | -| main.rs:45:13:45:13 | u [Wrapper] | semmle.label | u [Wrapper] | -| main.rs:45:17:45:17 | w [Wrapper] | semmle.label | w [Wrapper] | -| main.rs:45:17:45:25 | w.clone() [Wrapper] | semmle.label | w.clone() [Wrapper] | -| main.rs:46:15:46:15 | u [Wrapper] | semmle.label | u [Wrapper] | -| main.rs:47:13:47:28 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] | -| main.rs:47:26:47:26 | n | semmle.label | n | -| main.rs:47:38:47:38 | n | semmle.label | n | -| main.rs:58:13:58:13 | b [Some] | semmle.label | b [Some] | -| main.rs:58:17:58:32 | Some(...) [Some] | semmle.label | Some(...) [Some] | -| main.rs:58:22:58:31 | source(...) | semmle.label | source(...) | -| main.rs:59:13:59:13 | z [Some, tuple.1] | semmle.label | z [Some, tuple.1] | -| main.rs:59:17:59:24 | a.zip(...) [Some, tuple.1] | semmle.label | a.zip(...) [Some, tuple.1] | -| main.rs:59:23:59:23 | b [Some] | semmle.label | b [Some] | -| main.rs:60:15:60:15 | z [Some, tuple.1] | semmle.label | z [Some, tuple.1] | -| main.rs:61:13:61:24 | Some(...) [Some, tuple.1] | semmle.label | Some(...) [Some, tuple.1] | -| main.rs:61:18:61:23 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] | -| main.rs:61:22:61:22 | m | semmle.label | m | -| main.rs:63:22:63:22 | m | semmle.label | m | -| main.rs:84:29:84:29 | [post] y [&ref] | semmle.label | [post] y [&ref] | -| main.rs:84:32:84:41 | source(...) | semmle.label | source(...) | -| main.rs:85:18:85:34 | ...::read(...) | semmle.label | ...::read(...) | -| main.rs:85:33:85:33 | y [&ref] | semmle.label | y [&ref] | +| main.rs:43:18:43:22 | SelfParam [Wrapper] | semmle.label | SelfParam [Wrapper] | +| main.rs:43:33:45:9 | { ... } [Wrapper] | semmle.label | { ... } [Wrapper] | +| main.rs:44:13:44:33 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] | +| main.rs:44:26:44:29 | self [Wrapper] | semmle.label | self [Wrapper] | +| main.rs:44:26:44:31 | self.n | semmle.label | self.n | +| main.rs:49:13:49:13 | w [Wrapper] | semmle.label | w [Wrapper] | +| main.rs:49:17:49:41 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] | +| main.rs:49:30:49:39 | source(...) | semmle.label | source(...) | +| main.rs:50:15:50:15 | w [Wrapper] | semmle.label | w [Wrapper] | +| main.rs:51:13:51:28 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] | +| main.rs:51:26:51:26 | n | semmle.label | n | +| main.rs:51:38:51:38 | n | semmle.label | n | +| main.rs:53:13:53:13 | u [Wrapper] | semmle.label | u [Wrapper] | +| main.rs:53:17:53:17 | w [Wrapper] | semmle.label | w [Wrapper] | +| main.rs:53:17:53:25 | w.clone() [Wrapper] | semmle.label | w.clone() [Wrapper] | +| main.rs:54:15:54:15 | u [Wrapper] | semmle.label | u [Wrapper] | +| main.rs:55:13:55:28 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] | +| main.rs:55:26:55:26 | n | semmle.label | n | +| main.rs:55:38:55:38 | n | semmle.label | n | +| main.rs:66:13:66:13 | b [Some] | semmle.label | b [Some] | +| main.rs:66:17:66:32 | Some(...) [Some] | semmle.label | Some(...) [Some] | +| main.rs:66:22:66:31 | source(...) | semmle.label | source(...) | +| main.rs:67:13:67:13 | z [Some, tuple.1] | semmle.label | z [Some, tuple.1] | +| main.rs:67:17:67:24 | a.zip(...) [Some, tuple.1] | semmle.label | a.zip(...) [Some, tuple.1] | +| main.rs:67:23:67:23 | b [Some] | semmle.label | b [Some] | +| main.rs:68:15:68:15 | z [Some, tuple.1] | semmle.label | z [Some, tuple.1] | +| main.rs:69:13:69:24 | Some(...) [Some, tuple.1] | semmle.label | Some(...) [Some, tuple.1] | +| main.rs:69:18:69:23 | TuplePat [tuple.1] | semmle.label | TuplePat [tuple.1] | +| main.rs:69:22:69:22 | m | semmle.label | m | +| main.rs:71:22:71:22 | m | semmle.label | m | +| main.rs:92:29:92:29 | [post] y [&ref] | semmle.label | [post] y [&ref] | +| main.rs:92:32:92:41 | source(...) | semmle.label | source(...) | +| main.rs:93:18:93:34 | ...::read(...) | semmle.label | ...::read(...) | +| main.rs:93:33:93:33 | y [&ref] | semmle.label | y [&ref] | subpaths +| main.rs:50:15:50:15 | w [Wrapper] | main.rs:43:18:43:22 | SelfParam [Wrapper] | main.rs:43:33:45:9 | { ... } [Wrapper] | main.rs:53:17:53:25 | w.clone() [Wrapper] | testFailures #select | main.rs:13:10:13:19 | a.unwrap() | main.rs:12:18:12:27 | source(...) | main.rs:13:10:13:19 | a.unwrap() | $@ | main.rs:12:18:12:27 | source(...) | source(...) | @@ -117,7 +129,7 @@ testFailures | main.rs:22:10:22:19 | b.unwrap() | main.rs:19:34:19:43 | source(...) | main.rs:22:10:22:19 | b.unwrap() | $@ | main.rs:19:34:19:43 | source(...) | source(...) | | main.rs:27:10:27:10 | a | main.rs:26:13:26:22 | source(...) | main.rs:27:10:27:10 | a | $@ | main.rs:26:13:26:22 | source(...) | source(...) | | main.rs:29:10:29:10 | b | main.rs:26:13:26:22 | source(...) | main.rs:29:10:29:10 | b | $@ | main.rs:26:13:26:22 | source(...) | source(...) | -| main.rs:43:38:43:38 | n | main.rs:41:30:41:39 | source(...) | main.rs:43:38:43:38 | n | $@ | main.rs:41:30:41:39 | source(...) | source(...) | -| main.rs:47:38:47:38 | n | main.rs:41:30:41:39 | source(...) | main.rs:47:38:47:38 | n | $@ | main.rs:41:30:41:39 | source(...) | source(...) | -| main.rs:63:22:63:22 | m | main.rs:58:22:58:31 | source(...) | main.rs:63:22:63:22 | m | $@ | main.rs:58:22:58:31 | source(...) | source(...) | -| main.rs:85:18:85:34 | ...::read(...) | main.rs:84:32:84:41 | source(...) | main.rs:85:18:85:34 | ...::read(...) | $@ | main.rs:84:32:84:41 | source(...) | source(...) | +| main.rs:51:38:51:38 | n | main.rs:49:30:49:39 | source(...) | main.rs:51:38:51:38 | n | $@ | main.rs:49:30:49:39 | source(...) | source(...) | +| main.rs:55:38:55:38 | n | main.rs:49:30:49:39 | source(...) | main.rs:55:38:55:38 | n | $@ | main.rs:49:30:49:39 | source(...) | source(...) | +| main.rs:71:22:71:22 | m | main.rs:66:22:66:31 | source(...) | main.rs:71:22:71:22 | m | $@ | main.rs:66:22:66:31 | source(...) | source(...) | +| main.rs:93:18:93:34 | ...::read(...) | main.rs:92:32:92:41 | source(...) | main.rs:93:18:93:34 | ...::read(...) | $@ | main.rs:92:32:92:41 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/modeled/main.rs b/rust/ql/test/library-tests/dataflow/modeled/main.rs index cb955ce32bde..3772d6487957 100644 --- a/rust/ql/test/library-tests/dataflow/modeled/main.rs +++ b/rust/ql/test/library-tests/dataflow/modeled/main.rs @@ -32,11 +32,19 @@ fn i64_clone() { mod my_clone { use super::{sink, source}; - #[derive(Clone)] + // TODO: Replace manual implementation below with `#[derive(Clone)]`, + // once the extractor expands the `#[derive]` attributes. + // #[derive(Clone)] struct Wrapper { n: i64, } + impl Clone for Wrapper { + fn clone(&self) -> Self { + Wrapper { n: self.n } + } + } + pub fn wrapper_clone() { let w = Wrapper { n: source(73) }; match w { diff --git a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected index e69de29bb2d1..0aa771632529 100644 --- a/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/dataflow/sources/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,13 @@ +multipleCanonicalPaths +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | diff --git a/rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..0aa771632529 --- /dev/null +++ b/rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,13 @@ +multipleCanonicalPaths +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | diff --git a/rust/ql/test/library-tests/operations/Operations.ql b/rust/ql/test/library-tests/operations/Operations.ql index 482373c8d052..32adb83e3410 100644 --- a/rust/ql/test/library-tests/operations/Operations.ql +++ b/rust/ql/test/library-tests/operations/Operations.ql @@ -1,5 +1,6 @@ import rust import utils.test.InlineExpectationsTest +import TestUtils string describe(Expr op) { op instanceof Operation and result = "Operation" @@ -40,6 +41,7 @@ module OperationsTest implements TestSig { predicate hasActualResult(Location location, string element, string tag, string value) { exists(Expr op | + toBeTested(op) and location = op.getLocation() and location.getFile().getBaseName() != "" and element = op.toString() and diff --git a/rust/ql/test/library-tests/path-resolution/my.rs b/rust/ql/test/library-tests/path-resolution/my.rs index 29856d613c22..3d7b150214aa 100644 --- a/rust/ql/test/library-tests/path-resolution/my.rs +++ b/rust/ql/test/library-tests/path-resolution/my.rs @@ -16,13 +16,13 @@ mod my4 { } pub use my4::my5::f as nested_f; // $ item=I201 - +#[rustfmt::skip] type Result< T, // T > = ::std::result::Result< T, // $ item=T - String, ->; // my::Result + String,> // $ item=Result +; // my::Result fn int_div( x: i32, // $ item=i32 @@ -30,7 +30,7 @@ fn int_div( ) -> Result // $ item=my::Result $ item=i32 { if y == 0 { - return Err("Div by zero".to_string()); + return Err("Div by zero".to_string()); // $ item=Err } - Ok(x / y) + Ok(x / y) // $ item=Ok } diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.expected b/rust/ql/test/library-tests/path-resolution/path-resolution.expected index 264e8757d511..806b00590936 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.expected +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.expected @@ -352,15 +352,15 @@ resolvePath | my.rs:18:9:18:16 | ...::my5 | my.rs:15:5:15:16 | mod my5 | | my.rs:18:9:18:19 | ...::f | my/my4/my5/mod.rs:1:1:3:1 | fn f | | my.rs:22:5:22:9 | std | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/std/src/lib.rs:0:0:0:0 | Crate(std@0.0.0) | -| my.rs:22:5:22:17 | ...::result | file://:0:0:0:0 | mod result | -| my.rs:22:5:25:1 | ...::Result::<...> | file://:0:0:0:0 | enum Result | +| my.rs:22:5:22:17 | ...::result | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/lib.rs:356:1:356:15 | mod result | +| my.rs:22:5:24:12 | ...::Result::<...> | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | enum Result | | my.rs:23:5:23:5 | T | my.rs:21:5:21:5 | T | | my.rs:28:8:28:10 | i32 | file:///BUILTINS/types.rs:12:1:12:15 | struct i32 | | my.rs:29:8:29:10 | i32 | file:///BUILTINS/types.rs:12:1:12:15 | struct i32 | -| my.rs:30:6:30:16 | Result::<...> | my.rs:20:1:25:2 | type Result<...> | +| my.rs:30:6:30:16 | Result::<...> | my.rs:18:34:25:1 | type Result<...> | | my.rs:30:13:30:15 | i32 | file:///BUILTINS/types.rs:12:1:12:15 | struct i32 | -| my.rs:33:16:33:18 | Err | file://:0:0:0:0 | Err | -| my.rs:35:5:35:6 | Ok | file://:0:0:0:0 | Ok | +| my.rs:33:16:33:18 | Err | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:534:5:537:56 | Err | +| my.rs:35:5:35:6 | Ok | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:529:5:532:55 | Ok | | my/nested.rs:9:13:9:13 | f | my/nested.rs:3:9:5:9 | fn f | | my/nested.rs:15:9:15:15 | nested2 | my/nested.rs:2:5:11:5 | mod nested2 | | my/nested.rs:15:9:15:18 | ...::f | my/nested.rs:3:9:5:9 | fn f | diff --git a/rust/ql/test/library-tests/path-resolution/path-resolution.ql b/rust/ql/test/library-tests/path-resolution/path-resolution.ql index 88ea10c0eba0..d04036f7b516 100644 --- a/rust/ql/test/library-tests/path-resolution/path-resolution.ql +++ b/rust/ql/test/library-tests/path-resolution/path-resolution.ql @@ -21,5 +21,7 @@ class ItemNodeLoc extends ItemNodeFinal { } query predicate resolvePath(Path p, ItemNodeLoc i) { - toBeTested(p) and not p.isInMacroExpansion() and i = resolvePath(p) + toBeTested(p) and + not p.isFromMacroExpansion() and + i = resolvePath(p) } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index b8b52cf4b50c..4657df91cf39 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1468,96 +1468,96 @@ inferType | main.rs:1150:15:1150:16 | &x | | file://:0:0:0:0 | & | | main.rs:1150:15:1150:16 | &x | &T | main.rs:1126:5:1126:13 | S | | main.rs:1150:16:1150:16 | x | | main.rs:1126:5:1126:13 | S | -| main.rs:1164:43:1167:5 | { ... } | | file://:0:0:0:0 | Result | +| main.rs:1164:43:1167:5 | { ... } | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1164:43:1167:5 | { ... } | E | main.rs:1157:5:1158:14 | S1 | | main.rs:1164:43:1167:5 | { ... } | T | main.rs:1157:5:1158:14 | S1 | | main.rs:1165:13:1165:13 | x | | main.rs:1157:5:1158:14 | S1 | -| main.rs:1165:17:1165:30 | ...::Ok(...) | | file://:0:0:0:0 | Result | +| main.rs:1165:17:1165:30 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1165:17:1165:30 | ...::Ok(...) | T | main.rs:1157:5:1158:14 | S1 | | main.rs:1165:17:1165:31 | TryExpr | | main.rs:1157:5:1158:14 | S1 | | main.rs:1165:28:1165:29 | S1 | | main.rs:1157:5:1158:14 | S1 | -| main.rs:1166:9:1166:22 | ...::Ok(...) | | file://:0:0:0:0 | Result | +| main.rs:1166:9:1166:22 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1166:9:1166:22 | ...::Ok(...) | E | main.rs:1157:5:1158:14 | S1 | | main.rs:1166:9:1166:22 | ...::Ok(...) | T | main.rs:1157:5:1158:14 | S1 | | main.rs:1166:20:1166:21 | S1 | | main.rs:1157:5:1158:14 | S1 | -| main.rs:1170:46:1174:5 | { ... } | | file://:0:0:0:0 | Result | +| main.rs:1170:46:1174:5 | { ... } | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1170:46:1174:5 | { ... } | E | main.rs:1160:5:1161:14 | S2 | | main.rs:1170:46:1174:5 | { ... } | T | main.rs:1157:5:1158:14 | S1 | -| main.rs:1171:13:1171:13 | x | | file://:0:0:0:0 | Result | +| main.rs:1171:13:1171:13 | x | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1171:13:1171:13 | x | T | main.rs:1157:5:1158:14 | S1 | -| main.rs:1171:17:1171:30 | ...::Ok(...) | | file://:0:0:0:0 | Result | +| main.rs:1171:17:1171:30 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1171:17:1171:30 | ...::Ok(...) | T | main.rs:1157:5:1158:14 | S1 | | main.rs:1171:28:1171:29 | S1 | | main.rs:1157:5:1158:14 | S1 | | main.rs:1172:13:1172:13 | y | | main.rs:1157:5:1158:14 | S1 | -| main.rs:1172:17:1172:17 | x | | file://:0:0:0:0 | Result | +| main.rs:1172:17:1172:17 | x | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1172:17:1172:17 | x | T | main.rs:1157:5:1158:14 | S1 | | main.rs:1172:17:1172:18 | TryExpr | | main.rs:1157:5:1158:14 | S1 | -| main.rs:1173:9:1173:22 | ...::Ok(...) | | file://:0:0:0:0 | Result | +| main.rs:1173:9:1173:22 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1173:9:1173:22 | ...::Ok(...) | E | main.rs:1160:5:1161:14 | S2 | | main.rs:1173:9:1173:22 | ...::Ok(...) | T | main.rs:1157:5:1158:14 | S1 | | main.rs:1173:20:1173:21 | S1 | | main.rs:1157:5:1158:14 | S1 | -| main.rs:1177:40:1182:5 | { ... } | | file://:0:0:0:0 | Result | +| main.rs:1177:40:1182:5 | { ... } | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1177:40:1182:5 | { ... } | E | main.rs:1160:5:1161:14 | S2 | | main.rs:1177:40:1182:5 | { ... } | T | main.rs:1157:5:1158:14 | S1 | -| main.rs:1178:13:1178:13 | x | | file://:0:0:0:0 | Result | -| main.rs:1178:13:1178:13 | x | T | file://:0:0:0:0 | Result | +| main.rs:1178:13:1178:13 | x | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | +| main.rs:1178:13:1178:13 | x | T | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1178:13:1178:13 | x | T.T | main.rs:1157:5:1158:14 | S1 | -| main.rs:1178:17:1178:42 | ...::Ok(...) | | file://:0:0:0:0 | Result | -| main.rs:1178:17:1178:42 | ...::Ok(...) | T | file://:0:0:0:0 | Result | +| main.rs:1178:17:1178:42 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | +| main.rs:1178:17:1178:42 | ...::Ok(...) | T | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1178:17:1178:42 | ...::Ok(...) | T.T | main.rs:1157:5:1158:14 | S1 | -| main.rs:1178:28:1178:41 | ...::Ok(...) | | file://:0:0:0:0 | Result | +| main.rs:1178:28:1178:41 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1178:28:1178:41 | ...::Ok(...) | T | main.rs:1157:5:1158:14 | S1 | | main.rs:1178:39:1178:40 | S1 | | main.rs:1157:5:1158:14 | S1 | -| main.rs:1180:17:1180:17 | x | | file://:0:0:0:0 | Result | -| main.rs:1180:17:1180:17 | x | T | file://:0:0:0:0 | Result | +| main.rs:1180:17:1180:17 | x | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | +| main.rs:1180:17:1180:17 | x | T | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1180:17:1180:17 | x | T.T | main.rs:1157:5:1158:14 | S1 | -| main.rs:1180:17:1180:18 | TryExpr | | file://:0:0:0:0 | Result | +| main.rs:1180:17:1180:18 | TryExpr | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1180:17:1180:18 | TryExpr | T | main.rs:1157:5:1158:14 | S1 | -| main.rs:1180:17:1180:29 | ... .map(...) | | file://:0:0:0:0 | Result | -| main.rs:1181:9:1181:22 | ...::Ok(...) | | file://:0:0:0:0 | Result | +| main.rs:1180:17:1180:29 | ... .map(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | +| main.rs:1181:9:1181:22 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1181:9:1181:22 | ...::Ok(...) | E | main.rs:1160:5:1161:14 | S2 | | main.rs:1181:9:1181:22 | ...::Ok(...) | T | main.rs:1157:5:1158:14 | S1 | | main.rs:1181:20:1181:21 | S1 | | main.rs:1157:5:1158:14 | S1 | -| main.rs:1185:30:1185:34 | input | | file://:0:0:0:0 | Result | +| main.rs:1185:30:1185:34 | input | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1185:30:1185:34 | input | E | main.rs:1157:5:1158:14 | S1 | | main.rs:1185:30:1185:34 | input | T | main.rs:1185:20:1185:27 | T | -| main.rs:1185:69:1192:5 | { ... } | | file://:0:0:0:0 | Result | +| main.rs:1185:69:1192:5 | { ... } | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1185:69:1192:5 | { ... } | E | main.rs:1157:5:1158:14 | S1 | | main.rs:1185:69:1192:5 | { ... } | T | main.rs:1185:20:1185:27 | T | | main.rs:1186:13:1186:17 | value | | main.rs:1185:20:1185:27 | T | -| main.rs:1186:21:1186:25 | input | | file://:0:0:0:0 | Result | +| main.rs:1186:21:1186:25 | input | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1186:21:1186:25 | input | E | main.rs:1157:5:1158:14 | S1 | | main.rs:1186:21:1186:25 | input | T | main.rs:1185:20:1185:27 | T | | main.rs:1186:21:1186:26 | TryExpr | | main.rs:1185:20:1185:27 | T | -| main.rs:1187:22:1187:38 | ...::Ok(...) | | file://:0:0:0:0 | Result | +| main.rs:1187:22:1187:38 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1187:22:1187:38 | ...::Ok(...) | T | main.rs:1185:20:1185:27 | T | -| main.rs:1187:22:1190:10 | ... .and_then(...) | | file://:0:0:0:0 | Result | +| main.rs:1187:22:1190:10 | ... .and_then(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1187:33:1187:37 | value | | main.rs:1185:20:1185:27 | T | -| main.rs:1187:53:1190:9 | { ... } | | file://:0:0:0:0 | Result | +| main.rs:1187:53:1190:9 | { ... } | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1187:53:1190:9 | { ... } | E | main.rs:1157:5:1158:14 | S1 | | main.rs:1188:22:1188:27 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | -| main.rs:1189:13:1189:34 | ...::Ok::<...>(...) | | file://:0:0:0:0 | Result | +| main.rs:1189:13:1189:34 | ...::Ok::<...>(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1189:13:1189:34 | ...::Ok::<...>(...) | E | main.rs:1157:5:1158:14 | S1 | -| main.rs:1191:9:1191:23 | ...::Err(...) | | file://:0:0:0:0 | Result | +| main.rs:1191:9:1191:23 | ...::Err(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1191:9:1191:23 | ...::Err(...) | E | main.rs:1157:5:1158:14 | S1 | | main.rs:1191:9:1191:23 | ...::Err(...) | T | main.rs:1185:20:1185:27 | T | | main.rs:1191:21:1191:22 | S1 | | main.rs:1157:5:1158:14 | S1 | -| main.rs:1195:37:1195:52 | try_same_error(...) | | file://:0:0:0:0 | Result | +| main.rs:1195:37:1195:52 | try_same_error(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1195:37:1195:52 | try_same_error(...) | E | main.rs:1157:5:1158:14 | S1 | | main.rs:1195:37:1195:52 | try_same_error(...) | T | main.rs:1157:5:1158:14 | S1 | | main.rs:1196:22:1196:27 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | -| main.rs:1199:37:1199:55 | try_convert_error(...) | | file://:0:0:0:0 | Result | +| main.rs:1199:37:1199:55 | try_convert_error(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1199:37:1199:55 | try_convert_error(...) | E | main.rs:1160:5:1161:14 | S2 | | main.rs:1199:37:1199:55 | try_convert_error(...) | T | main.rs:1157:5:1158:14 | S1 | | main.rs:1200:22:1200:27 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | -| main.rs:1203:37:1203:49 | try_chained(...) | | file://:0:0:0:0 | Result | +| main.rs:1203:37:1203:49 | try_chained(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1203:37:1203:49 | try_chained(...) | E | main.rs:1160:5:1161:14 | S2 | | main.rs:1203:37:1203:49 | try_chained(...) | T | main.rs:1157:5:1158:14 | S1 | | main.rs:1204:22:1204:27 | "{:?}\\n" | | file:///BUILTINS/types.rs:8:1:8:15 | str | -| main.rs:1207:37:1207:63 | try_complex(...) | | file://:0:0:0:0 | Result | +| main.rs:1207:37:1207:63 | try_complex(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1207:37:1207:63 | try_complex(...) | E | main.rs:1157:5:1158:14 | S1 | | main.rs:1207:37:1207:63 | try_complex(...) | T | main.rs:1157:5:1158:14 | S1 | -| main.rs:1207:49:1207:62 | ...::Ok(...) | | file://:0:0:0:0 | Result | +| main.rs:1207:49:1207:62 | ...::Ok(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/result.rs:520:1:538:1 | Result | | main.rs:1207:49:1207:62 | ...::Ok(...) | E | main.rs:1157:5:1158:14 | S1 | | main.rs:1207:49:1207:62 | ...::Ok(...) | T | main.rs:1157:5:1158:14 | S1 | | main.rs:1207:60:1207:61 | S1 | | main.rs:1157:5:1158:14 | S1 | diff --git a/rust/ql/test/library-tests/type-inference/type-inference.ql b/rust/ql/test/library-tests/type-inference/type-inference.ql index 6801a9ca5692..94d8ee237962 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.ql +++ b/rust/ql/test/library-tests/type-inference/type-inference.ql @@ -11,23 +11,27 @@ class TypeLoc extends TypeFinal { ) { exists(string file | this.getLocation().hasLocationInfo(file, startline, startcolumn, endline, endcolumn) and - filepath = file.regexpReplaceAll("^/.*/tools/builtins/", "/BUILTINS/") + filepath = + file.regexpReplaceAll("^/.*/tools/builtins/", "/BUILTINS/") + .regexpReplaceAll("^/.*/.rustup/toolchains/[^/]+/", "/RUSTUP_HOME/toolchain/") ) } } query predicate inferType(AstNode n, TypePath path, TypeLoc t) { t = TypeInference::inferType(n, path) and - n.fromSource() + n.fromSource() and + not n.isFromMacroExpansion() } module ResolveTest implements TestSig { string getARelevantTag() { result = ["method", "fieldof"] } private predicate functionHasValue(Function f, string value) { - f.getAPrecedingComment().getCommentText() = value + f.getAPrecedingComment().getCommentText() = value and + f.fromSource() or - not exists(f.getAPrecedingComment()) and + not any(f.getAPrecedingComment()).fromSource() and // TODO: Default to canonical path once that is available value = f.getName().getText() } @@ -35,7 +39,9 @@ module ResolveTest implements TestSig { predicate hasActualResult(Location location, string element, string tag, string value) { exists(AstNode source, AstNode target | location = source.getLocation() and - element = source.toString() + element = source.toString() and + source.fromSource() and + not source.isFromMacroExpansion() | target = source.(MethodCallExpr).getStaticTarget() and functionHasValue(target, value) and diff --git a/rust/ql/test/library-tests/variables/Ssa.ql b/rust/ql/test/library-tests/variables/Ssa.ql index c972bb2747cd..d93a1f13b649 100644 --- a/rust/ql/test/library-tests/variables/Ssa.ql +++ b/rust/ql/test/library-tests/variables/Ssa.ql @@ -4,31 +4,38 @@ import codeql.rust.controlflow.ControlFlowGraph import codeql.rust.dataflow.Ssa import codeql.rust.dataflow.internal.SsaImpl import Impl::TestAdjacentRefs as RefTest +import TestUtils -query predicate definition(Ssa::Definition def, Variable v) { def.getSourceVariable() = v } +query predicate definition(Ssa::Definition def, Variable v) { + toBeTested(v.getEnclosingCfgScope()) and def.getSourceVariable() = v +} query predicate read(Ssa::Definition def, Variable v, CfgNode read) { - def.getSourceVariable() = v and read = def.getARead() + toBeTested(v.getEnclosingCfgScope()) and def.getSourceVariable() = v and read = def.getARead() } query predicate firstRead(Ssa::Definition def, Variable v, CfgNode read) { - def.getSourceVariable() = v and read = def.getAFirstRead() + toBeTested(v.getEnclosingCfgScope()) and + def.getSourceVariable() = v and + read = def.getAFirstRead() } query predicate adjacentReads(Ssa::Definition def, Variable v, CfgNode read1, CfgNode read2) { + toBeTested(v.getEnclosingCfgScope()) and def.getSourceVariable() = v and def.hasAdjacentReads(read1, read2) } query predicate phi(Ssa::PhiDefinition phi, Variable v, Ssa::Definition input) { - phi.getSourceVariable() = v and input = phi.getAnInput() + toBeTested(v.getEnclosingCfgScope()) and phi.getSourceVariable() = v and input = phi.getAnInput() } query predicate phiReadNode(RefTest::Ref phi, Variable v) { - phi.isPhiRead() and phi.getSourceVariable() = v + toBeTested(v.getEnclosingCfgScope()) and phi.isPhiRead() and phi.getSourceVariable() = v } query predicate phiReadNodeFirstRead(RefTest::Ref phi, Variable v, CfgNode read) { + toBeTested(v.getEnclosingCfgScope()) and exists(RefTest::Ref r, BasicBlock bb, int i | phi.isPhiRead() and RefTest::adjacentRefRead(phi, r) and diff --git a/rust/ql/test/library-tests/variables/variables.ql b/rust/ql/test/library-tests/variables/variables.ql index 121975c0c820..dbde4f56e858 100644 --- a/rust/ql/test/library-tests/variables/variables.ql +++ b/rust/ql/test/library-tests/variables/variables.ql @@ -1,29 +1,39 @@ import rust import utils.test.InlineExpectationsTest import codeql.rust.elements.internal.VariableImpl::Impl as VariableImpl +import TestUtils -query predicate variable(Variable v) { any() } +query predicate variable(Variable v) { toBeTested(v.getEnclosingCfgScope()) } -query predicate variableAccess(VariableAccess va, Variable v) { v = va.getVariable() } +query predicate variableAccess(VariableAccess va, Variable v) { + variable(v) and toBeTested(va) and v = va.getVariable() +} -query predicate variableWriteAccess(VariableWriteAccess va, Variable v) { v = va.getVariable() } +query predicate variableWriteAccess(VariableWriteAccess va, Variable v) { + variable(v) and toBeTested(va) and v = va.getVariable() +} -query predicate variableReadAccess(VariableReadAccess va, Variable v) { v = va.getVariable() } +query predicate variableReadAccess(VariableReadAccess va, Variable v) { + variable(v) and toBeTested(va) and v = va.getVariable() +} -query predicate variableInitializer(Variable v, Expr e) { e = v.getInitializer() } +query predicate variableInitializer(Variable v, Expr e) { + variable(v) and toBeTested(e) and e = v.getInitializer() +} -query predicate capturedVariable(Variable v) { v.isCaptured() } +query predicate capturedVariable(Variable v) { variable(v) and v.isCaptured() } -query predicate capturedAccess(VariableAccess va) { va.isCapture() } +query predicate capturedAccess(VariableAccess va) { toBeTested(va) and va.isCapture() } query predicate nestedFunctionAccess(VariableImpl::NestedFunctionAccess nfa, Function f) { - f = nfa.getFunction() + toBeTested(f) and f = nfa.getFunction() } module VariableAccessTest implements TestSig { string getARelevantTag() { result = ["", "write_", "read_"] + "access" } private predicate declAt(Variable v, string filepath, int line, boolean inMacro) { + variable(v) and v.getLocation().hasLocationInfo(filepath, _, _, line, _) and if v.getPat().isInMacroExpansion() then inMacro = true else inMacro = false } @@ -46,6 +56,7 @@ module VariableAccessTest implements TestSig { predicate hasActualResult(Location location, string element, string tag, string value) { exists(VariableAccess va | + toBeTested(va) and location = va.getLocation() and element = va.toString() and decl(va.getVariable(), value) diff --git a/rust/ql/test/query-tests/diagnostics/LinesOfCode.expected b/rust/ql/test/query-tests/diagnostics/LinesOfCode.expected index 76e48043d0d4..5fa7b20e01bb 100644 --- a/rust/ql/test/query-tests/diagnostics/LinesOfCode.expected +++ b/rust/ql/test/query-tests/diagnostics/LinesOfCode.expected @@ -1 +1 @@ -| 77 | +| 60 | diff --git a/rust/ql/test/query-tests/diagnostics/SummaryStatsReduced.expected b/rust/ql/test/query-tests/diagnostics/SummaryStatsReduced.expected index 793ed90a482a..ed21d9772fce 100644 --- a/rust/ql/test/query-tests/diagnostics/SummaryStatsReduced.expected +++ b/rust/ql/test/query-tests/diagnostics/SummaryStatsReduced.expected @@ -9,7 +9,7 @@ | Inconsistencies - Path resolution | 0 | | Inconsistencies - SSA | 0 | | Inconsistencies - data flow | 0 | -| Lines of code extracted | 77 | +| Lines of code extracted | 60 | | Lines of user code extracted | 60 | | Macro calls - resolved | 8 | | Macro calls - total | 9 | diff --git a/rust/ql/test/query-tests/security/CWE-022/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-022/CONSISTENCY/PathResolutionConsistency.expected index 03a2899da095..88e64c648bcf 100644 --- a/rust/ql/test/query-tests/security/CWE-022/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-022/CONSISTENCY/PathResolutionConsistency.expected @@ -39,3 +39,16 @@ multiplePathResolutions | src/main.rs:53:38:53:50 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:53:38:53:50 | ...::from | file://:0:0:0:0 | fn from | | src/main.rs:53:38:53:50 | ...::from | file://:0:0:0:0 | fn from | +multipleCanonicalPaths +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | diff --git a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..ea9e17f0c1d4 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,23 @@ +multipleCanonicalPaths +| file://:0:0:0:0 | fn encode | file://:0:0:0:0 | Crate(core@0.0.0) | ::encode | +| file://:0:0:0:0 | fn encode | file://:0:0:0:0 | Crate(core@0.0.0) | ::encode | +| file://:0:0:0:0 | fn encode_by_ref | file://:0:0:0:0 | Crate(core@0.0.0) | ::encode_by_ref | +| file://:0:0:0:0 | fn encode_by_ref | file://:0:0:0:0 | Crate(core@0.0.0) | ::encode_by_ref | +| file://:0:0:0:0 | fn produces | file://:0:0:0:0 | Crate(core@0.0.0) | ::produces | +| file://:0:0:0:0 | fn produces | file://:0:0:0:0 | Crate(core@0.0.0) | ::produces | +| file://:0:0:0:0 | fn size_hint | file://:0:0:0:0 | Crate(core@0.0.0) | ::size_hint | +| file://:0:0:0:0 | fn size_hint | file://:0:0:0:0 | Crate(core@0.0.0) | ::size_hint | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | impl ...::Encode::<...> for Option::<...> { ... } | file://:0:0:0:0 | Crate(core@0.0.0) | | +| file://:0:0:0:0 | impl ...::Encode::<...> for Option::<...> { ... } | file://:0:0:0:0 | Crate(core@0.0.0) | | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | diff --git a/rust/ql/test/query-tests/security/CWE-327/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-327/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..0aa771632529 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-327/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,13 @@ +multipleCanonicalPaths +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | diff --git a/rust/ql/test/query-tests/security/CWE-328/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-328/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..0aa771632529 --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-328/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,13 @@ +multipleCanonicalPaths +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Equal { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Greater { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | +| file://:0:0:0:0 | impl Ord for Less { ... } | file://:0:0:0:0 | Crate(typenum@1.18.0) | | diff --git a/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..5fb57b10c01f --- /dev/null +++ b/rust/ql/test/query-tests/security/CWE-696/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,27 @@ +multiplePathResolutions +| test.rs:50:3:50:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | +| test.rs:50:3:50:6 | ctor | file://:0:0:0:0 | fn ctor | +| test.rs:55:3:55:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | +| test.rs:55:3:55:6 | ctor | file://:0:0:0:0 | fn ctor | +| test.rs:60:3:60:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | +| test.rs:60:3:60:6 | ctor | file://:0:0:0:0 | fn ctor | +| test.rs:65:3:65:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | +| test.rs:65:3:65:6 | ctor | file://:0:0:0:0 | fn ctor | +| test.rs:73:3:73:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | +| test.rs:73:3:73:6 | ctor | file://:0:0:0:0 | fn ctor | +| test.rs:78:3:78:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | +| test.rs:78:3:78:6 | ctor | file://:0:0:0:0 | fn ctor | +| test.rs:87:3:87:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | +| test.rs:87:3:87:6 | ctor | file://:0:0:0:0 | fn ctor | +| test.rs:94:3:94:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | +| test.rs:94:3:94:6 | ctor | file://:0:0:0:0 | fn ctor | +| test.rs:128:3:128:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | +| test.rs:128:3:128:6 | ctor | file://:0:0:0:0 | fn ctor | +| test.rs:139:3:139:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | +| test.rs:139:3:139:6 | ctor | file://:0:0:0:0 | fn ctor | +| test.rs:144:3:144:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | +| test.rs:144:3:144:6 | ctor | file://:0:0:0:0 | fn ctor | +| test.rs:150:3:150:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | +| test.rs:150:3:150:6 | ctor | file://:0:0:0:0 | fn ctor | +| test.rs:168:3:168:6 | ctor | file://:0:0:0:0 | Crate(ctor@0.2.9) | +| test.rs:168:3:168:6 | ctor | file://:0:0:0:0 | fn ctor | diff --git a/rust/schema/prelude.py b/rust/schema/prelude.py index 5fc4aba2e1ad..6d356567d22a 100644 --- a/rust/schema/prelude.py +++ b/rust/schema/prelude.py @@ -116,7 +116,6 @@ class ExtractorStep(Element): class Crate(Locatable): name: optional[string] version: optional[string] - module: optional["Module"] cfg_options: list[string] named_dependencies: list["NamedCrate"] | ql.internal