- let is_option = move_ty.starts_with("std::option::Option");
- let is_result = move_ty.starts_with("std::result::Result");
+ let def_id = match move_place.ty(*self.body, self.infcx.tcx).ty.kind {
+ ty::Adt(self_def, _) => self_def.did,
+ ty::Foreign(def_id)
+ | ty::FnDef(def_id, _)
+ | ty::Closure(def_id, _)
+ | ty::Generator(def_id, ..)
+ | ty::Opaque(def_id, _) => def_id,
+ _ => return err,
+ };
+ let is_option =
+ self.infcx.tcx.is_diagnostic_item(Symbol::intern("option_type"), def_id);
+ let is_result =
+ self.infcx.tcx.is_diagnostic_item(Symbol::intern("result_type"), def_id);