Struct rustc_middle::ty::layout::LayoutCx
source · pub struct LayoutCx<'tcx, C> {
pub tcx: C,
pub param_env: ParamEnv<'tcx>,
}Fields§
§tcx: C§param_env: ParamEnv<'tcx>Trait Implementations§
source§impl<'tcx, T: HasDataLayout> HasDataLayout for LayoutCx<'tcx, T>
impl<'tcx, T: HasDataLayout> HasDataLayout for LayoutCx<'tcx, T>
fn data_layout(&self) -> &TargetDataLayout
source§impl<'tcx, C> HasParamEnv<'tcx> for LayoutCx<'tcx, C>
impl<'tcx, C> HasParamEnv<'tcx> for LayoutCx<'tcx, C>
source§impl<'tcx, T: HasTargetSpec> HasTargetSpec for LayoutCx<'tcx, T>
impl<'tcx, T: HasTargetSpec> HasTargetSpec for LayoutCx<'tcx, T>
fn target_spec(&self) -> &Target
source§impl<'tcx> LayoutCalculator for LayoutCx<'tcx, TyCtxt<'tcx>>
impl<'tcx> LayoutCalculator for LayoutCx<'tcx, TyCtxt<'tcx>>
type TargetDataLayoutRef = &'tcx TargetDataLayout
fn delay_bug(&self, txt: &str)
fn current_data_layout(&self) -> Self::TargetDataLayoutRef
fn scalar_pair(&self, a: Scalar, b: Scalar) -> LayoutS
fn univariant( &self, dl: &TargetDataLayout, fields: &IndexSlice<FieldIdx, Layout<'_>>, repr: &ReprOptions, kind: StructKind ) -> Option<LayoutS>
fn layout_of_never_type(&self) -> LayoutS
fn layout_of_struct_or_enum( &self, repr: &ReprOptions, variants: &IndexSlice<VariantIdx, IndexVec<FieldIdx, Layout<'_>>>, is_enum: bool, is_unsafe_cell: bool, scalar_valid_range: (Bound<u128>, Bound<u128>), discr_range_of_repr: impl Fn(i128, i128) -> (Integer, bool), discriminants: impl Iterator<Item = (VariantIdx, i128)>, niche_optimize_enum: bool, always_sized: bool ) -> Option<LayoutS>
fn layout_of_union( &self, repr: &ReprOptions, variants: &IndexSlice<VariantIdx, IndexVec<FieldIdx, Layout<'_>>> ) -> Option<LayoutS>
source§impl<'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).source§fn 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 moresource§fn layout_tcx_at_span(&self) -> Span
fn layout_tcx_at_span(&self) -> Span
Span to use for tcx.at(span), from layout_of.source§impl<'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).source§fn layout_tcx_at_span(&self) -> Span
fn layout_tcx_at_span(&self) -> Span
Span to use for tcx.at(span), from layout_of.source§fn 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>
impl<'tcx, C> !Sync for LayoutCx<'tcx, C>
impl<'tcx, C> Unpin for LayoutCx<'tcx, C>where C: Unpin,
impl<'tcx, C> !UnwindSafe for LayoutCx<'tcx, C>
Blanket Implementations§
source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere T: Copy,
fn allocate_on<'a>(self, arena: &'a Arena<'tcx>) -> &'a mut T
fn allocate_from_iter<'a>( arena: &'a Arena<'tcx>, iter: impl IntoIterator<Item = T> ) -> &'a mut [T]
source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
source§impl<'tcx, C> LayoutOf<'tcx> for Cwhere
C: LayoutOfHelpers<'tcx>,
impl<'tcx, C> LayoutOf<'tcx> for Cwhere C: LayoutOfHelpers<'tcx>,
source§fn 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.
source§fn 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.source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> T
source§impl<Tcx, T, D> Value<Tcx, D> for Twhere
Tcx: DepContext,
D: DepKind,
impl<Tcx, T, D> Value<Tcx, D> for Twhere Tcx: DepContext, D: DepKind,
default fn from_cycle_error(tcx: Tcx, _: &[QueryInfo<D>]) -> T
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.