[−][src]Function rustc_typeck::check::wfcheck::receiver_is_valid
pub(in check::wfcheck) fn receiver_is_valid<'fcx, 'tcx>(
fcx: &FnCtxt<'fcx, 'tcx>,
span: Span,
receiver_ty: Ty<'tcx>,
self_ty: Ty<'tcx>,
arbitrary_self_types_enabled: bool
) -> bool
Returns whether receiver_ty would be considered a valid receiver type for self_ty. If
arbitrary_self_types is enabled, receiver_ty must transitively deref to self_ty, possibly
through a *const/mut T raw pointer. If the feature is not enabled, the requirements are more
strict: receiver_ty must implement Receiver and directly implement
Deref<Target = self_ty>.
N.B., there are cases this function returns true but causes an error to be emitted,
particularly when receiver_ty derefs to a type that is the same as self_ty but has the
wrong lifetime. Be careful of this if you are calling this function speculatively.