impl Hygiene {
pub fn new(db: &dyn AstDatabase, file_id: HirFileId) -> Hygiene {
- Hygiene { frames: Some(HygieneFrames::new(db, file_id.clone())) }
+ Hygiene { frames: Some(HygieneFrames::new(db, file_id)) }
}
pub fn new_unhygienic() -> Hygiene {
mbe::Origin::Call => (&self.macro_arg.1, self.arg_start),
mbe::Origin::Def => (
&self.macro_def.1,
- self.def_start
- .as_ref()
- .expect("`Origin::Def` used with non-`macro_rules!` macro")
- .clone(),
+ *self.def_start.as_ref().expect("`Origin::Def` used with non-`macro_rules!` macro"),
),
};
let mut cb = |_: BrokenLink| {
let empty = InlineStr::try_from("").unwrap();
- Some((CowStr::Inlined(empty.clone()), CowStr::Inlined(empty)))
+ Some((CowStr::Inlined(empty), CowStr::Inlined(empty)))
};
let doc = Parser::new_with_broken_link_callback(markdown, opts, Some(&mut cb));
let doc = doc.filter_map(move |evt| match evt {
_ => return None,
};
- let ns = ItemInNs::from(target_def.clone());
+ let ns = ItemInNs::from(target_def);
let module = definition.module(db)?;
let krate = module.krate();
None => comment_range.end(),
}
})?;
- Some((def_link.to_string(), ns.clone()))
+ Some((def_link.to_string(), *ns))
}
fn pick_best(tokens: TokenAtOffset<SyntaxToken>) -> Option<SyntaxToken> {
for range in inj.map_range_up(hl_range.range) {
if let Some(range) = literal.map_range_up(range) {
hl_range.range = range;
- hl.add(hl_range.clone());
+ hl.add(hl_range);
}
}
}
variant_hir_name: &Name,
) -> Option<()> {
let db = ctx.db();
- let mod_path = module.find_use_path_prefixed(
- db,
- enum_module_def.clone(),
- ctx.config.insert_use.prefix_kind,
- );
+ let mod_path =
+ module.find_use_path_prefixed(db, *enum_module_def, ctx.config.insert_use.prefix_kind);
if let Some(mut mod_path) = mod_path {
mod_path.pop_segment();
mod_path.push_segment(variant_hir_name.clone());
let add_resolution = match &res {
hir::ScopeDef::ModuleDef(def) => match def {
hir::ModuleDef::Adt(hir::Adt::Struct(strukt)) => {
- acc.add_struct_pat(ctx, strukt.clone(), Some(name.clone()));
+ acc.add_struct_pat(ctx, *strukt, Some(name.clone()));
true
}
hir::ModuleDef::Variant(variant) if !ctx.is_irrefutable_pat_binding => {
- acc.add_variant_pat(ctx, variant.clone(), Some(name.clone()));
+ acc.add_variant_pat(ctx, *variant, Some(name.clone()));
true
}
hir::ModuleDef::Adt(hir::Adt::Enum(..))
}
fn snippet_cap(&self) -> Option<SnippetCap> {
- self.completion.config.snippet_cap.clone()
+ self.completion.config.snippet_cap
}
fn db(&self) -> &'a RootDatabase {
pub fn at_first_file(db: &'db ide_db::RootDatabase) -> Result<MatchFinder<'db>, SsrError> {
use ide_db::base_db::SourceDatabaseExt;
use ide_db::symbol_index::SymbolsDatabase;
- if let Some(first_file_id) = db
- .local_roots()
- .iter()
- .next()
- .and_then(|root| db.source_root(root.clone()).iter().next())
+ if let Some(first_file_id) =
+ db.local_roots().iter().next().and_then(|root| db.source_root(*root).iter().next())
{
Ok(MatchFinder::in_context(
db,
restrict_range: &Option<FileRange>,
sema: &'sema Semantics<'db, ide_db::RootDatabase>,
) -> Result<Match, MatchFailed> {
- let match_state = Matcher { sema, restrict_range: restrict_range.clone(), rule };
+ let match_state = Matcher { sema, restrict_range: *restrict_range, rule };
// First pass at matching, where we check that node types and idents match.
match_state.attempt_match_node(&mut Phase::First, &rule.pattern.node, code)?;
match_state.validate_range(&sema.original_range(code))?;
}
Separator::Puncts(puncts) => {
for it in puncts {
- parent.token_trees.push(tt::Leaf::Punct(it.clone()).into())
+ parent.token_trees.push(tt::Leaf::Punct(*it).into())
}
}
};
}
}
Op::Subtree { tokens, delimiter } => {
- let mut subtree =
- tt::Subtree { delimiter: delimiter.clone(), token_trees: Vec::new() };
+ let mut subtree = tt::Subtree { delimiter: *delimiter, token_trees: Vec::new() };
tokens.iter().for_each(|it| {
collect_from_op(it, &mut subtree, seed);
});
if puncts.len() == 3 {
return Err(ParseError::InvalidRepeat);
}
- puncts.push(punct.clone())
+ puncts.push(*punct)
}
_ => return Err(ParseError::InvalidRepeat),
}
return Vec::new();
}
- let severity = diagnostic_severity(config, rd.level.clone(), rd.code.clone());
+ let severity = diagnostic_severity(config, rd.level, rd.code.clone());
let mut source = String::from("rustc");
let mut code = rd.code.as_ref().map(|c| c.code.clone());