mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 12:29:21 +00:00
Implement assist to replace named generic with impl
This adds a new assist named "replace named generic with impl" to move the generic param type from the generic param list into the function signature. ```rust fn new<T: ToString>(input: T) -> Self {} ``` becomes ```rust fn new(input: impl ToString) -> Self {} ``` The first step is to determine if the assist can be applied, there has to be a match between generic trait param & function paramter types. * replace function parameter type(s) with impl * add new `impl_trait_type` function to generate the new trait bounds with `impl` keyword for use in the function signature
This commit is contained in:
parent
21e5dc2af9
commit
59f8827a6f
4 changed files with 162 additions and 0 deletions
|
@ -232,6 +232,10 @@ pub fn impl_trait(
|
|||
ast_from_text(&format!("impl{ty_params_str} {trait_} for {ty}{ty_genargs_str} {{}}"))
|
||||
}
|
||||
|
||||
pub fn impl_trait_type(bounds: ast::TypeBoundList) -> ast::ImplTraitType {
|
||||
ast_from_text(&format!("fn f(x: impl {bounds}) {{}}"))
|
||||
}
|
||||
|
||||
pub fn path_segment(name_ref: ast::NameRef) -> ast::PathSegment {
|
||||
ast_from_text(&format!("type __ = {name_ref};"))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue