| <!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Assorted functions shared by several assists."><title>ide_assists::utils - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-77263533.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="ide_assists" data-themes="" data-resource-suffix="" data-rustdoc-version="1.94.0 (4a4ef493e 2026-03-02)" data-channel="1.94.0" data-search-js="search-9e2438ea.js" data-stringdex-js="stringdex-b897f86f.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-7bab91a1.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-ffcac47a.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Module utils</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../ide_assists/index.html">ide_<wbr>assists</a><span class="version">0.0.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module utils</a></h2><h3><a href="#modules">Module Items</a></h3><ul class="block"><li><a href="#modules" title="Modules">Modules</a></li><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#enums" title="Enums">Enums</a></li><li><a href="#functions" title="Functions">Functions</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="../index.html">In crate ide_<wbr>assists</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">ide_assists</a></div><h1>Module <span>utils</span> <button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/ide_assists/utils.rs.html#1-1313">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Assorted functions shared by several assists.</p> |
| </div></details><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">Β§</a></h2><dl class="item-table"><dt><a class="mod" href="gen_trait_fn_body/index.html" title="mod ide_assists::utils::gen_trait_fn_body">gen_<wbr>trait_<wbr>fn_<wbr>body</a><span title="Restricted Visibility"> π</span> </dt><dd>This module contains functions to generate default trait impl function bodies where possible.</dd><dt><a class="mod" href="ref_field_expr/index.html" title="mod ide_assists::utils::ref_field_expr">ref_<wbr>field_<wbr>expr</a><span title="Restricted Visibility"> π</span> </dt><dd>This module contains a helper for converting a field access expression into a |
| path expression. This is used when destructuring a tuple or struct.</dd></dl><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">Β§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.ReferenceConversion.html" title="struct ide_assists::utils::ReferenceConversion">Reference<wbr>Conversion</a><span title="Restricted Visibility"> π</span> </dt></dl><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">Β§</a></h2><dl class="item-table"><dt><a class="enum" href="enum.DefaultMethods.html" title="enum ide_assists::utils::DefaultMethods">Default<wbr>Methods</a></dt><dt><a class="enum" href="enum.IgnoreAssocItems.html" title="enum ide_assists::utils::IgnoreAssocItems">Ignore<wbr>Assoc<wbr>Items</a></dt><dt><a class="enum" href="enum.ReferenceConversionType.html" title="enum ide_assists::utils::ReferenceConversionType">Reference<wbr>Conversion<wbr>Type</a><span title="Restricted Visibility"> π</span> </dt></dl><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">Β§</a></h2><dl class="item-table"><dt><a class="fn" href="fn.add_group_separators.html" title="fn ide_assists::utils::add_group_separators">add_<wbr>group_<wbr>separators</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.add_method_to_adt.html" title="fn ide_assists::utils::add_method_to_adt">add_<wbr>method_<wbr>to_<wbr>adt</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.add_trait_assoc_items_to_impl.html" title="fn ide_assists::utils::add_trait_assoc_items_to_impl">add_<wbr>trait_<wbr>assoc_<wbr>items_<wbr>to_<wbr>impl</a></dt><dd>Given <code>original_items</code> retrieved from the trait definition (usually by |
| <a href="fn.filter_assoc_items.html" title="fn ide_assists::utils::filter_assoc_items"><code>filter_assoc_items()</code></a>), clones each item for update and applies path transformation to it, |
| then inserts into <code>impl_</code>. Returns the modified <code>impl_</code> and the first associated item that got |
| inserted.</dd><dt><a class="fn" href="fn.check_pat_variant_from_enum.html" title="fn ide_assists::utils::check_pat_variant_from_enum">check_<wbr>pat_<wbr>variant_<wbr>from_<wbr>enum</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.check_pat_variant_nested_or_literal_with_depth.html" title="fn ide_assists::utils::check_pat_variant_nested_or_literal_with_depth">check_<wbr>pat_<wbr>variant_<wbr>nested_<wbr>or_<wbr>literal_<wbr>with_<wbr>depth</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.convert_param_list_to_arg_list.html" title="fn ide_assists::utils::convert_param_list_to_arg_list">convert_<wbr>param_<wbr>list_<wbr>to_<wbr>arg_<wbr>list</a><span title="Restricted Visibility"> π</span> </dt><dd>Convert a list of function params to a list of arguments that can be passed |
| into a function call.</dd><dt><a class="fn" href="fn.convert_reference_type.html" title="fn ide_assists::utils::convert_reference_type">convert_<wbr>reference_<wbr>type</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.could_deref_to_target.html" title="fn ide_assists::utils::could_deref_to_target">could_<wbr>deref_<wbr>to_<wbr>target</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.cover_let_chain.html" title="fn ide_assists::utils::cover_let_chain">cover_<wbr>let_<wbr>chain</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.does_pat_match_variant.html" title="fn ide_assists::utils::does_pat_match_variant">does_<wbr>pat_<wbr>match_<wbr>variant</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.does_pat_variant_nested_or_literal.html" title="fn ide_assists::utils::does_pat_variant_nested_or_literal">does_<wbr>pat_<wbr>variant_<wbr>nested_<wbr>or_<wbr>literal</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.extract_trivial_expression.html" title="fn ide_assists::utils::extract_trivial_expression">extract_<wbr>trivial_<wbr>expression</a></dt><dt><a class="fn" href="fn.filter_assoc_items.html" title="fn ide_assists::utils::filter_assoc_items">filter_<wbr>assoc_<wbr>items</a></dt><dt><a class="fn" href="fn.find_impl_block_end.html" title="fn ide_assists::utils::find_impl_block_end">find_<wbr>impl_<wbr>block_<wbr>end</a><span title="Restricted Visibility"> π</span> </dt><dd>Find the end of the <code>impl</code> block for the given <code>ast::Impl</code>.</dd><dt><a class="fn" href="fn.find_struct_impl.html" title="fn ide_assists::utils::find_struct_impl">find_<wbr>struct_<wbr>impl</a><span title="Restricted Visibility"> π</span> </dt><dd><code>find_struct_impl</code> looks for impl of a struct, but this also has additional feature |
| where it takes a list of function names and check if they exist inside impl_, if |
| even one match is found, it returns None.</dd><dt><a class="fn" href="fn.generate_impl.html" title="fn ide_assists::utils::generate_impl">generate_<wbr>impl</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.generate_impl_inner.html" title="fn ide_assists::utils::generate_impl_inner">generate_<wbr>impl_<wbr>inner</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.generate_impl_text.html" title="fn ide_assists::utils::generate_impl_text">generate_<wbr>impl_<wbr>text</a><span title="Restricted Visibility"> π</span> </dt><dd>Generates the surrounding <code>impl Type { <code> }</code> including type and lifetime |
| parameters.</dd><dt><a class="fn" href="fn.generate_impl_text_inner.html" title="fn ide_assists::utils::generate_impl_text_inner">generate_<wbr>impl_<wbr>text_<wbr>inner</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.generate_impl_with_item.html" title="fn ide_assists::utils::generate_impl_with_item">generate_<wbr>impl_<wbr>with_<wbr>item</a><span title="Restricted Visibility"> π</span> </dt><dd>Generates the corresponding <code>impl Type {}</code> including type and lifetime |
| parameters.</dd><dt><a class="fn" href="fn.generate_trait_impl.html" title="fn ide_assists::utils::generate_trait_impl">generate_<wbr>trait_<wbr>impl</a><span title="Restricted Visibility"> π</span> </dt><dd>Generates the corresponding <code>impl <trait> for Type {}</code> including type |
| and lifetime parameters, with <code><trait></code> appended to <code>impl</code>βs generic parametersβ bounds.</dd><dt><a class="fn" href="fn.generate_trait_impl_intransitive.html" title="fn ide_assists::utils::generate_trait_impl_intransitive">generate_<wbr>trait_<wbr>impl_<wbr>intransitive</a><span title="Restricted Visibility"> π</span> </dt><dd>Generates the corresponding <code>impl <trait> for Type {}</code> including type |
| and lifetime parameters, with <code>impl</code>βs generic parametersβ bounds kept as-is.</dd><dt><a class="fn" href="fn.generate_trait_impl_text.html" title="fn ide_assists::utils::generate_trait_impl_text">generate_<wbr>trait_<wbr>impl_<wbr>text</a><span title="Restricted Visibility"> π</span> </dt><dd>Generates the surrounding <code>impl <trait> for Type { <code> }</code> including type |
| and lifetime parameters, with <code><trait></code> appended to <code>impl</code>βs generic parametersβ bounds.</dd><dt><a class="fn" href="fn.generate_trait_impl_text_intransitive.html" title="fn ide_assists::utils::generate_trait_impl_text_intransitive">generate_<wbr>trait_<wbr>impl_<wbr>text_<wbr>intransitive</a><span title="Restricted Visibility"> π</span> </dt><dd>Generates the surrounding <code>impl <trait> for Type { <code> }</code> including type |
| and lifetime parameters, with <code>impl</code>βs generic parametersβ bounds kept as-is.</dd><dt><a class="fn" href="fn.generic_param_associated_bounds.html" title="fn ide_assists::utils::generic_param_associated_bounds">generic_<wbr>param_<wbr>associated_<wbr>bounds</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.get_methods.html" title="fn ide_assists::utils::get_methods">get_<wbr>methods</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.handle_as_ref_slice.html" title="fn ide_assists::utils::handle_as_ref_slice">handle_<wbr>as_<wbr>ref_<wbr>slice</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.handle_as_ref_str.html" title="fn ide_assists::utils::handle_as_ref_str">handle_<wbr>as_<wbr>ref_<wbr>str</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.handle_copy.html" title="fn ide_assists::utils::handle_copy">handle_<wbr>copy</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.handle_dereferenced.html" title="fn ide_assists::utils::handle_dereferenced">handle_<wbr>dereferenced</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.handle_option_as_ref.html" title="fn ide_assists::utils::handle_option_as_ref">handle_<wbr>option_<wbr>as_<wbr>ref</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.handle_result_as_ref.html" title="fn ide_assists::utils::handle_result_as_ref">handle_<wbr>result_<wbr>as_<wbr>ref</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.has_any_fn.html" title="fn ide_assists::utils::has_any_fn">has_<wbr>any_<wbr>fn</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.has_test_related_attribute.html" title="fn ide_assists::utils::has_test_related_attribute">has_<wbr>test_<wbr>related_<wbr>attribute</a></dt><dt><a class="fn" href="fn.insert_attributes.html" title="fn ide_assists::utils::insert_attributes">insert_<wbr>attributes</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.invert_boolean_expression.html" title="fn ide_assists::utils::invert_boolean_expression">invert_<wbr>boolean_<wbr>expression</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.invert_boolean_expression_legacy.html" title="fn ide_assists::utils::invert_boolean_expression_legacy">invert_<wbr>boolean_<wbr>expression_<wbr>legacy</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.invert_special_case.html" title="fn ide_assists::utils::invert_special_case">invert_<wbr>special_<wbr>case</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.invert_special_case_legacy.html" title="fn ide_assists::utils::invert_special_case_legacy">invert_<wbr>special_<wbr>case_<wbr>legacy</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.is_body_const.html" title="fn ide_assists::utils::is_body_const">is_<wbr>body_<wbr>const</a></dt><dt><a class="fn" href="fn.is_never_block.html" title="fn ide_assists::utils::is_never_block">is_<wbr>never_<wbr>block</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.is_selected.html" title="fn ide_assists::utils::is_selected">is_<wbr>selected</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.next_prev.html" title="fn ide_assists::utils::next_prev">next_<wbr>prev</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.replace_record_field_expr.html" title="fn ide_assists::utils::replace_record_field_expr">replace_<wbr>record_<wbr>field_<wbr>expr</a><span title="Restricted Visibility"> π</span> </dt><dd>Replaces the record expression, handling field shorthands including inside macros.</dd><dt><a class="fn" href="fn.required_hashes.html" title="fn ide_assists::utils::required_hashes">required_<wbr>hashes</a><span title="Restricted Visibility"> π</span> </dt><dd>Calculate the number of hashes required for a raw string containing <code>s</code></dd><dt><a class="fn" href="fn.string_prefix.html" title="fn ide_assists::utils::string_prefix">string_<wbr>prefix</a><span title="Restricted Visibility"> π</span> </dt><dd>Calculate the string literal prefix length</dd><dt><a class="fn" href="fn.string_suffix.html" title="fn ide_assists::utils::string_suffix">string_<wbr>suffix</a><span title="Restricted Visibility"> π</span> </dt><dd>Calculate the string literal suffix length</dd><dt><a class="fn" href="fn.test_related_attribute_syn.html" title="fn ide_assists::utils::test_related_attribute_syn">test_<wbr>related_<wbr>attribute_<wbr>syn</a></dt><dd>This is a method with a heuristics to support test methods annotated with custom test annotations, such as |
| <code>#[test_case(...)]</code>, <code>#[tokio::test]</code> and similar. |
| Also a regular <code>#[test]</code> annotation is supported.</dd><dt><a class="fn" href="fn.trimmed_text_range.html" title="fn ide_assists::utils::trimmed_text_range">trimmed_<wbr>text_<wbr>range</a><span title="Restricted Visibility"> π</span> </dt><dd>Trim(remove leading and trailing whitespace) <code>initial_range</code> in <code>source_file</code>, return the trimmed range.</dd><dt><a class="fn" href="fn.tt_from_syntax.html" title="fn ide_assists::utils::tt_from_syntax">tt_<wbr>from_<wbr>syntax</a><span title="Restricted Visibility"> π</span> </dt><dd>Creates a token tree list from a syntax node, creating the needed delimited sub token trees. |
| Assumes that the input syntax node is a valid syntax tree.</dd><dt><a class="fn" href="fn.unwrap_trivial_block.html" title="fn ide_assists::utils::unwrap_trivial_block">unwrap_<wbr>trivial_<wbr>block</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.vis_offset.html" title="fn ide_assists::utils::vis_offset">vis_<wbr>offset</a><span title="Restricted Visibility"> π</span> </dt><dt><a class="fn" href="fn.wrap_block.html" title="fn ide_assists::utils::wrap_block">wrap_<wbr>block</a><span title="Restricted Visibility"> π</span> </dt></dl></section></div></main></body></html> |