| <!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="API documentation for the Rust `extract_function` mod in crate `ide_assists`."><title>ide_assists::handlers::extract_function - 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.1 (e408947bf 2026-03-25)" data-channel="1.94.1" 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 extract_function</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 extract_<wbr>function</a></h2><h3><a href="#structs">Module Items</a></h3><ul class="block"><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#enums" title="Enums">Enums</a></li><li><a href="#traits" title="Traits">Traits</a></li><li><a href="#functions" title="Functions">Functions</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="../index.html">In ide_<wbr>assists::<wbr>handlers</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>::<wbr><a href="../index.html">handlers</a></div><h1>Module <span>extract_<wbr>function</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/handlers/extract_function.rs.html#1-6540">Source</a> </span></div><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">ยง</a></h2><dl class="item-table"><dt><a class="struct" href="struct.ContainerInfo.html" title="struct ide_assists::handlers::extract_function::ContainerInfo">Container<wbr>Info</a><span title="Restricted Visibility"> ๐</span> </dt><dd>The thing whose expression we are extracting from. Can be a function, const, static, const arg, โฆ</dd><dt><a class="struct" href="struct.ControlFlow.html" title="struct ide_assists::handlers::extract_function::ControlFlow">Control<wbr>Flow</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="struct" href="struct.Function.html" title="struct ide_assists::handlers::extract_function::Function">Function</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="struct" href="struct.LocalUsages.html" title="struct ide_assists::handlers::extract_function::LocalUsages">Local<wbr>Usages</a><span title="Restricted Visibility"> ๐</span> </dt><dd>Container of local variable usages</dd><dt><a class="struct" href="struct.OutlivedLocal.html" title="struct ide_assists::handlers::extract_function::OutlivedLocal">Outlived<wbr>Local</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="struct" href="struct.Param.html" title="struct ide_assists::handlers::extract_function::Param">Param</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.Anchor.html" title="enum ide_assists::handlers::extract_function::Anchor">Anchor</a><span title="Restricted Visibility"> ๐</span> </dt><dd>Where to put extracted function definition</dd><dt><a class="enum" href="enum.FlowHandler.html" title="enum ide_assists::handlers::extract_function::FlowHandler">Flow<wbr>Handler</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="enum" href="enum.FlowKind.html" title="enum ide_assists::handlers::extract_function::FlowKind">Flow<wbr>Kind</a><span title="Restricted Visibility"> ๐</span> </dt><dd>Control flow that is exported from extracted function</dd><dt><a class="enum" href="enum.FunType.html" title="enum ide_assists::handlers::extract_function::FunType">FunType</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="enum" href="enum.FunctionBody.html" title="enum ide_assists::handlers::extract_function::FunctionBody">Function<wbr>Body</a><span title="Restricted Visibility"> ๐</span> </dt><dd>Semantically same as <code>ast::Expr</code>, but preserves identity when using only part of the Block |
| This is the future function body, the part that is being extracted.</dd><dt><a class="enum" href="enum.GenericParent.html" title="enum ide_assists::handlers::extract_function::GenericParent">Generic<wbr>Parent</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="enum" href="enum.ParamKind.html" title="enum ide_assists::handlers::extract_function::ParamKind">Param<wbr>Kind</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="enum" href="enum.RetType.html" title="enum ide_assists::handlers::extract_function::RetType">RetType</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="enum" href="enum.TryKind.html" title="enum ide_assists::handlers::extract_function::TryKind">TryKind</a><span title="Restricted Visibility"> ๐</span> </dt></dl><h2 id="traits" class="section-header">Traits<a href="#traits" class="anchor">ยง</a></h2><dl class="item-table"><dt><a class="trait" href="trait.HasTokenAtOffset.html" title="trait ide_assists::handlers::extract_function::HasTokenAtOffset">HasToken<wbr>AtOffset</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.expr_require_exclusive_access.html" title="fn ide_assists::handlers::extract_function::expr_require_exclusive_access">expr_<wbr>require_<wbr>exclusive_<wbr>access</a><span title="Restricted Visibility"> ๐</span> </dt><dd>checks if this expr requires <code>&mut</code> access, recurses on field access</dd><dt><a class="fn" href="fn.extract_function.html" title="fn ide_assists::handlers::extract_function::extract_function">extract_<wbr>function</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.extraction_target.html" title="fn ide_assists::handlers::extract_function::extraction_target">extraction_<wbr>target</a><span title="Restricted Visibility"> ๐</span> </dt><dd>Try to guess what user wants to extract</dd><dt><a class="fn" href="fn.find_non_trait_impl.html" title="fn ide_assists::handlers::extract_function::find_non_trait_impl">find_<wbr>non_<wbr>trait_<wbr>impl</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.fix_param_usages.html" title="fn ide_assists::handlers::extract_function::fix_param_usages">fix_<wbr>param_<wbr>usages</a><span title="Restricted Visibility"> ๐</span> </dt><dd>change all usages to account for added <code>&</code>/<code>&mut</code> for some params</dd><dt><a class="fn" href="fn.fixup_call_site.html" title="fn ide_assists::handlers::extract_function::fixup_call_site">fixup_<wbr>call_<wbr>site</a><span title="Restricted Visibility"> ๐</span> </dt><dd>Fixes up the call site before the target expressions are replaced with the call expression</dd><dt><a class="fn" href="fn.format_function.html" title="fn ide_assists::handlers::extract_function::format_function">format_<wbr>function</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.format_type.html" title="fn ide_assists::handlers::extract_function::format_type">format_<wbr>type</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.generic_parents.html" title="fn ide_assists::handlers::extract_function::generic_parents">generic_<wbr>parents</a><span title="Restricted Visibility"> ๐</span> </dt><dd>Search <code>parent</code>โs ancestors for items with potentially applicable generic parameters</dd><dt><a class="fn" href="fn.has_exclusive_usages.html" title="fn ide_assists::handlers::extract_function::has_exclusive_usages">has_<wbr>exclusive_<wbr>usages</a><span title="Restricted Visibility"> ๐</span> </dt><dd>checks if relevant var is used with <code>&mut</code> access inside body</dd><dt><a class="fn" href="fn.impl_type_name.html" title="fn ide_assists::handlers::extract_function::impl_type_name">impl_<wbr>type_<wbr>name</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.is_defined_outside_of_body.html" title="fn ide_assists::handlers::extract_function::is_defined_outside_of_body">is_<wbr>defined_<wbr>outside_<wbr>of_<wbr>body</a><span title="Restricted Visibility"> ๐</span> </dt><dd>checks if the relevant local was defined before(outside of) body</dd><dt><a class="fn" href="fn.is_inherit_attr.html" title="fn ide_assists::handlers::extract_function::is_inherit_attr">is_<wbr>inherit_<wbr>attr</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.is_trait_impl.html" title="fn ide_assists::handlers::extract_function::is_trait_impl">is_<wbr>trait_<wbr>impl</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.last_impl_member.html" title="fn ide_assists::handlers::extract_function::last_impl_member">last_<wbr>impl_<wbr>member</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.local_outlives_body.html" title="fn ide_assists::handlers::extract_function::local_outlives_body">local_<wbr>outlives_<wbr>body</a><span title="Restricted Visibility"> ๐</span> </dt><dd>Returns usage details if local variable is used after(outside of) body</dd><dt><a class="fn" href="fn.locals_defined_in_body.html" title="fn ide_assists::handlers::extract_function::locals_defined_in_body">locals_<wbr>defined_<wbr>in_<wbr>body</a><span title="Restricted Visibility"> ๐</span> </dt><dd>list local variables defined inside <code>body</code></dd><dt><a class="fn" href="fn.make_body.html" title="fn ide_assists::handlers::extract_function::make_body">make_<wbr>body</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.make_call.html" title="fn ide_assists::handlers::extract_function::make_call">make_<wbr>call</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.make_function_name.html" title="fn ide_assists::handlers::extract_function::make_function_name">make_<wbr>function_<wbr>name</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.make_generic_param_list.html" title="fn ide_assists::handlers::extract_function::make_generic_param_list">make_<wbr>generic_<wbr>param_<wbr>list</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.make_generic_params_and_where_clause.html" title="fn ide_assists::handlers::extract_function::make_generic_params_and_where_clause">make_<wbr>generic_<wbr>params_<wbr>and_<wbr>where_<wbr>clause</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.make_rewritten_flow.html" title="fn ide_assists::handlers::extract_function::make_rewritten_flow">make_<wbr>rewritten_<wbr>flow</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.make_ty.html" title="fn ide_assists::handlers::extract_function::make_ty">make_ty</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.make_where_clause.html" title="fn ide_assists::handlers::extract_function::make_where_clause">make_<wbr>where_<wbr>clause</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.map_tail_expr.html" title="fn ide_assists::handlers::extract_function::map_tail_expr">map_<wbr>tail_<wbr>expr</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.node_to_insert_after.html" title="fn ide_assists::handlers::extract_function::node_to_insert_after">node_<wbr>to_<wbr>insert_<wbr>after</a><span title="Restricted Visibility"> ๐</span> </dt><dd>find where to put extracted function definition</dd><dt><a class="fn" href="fn.param_is_required.html" title="fn ide_assists::handlers::extract_function::param_is_required">param_<wbr>is_<wbr>required</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.path_element_of_reference.html" title="fn ide_assists::handlers::extract_function::path_element_of_reference">path_<wbr>element_<wbr>of_<wbr>reference</a><span title="Restricted Visibility"> ๐</span> </dt><dd>find relevant <code>ast::Expr</code> for reference</dd><dt><a class="fn" href="fn.path_expr_from_local.html" title="fn ide_assists::handlers::extract_function::path_expr_from_local">path_<wbr>expr_<wbr>from_<wbr>local</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.pred_is_required.html" title="fn ide_assists::handlers::extract_function::pred_is_required">pred_<wbr>is_<wbr>required</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.reference_is_exclusive.html" title="fn ide_assists::handlers::extract_function::reference_is_exclusive">reference_<wbr>is_<wbr>exclusive</a><span title="Restricted Visibility"> ๐</span> </dt><dd>checks if this reference requires <code>&mut</code> access inside node</dd><dt><a class="fn" href="fn.resolved_type_param.html" title="fn ide_assists::handlers::extract_function::resolved_type_param">resolved_<wbr>type_<wbr>param</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.rewrite_body_segment.html" title="fn ide_assists::handlers::extract_function::rewrite_body_segment">rewrite_<wbr>body_<wbr>segment</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.update_external_control_flow.html" title="fn ide_assists::handlers::extract_function::update_external_control_flow">update_<wbr>external_<wbr>control_<wbr>flow</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.with_default_tail_expr.html" title="fn ide_assists::handlers::extract_function::with_default_tail_expr">with_<wbr>default_<wbr>tail_<wbr>expr</a><span title="Restricted Visibility"> ๐</span> </dt><dt><a class="fn" href="fn.with_tail_expr.html" title="fn ide_assists::handlers::extract_function::with_tail_expr">with_<wbr>tail_<wbr>expr</a><span title="Restricted Visibility"> ๐</span> </dt></dl></section></div></main></body></html> |