1 //! Functions to detect special lang items
3 use hir_def::{AdtId, HasModule};
6 use crate::db::HirDatabase;
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);
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);