pub struct LayoutCx<'tcx, C> {
pub tcx: C,
pub param_env: ParamEnv<'tcx>,
}
Fields
tcx: C
param_env: ParamEnv<'tcx>
Implementations
sourceimpl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>>
impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>>
fn scalar_pair(&self, a: Scalar, b: Scalar) -> LayoutS<'tcx>
fn univariant_uninterned(
&self,
ty: Ty<'tcx>,
fields: &[TyAndLayout<'_>],
repr: &ReprOptions,
kind: StructKind
) -> Result<LayoutS<'tcx>, LayoutError<'tcx>>
fn layout_of_uncached(
&self,
ty: Ty<'tcx>
) -> Result<Layout<'tcx>, LayoutError<'tcx>>
sourceimpl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>>
impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>>
sourcefn generator_saved_local_eligibility(
&self,
info: &GeneratorLayout<'tcx>
) -> (BitSet<GeneratorSavedLocal>, IndexVec<GeneratorSavedLocal, SavedLocalEligibility>)
fn generator_saved_local_eligibility(
&self,
info: &GeneratorLayout<'tcx>
) -> (BitSet<GeneratorSavedLocal>, IndexVec<GeneratorSavedLocal, SavedLocalEligibility>)
Compute the eligibility and assignment of each local.
sourcefn generator_layout(
&self,
ty: Ty<'tcx>,
def_id: DefId,
substs: SubstsRef<'tcx>
) -> Result<Layout<'tcx>, LayoutError<'tcx>>
fn generator_layout(
&self,
ty: Ty<'tcx>,
def_id: DefId,
substs: SubstsRef<'tcx>
) -> Result<Layout<'tcx>, LayoutError<'tcx>>
Compute the full generator layout.
sourcefn record_layout_for_printing(&self, layout: TyAndLayout<'tcx>)
fn record_layout_for_printing(&self, layout: TyAndLayout<'tcx>)
This is invoked by the layout_of
query to record the final
layout of each type.
fn record_layout_for_printing_outlined(&self, layout: TyAndLayout<'tcx>)
sourceimpl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>>
impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>>
fn fn_abi_new_uncached(
&self,
sig: PolyFnSig<'tcx>,
extra_args: &[Ty<'tcx>],
caller_location: Option<Ty<'tcx>>,
fn_def_id: Option<DefId>,
force_thin_self_ptr: bool
) -> Result<&'tcx FnAbi<'tcx, Ty<'tcx>>, FnAbiError<'tcx>>
fn fn_abi_adjust_for_abi(
&self,
fn_abi: &mut FnAbi<'tcx, Ty<'tcx>>,
abi: SpecAbi
) -> Result<(), FnAbiError<'tcx>>
Trait Implementations
sourceimpl<'tcx, T: HasDataLayout> HasDataLayout for LayoutCx<'tcx, T>
impl<'tcx, T: HasDataLayout> HasDataLayout for LayoutCx<'tcx, T>
fn data_layout(&self) -> &TargetDataLayout
sourceimpl<'tcx, C> HasParamEnv<'tcx> for LayoutCx<'tcx, C>
impl<'tcx, C> HasParamEnv<'tcx> for LayoutCx<'tcx, C>
sourceimpl<'tcx, T: HasTargetSpec> HasTargetSpec for LayoutCx<'tcx, T>
impl<'tcx, T: HasTargetSpec> HasTargetSpec for LayoutCx<'tcx, T>
fn target_spec(&self) -> &Target
sourceimpl<'tcx> LayoutOfHelpers<'tcx> for LayoutCx<'tcx, TyCtxt<'tcx>>
impl<'tcx> LayoutOfHelpers<'tcx> for LayoutCx<'tcx, TyCtxt<'tcx>>
type LayoutOfResult = Result<TyAndLayout<'tcx, Ty<'tcx>>, LayoutError<'tcx>>
type LayoutOfResult = Result<TyAndLayout<'tcx, Ty<'tcx>>, LayoutError<'tcx>>
The
TyAndLayout
-wrapping type (or TyAndLayout
itself), which will be
returned from layout_of
(see also handle_layout_err
). Read moresourcefn handle_layout_err(
&self,
err: LayoutError<'tcx>,
_: Span,
_: Ty<'tcx>
) -> LayoutError<'tcx>
fn handle_layout_err(
&self,
err: LayoutError<'tcx>,
_: Span,
_: Ty<'tcx>
) -> LayoutError<'tcx>
Helper used for
layout_of
, to adapt tcx.layout_of(...)
into a
Self::LayoutOfResult
(which does not need to be a Result<...>
). Read moresourcefn layout_tcx_at_span(&self) -> Span
fn layout_tcx_at_span(&self) -> Span
Span
to use for tcx.at(span)
, from layout_of
.sourceimpl<'tcx> LayoutOfHelpers<'tcx> for LayoutCx<'tcx, TyCtxtAt<'tcx>>
impl<'tcx> LayoutOfHelpers<'tcx> for LayoutCx<'tcx, TyCtxtAt<'tcx>>
type LayoutOfResult = Result<TyAndLayout<'tcx, Ty<'tcx>>, LayoutError<'tcx>>
type LayoutOfResult = Result<TyAndLayout<'tcx, Ty<'tcx>>, LayoutError<'tcx>>
The
TyAndLayout
-wrapping type (or TyAndLayout
itself), which will be
returned from layout_of
(see also handle_layout_err
). Read moresourcefn layout_tcx_at_span(&self) -> Span
fn layout_tcx_at_span(&self) -> Span
Span
to use for tcx.at(span)
, from layout_of
.sourcefn handle_layout_err(
&self,
err: LayoutError<'tcx>,
_: Span,
_: Ty<'tcx>
) -> LayoutError<'tcx>
fn handle_layout_err(
&self,
err: LayoutError<'tcx>,
_: Span,
_: Ty<'tcx>
) -> LayoutError<'tcx>
Helper used for
layout_of
, to adapt tcx.layout_of(...)
into a
Self::LayoutOfResult
(which does not need to be a Result<...>
). Read moreimpl<'tcx, C: Copy> Copy for LayoutCx<'tcx, C>
Auto Trait Implementations
impl<'tcx, C> !RefUnwindSafe for LayoutCx<'tcx, C>
impl<'tcx, C> Send for LayoutCx<'tcx, C>where
C: Send,
impl<'tcx, C> Sync for LayoutCx<'tcx, C>where
C: Sync,
impl<'tcx, C> Unpin for LayoutCx<'tcx, C>where
C: Unpin,
impl<'tcx, C> !UnwindSafe for LayoutCx<'tcx, C>
Blanket Implementations
sourceimpl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on(self, arena: &'a Arena<'tcx>) -> &'a mut T
fn allocate_from_iter(
arena: &'a Arena<'tcx>,
iter: impl IntoIterator<Item = T>
) -> &'a mut [T]ⓘNotable traits for &[u8]impl Read for &[u8]impl Write for &mut [u8]
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T, R> InternIteratorElement<T, R> for T
impl<T, R> InternIteratorElement<T, R> for T
type Output = R
fn intern_with<I, F>(iter: I, f: F) -> <T as InternIteratorElement<T, R>>::Outputwhere
I: Iterator<Item = T>,
F: FnOnce(&[T]) -> R,
sourceimpl<'tcx, C> LayoutOf<'tcx> for Cwhere
C: LayoutOfHelpers<'tcx>,
impl<'tcx, C> LayoutOf<'tcx> for Cwhere
C: LayoutOfHelpers<'tcx>,
sourcefn layout_of(&self, ty: Ty<'tcx>) -> Self::LayoutOfResult
fn layout_of(&self, ty: Ty<'tcx>) -> Self::LayoutOfResult
Computes the layout of a type. Note that this implicitly
executes in “reveal all” mode, and will normalize the input type. Read more
sourcefn spanned_layout_of(&self, ty: Ty<'tcx>, span: Span) -> Self::LayoutOfResult
fn spanned_layout_of(&self, ty: Ty<'tcx>, span: Span) -> Self::LayoutOfResult
Computes the layout of a type, at
span
. Note that this implicitly
executes in “reveal all” mode, and will normalize the input type. Read moresourceimpl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
sourceimpl<CTX, T> Value<CTX> for Twhere
CTX: DepContext,
impl<CTX, T> Value<CTX> for Twhere
CTX: DepContext,
default fn from_cycle_error(tcx: CTX) -> T
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
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.