1 use ra_syntax::{SyntaxKind, TextRange, T};
3 use crate::{Assist, AssistCtx, AssistId};
7 // Removes the `mut` keyword.
11 // fn feed(&mut<|> self, amount: u32) {}
17 // fn feed(&self, amount: u32) {}
20 pub(crate) fn remove_mut(ctx: AssistCtx) -> Option<Assist> {
21 let mut_token = ctx.find_token_at_offset(T![mut])?;
22 let delete_from = mut_token.text_range().start();
23 let delete_to = match mut_token.next_token() {
24 Some(it) if it.kind() == SyntaxKind::WHITESPACE => it.text_range().end(),
25 _ => mut_token.text_range().end(),
28 let target = mut_token.text_range();
29 ctx.add_assist(AssistId("remove_mut"), "Remove `mut` keyword", target, |edit| {
30 edit.set_cursor(delete_from);
31 edit.delete(TextRange::new(delete_from, delete_to));