@@ -2055,22 +2055,22 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
2055
2055
( exp_found. expected . kind ( ) , exp_found. found . kind ( ) )
2056
2056
{
2057
2057
if let ty:: Adt ( found_def, found_substs) = * found_ty. kind ( ) {
2058
- let path_str = format ! ( "{:?}" , exp_def) ;
2059
2058
if exp_def == & found_def {
2060
- let opt_msg = "you can convert from `&Option<T>` to `Option<&T>` using \
2061
- `.as_ref()`";
2062
- let result_msg = "you can convert from `&Result<T, E>` to \
2063
- `Result<&T, &E>` using `.as_ref()`";
2064
2059
let have_as_ref = & [
2065
- ( "std::option::Option" , opt_msg) ,
2066
- ( "core::option::Option" , opt_msg) ,
2067
- ( "std::result::Result" , result_msg) ,
2068
- ( "core::result::Result" , result_msg) ,
2060
+ (
2061
+ sym:: Option ,
2062
+ "you can convert from `&Option<T>` to `Option<&T>` using \
2063
+ `.as_ref()`",
2064
+ ) ,
2065
+ (
2066
+ sym:: Result ,
2067
+ "you can convert from `&Result<T, E>` to \
2068
+ `Result<&T, &E>` using `.as_ref()`",
2069
+ ) ,
2069
2070
] ;
2070
- if let Some ( msg) = have_as_ref
2071
- . iter ( )
2072
- . find_map ( |( path, msg) | ( & path_str == path) . then_some ( msg) )
2073
- {
2071
+ if let Some ( msg) = have_as_ref. iter ( ) . find_map ( |( name, msg) | {
2072
+ self . tcx . is_diagnostic_item ( * name, exp_def. did ( ) ) . then_some ( msg)
2073
+ } ) {
2074
2074
let mut show_suggestion = true ;
2075
2075
for ( exp_ty, found_ty) in
2076
2076
iter:: zip ( exp_substs. types ( ) , found_substs. types ( ) )
0 commit comments