]> git.lizzy.rs Git - rust.git/blob - src/tools/rust-analyzer/crates/hir-ty/src/lang_items.rs
Auto merge of #107843 - bjorn3:sync_cg_clif-2023-02-09, r=bjorn3
[rust.git] / src / tools / rust-analyzer / crates / hir-ty / src / lang_items.rs
1 //! Functions to detect special lang items
2
3 use hir_def::{AdtId, HasModule};
4 use hir_expand::name;
5
6 use crate::db::HirDatabase;
7
8 pub fn is_box(adt: AdtId, db: &dyn HirDatabase) -> bool {
9     let owned_box = name![owned_box].to_smol_str();
10     let krate = adt.module(db.upcast()).krate();
11     let box_adt = db.lang_item(krate, owned_box).and_then(|it| it.as_struct()).map(AdtId::from);
12     Some(adt) == box_adt
13 }
14
15 pub fn is_unsafe_cell(adt: AdtId, db: &dyn HirDatabase) -> bool {
16     let owned_box = name![unsafe_cell].to_smol_str();
17     let krate = adt.module(db.upcast()).krate();
18     let box_adt = db.lang_item(krate, owned_box).and_then(|it| it.as_struct()).map(AdtId::from);
19     Some(adt) == box_adt
20 }