pub enum IntrinsicResult<'tcx, V> {
Operand(OperandValue<V>),
WroteIntoPlace,
Fallback(Instance<'tcx>),
Err(ErrorGuaranteed),
}Variants§
Operand(OperandValue<V>)
This intrinsic created an operand without using the result_place argument.
codegen_call_terminator will handle writing the result into the place,
if doing so is needed.
The vast majority of intrinsics can do this, see MCP#970
WroteIntoPlace
The intrinsic wrote its result into the result_place argument.
Most things don’t need to do this, but there are some: volatile_load
of a non-scalar type, for example, has to.
Fallback(Instance<'tcx>)
Another instance should be called instead. This is used to invoke intrinsic default bodies in case an intrinsic is not implemented by the backend.
Err(ErrorGuaranteed)
Arguably this shouldn’t exist, per MCP#620, but a bunch do it.
Auto Trait Implementations§
impl<'tcx, V> DynSend for IntrinsicResult<'tcx, V>where
V: DynSend,
impl<'tcx, V> DynSync for IntrinsicResult<'tcx, V>where
V: DynSync,
impl<'tcx, V> Freeze for IntrinsicResult<'tcx, V>where
V: Freeze,
impl<'tcx, V> !RefUnwindSafe for IntrinsicResult<'tcx, V>
impl<'tcx, V> Send for IntrinsicResult<'tcx, V>where
V: Send,
impl<'tcx, V> Sync for IntrinsicResult<'tcx, V>where
V: Sync,
impl<'tcx, V> Unpin for IntrinsicResult<'tcx, V>where
V: Unpin,
impl<'tcx, V> UnsafeUnpin for IntrinsicResult<'tcx, V>where
V: UnsafeUnpin,
impl<'tcx, V> !UnwindSafe for IntrinsicResult<'tcx, V>
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
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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>
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>
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 moreSource§impl<K> IntoQueryKey<K> for K
impl<K> IntoQueryKey<K> for K
Source§fn into_query_key(self) -> K
fn into_query_key(self) -> K
Self to K.
This should always be a very cheap conversion, e.g. LocalDefId::to_def_id.Source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.