pub(super) struct CastCheck<'db> {
expr: ExprId,
source_expr: ExprId,
expr_ty: Ty<'db>,
cast_ty: Ty<'db>,
}Fields§
§expr: ExprId§source_expr: ExprId§expr_ty: Ty<'db>§cast_ty: Ty<'db>Implementations§
Source§impl<'db> CastCheck<'db>
impl<'db> CastCheck<'db>
pub(super) fn new( expr: ExprId, source_expr: ExprId, expr_ty: Ty<'db>, cast_ty: Ty<'db>, ) -> Self
pub(super) fn check( &mut self, ctx: &mut InferenceContext<'db>, ) -> Result<(), InferenceDiagnostic>
fn do_check(&self, ctx: &mut InferenceContext<'db>) -> Result<(), CastError>
fn check_ref_cast( &self, ctx: &mut InferenceContext<'db>, t_expr: Ty<'db>, m_expr: Mutability, t_cast: Ty<'db>, m_cast: Mutability, ) -> Result<(), CastError>
fn check_ptr_ptr_cast( &self, ctx: &mut InferenceContext<'db>, src: Ty<'db>, dst: Ty<'db>, ) -> Result<(), CastError>
fn check_ptr_addr_cast( &self, ctx: &mut InferenceContext<'db>, expr_ty: Ty<'db>, ) -> Result<(), CastError>
fn check_addr_ptr_cast( &self, ctx: &mut InferenceContext<'db>, cast_ty: Ty<'db>, ) -> Result<(), CastError>
fn check_fptr_ptr_cast( &self, ctx: &mut InferenceContext<'db>, cast_ty: Ty<'db>, ) -> Result<(), CastError>
Trait Implementations§
Auto Trait Implementations§
impl<'db> Freeze for CastCheck<'db>
impl<'db> RefUnwindSafe for CastCheck<'db>
impl<'db> Send for CastCheck<'db>
impl<'db> Sync for CastCheck<'db>
impl<'db> Unpin for CastCheck<'db>
impl<'db> UnsafeUnpin for CastCheck<'db>
impl<'db> UnwindSafe for CastCheck<'db>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more