pub struct CastTarget {
pub prefix: Vec<Reg>,
pub rest_offset: Option<MachineSize>,
pub rest: Uniform,
}Expand description
Describes the ABI type that an argument is transmuted to for PassMode::Cast.
When an argument is “cast,” its raw bytes are reinterpreted as a sequence of register-sized values for passing. This struct describes that target layout:
- The
prefixregisters are laid out first, like fields of arepr(C)struct (i.e., with alignment padding between them). - After the prefix,
rest.unitis repeated enough times to coverrest.total, starting atrest_offset(or immediately after the prefix ifNone).
For example, on x86_64 a struct { i32, f64 } might be cast to a prefix of
[Reg::i64()] followed by a rest of Reg::f64() — placing the first 8 bytes
in an integer register and the second 8 bytes in a floating-point register.
Fields§
§prefix: Vec<Reg>Leading registers of potentially different types, laid out with repr(C) padding.
rest_offset: Option<MachineSize>The byte offset where rest begins, if explicitly set.
When None, rest starts immediately after the prefix.
rest: UniformThe repeated trailing register type filling the remainder of the value.
Implementations§
Trait Implementations§
Source§impl Clone for CastTarget
impl Clone for CastTarget
Source§fn clone(&self) -> CastTarget
fn clone(&self) -> CastTarget
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CastTarget
impl Debug for CastTarget
impl Eq for CastTarget
Source§impl Hash for CastTarget
impl Hash for CastTarget
Source§impl PartialEq for CastTarget
impl PartialEq for CastTarget
Source§impl Serialize for CastTarget
impl Serialize for CastTarget
impl StructuralPartialEq for CastTarget
Auto Trait Implementations§
impl DynSend for CastTarget
impl DynSync for CastTarget
impl Freeze for CastTarget
impl RefUnwindSafe for CastTarget
impl Send for CastTarget
impl Sync for CastTarget
impl Unpin for CastTarget
impl UnsafeUnpin for CastTarget
impl UnwindSafe for CastTarget
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
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> ⓘ
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 72 bytes