mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 19:17:43 +00:00
Auto merge of #122571 - matthiaskrgr:rollup-36wwovk, r=matthiaskrgr
Rollup of 6 pull requests Successful merges: - #122254 (Detect calls to .clone() on T: !Clone types on borrowck errors) - #122495 (Visually mark 👻hidden👻 items with document-hidden-items) - #122543 (Add `#![rustc_never_type_mode = "..."]` crate-level attribute to allow experimenting) - #122560 (Safe Transmute: Use 'not yet supported', not 'unspecified' in errors) - #122562 (Mention labelled blocks in `break` docs) - #122563 (CI: cache PR CI Docker builds) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
c67326b063
@ -16,6 +16,9 @@ borrowck_borrow_due_to_use_closure =
|
|||||||
borrowck_borrow_due_to_use_coroutine =
|
borrowck_borrow_due_to_use_coroutine =
|
||||||
borrow occurs due to use in coroutine
|
borrow occurs due to use in coroutine
|
||||||
|
|
||||||
|
borrowck_calling_operator_moves =
|
||||||
|
calling this operator moves the value
|
||||||
|
|
||||||
borrowck_calling_operator_moves_lhs =
|
borrowck_calling_operator_moves_lhs =
|
||||||
calling this operator moves the left-hand side
|
calling this operator moves the left-hand side
|
||||||
|
|
||||||
|
@ -12,7 +12,6 @@ use rustc_hir::def::{DefKind, Res};
|
|||||||
use rustc_hir::intravisit::{walk_block, walk_expr, Visitor};
|
use rustc_hir::intravisit::{walk_block, walk_expr, Visitor};
|
||||||
use rustc_hir::{CoroutineDesugaring, PatField};
|
use rustc_hir::{CoroutineDesugaring, PatField};
|
||||||
use rustc_hir::{CoroutineKind, CoroutineSource, LangItem};
|
use rustc_hir::{CoroutineKind, CoroutineSource, LangItem};
|
||||||
use rustc_infer::traits::ObligationCause;
|
|
||||||
use rustc_middle::hir::nested_filter::OnlyBodies;
|
use rustc_middle::hir::nested_filter::OnlyBodies;
|
||||||
use rustc_middle::mir::tcx::PlaceTy;
|
use rustc_middle::mir::tcx::PlaceTy;
|
||||||
use rustc_middle::mir::{
|
use rustc_middle::mir::{
|
||||||
@ -21,16 +20,21 @@ use rustc_middle::mir::{
|
|||||||
PlaceRef, ProjectionElem, Rvalue, Statement, StatementKind, Terminator, TerminatorKind,
|
PlaceRef, ProjectionElem, Rvalue, Statement, StatementKind, Terminator, TerminatorKind,
|
||||||
VarBindingForm,
|
VarBindingForm,
|
||||||
};
|
};
|
||||||
use rustc_middle::ty::{self, suggest_constraining_type_params, PredicateKind, Ty, TyCtxt};
|
use rustc_middle::ty::{
|
||||||
|
self, suggest_constraining_type_params, PredicateKind, ToPredicate, Ty, TyCtxt,
|
||||||
|
TypeSuperVisitable, TypeVisitor,
|
||||||
|
};
|
||||||
use rustc_middle::util::CallKind;
|
use rustc_middle::util::CallKind;
|
||||||
use rustc_mir_dataflow::move_paths::{InitKind, MoveOutIndex, MovePathIndex};
|
use rustc_mir_dataflow::move_paths::{InitKind, MoveOutIndex, MovePathIndex};
|
||||||
|
use rustc_span::def_id::DefId;
|
||||||
use rustc_span::def_id::LocalDefId;
|
use rustc_span::def_id::LocalDefId;
|
||||||
use rustc_span::hygiene::DesugaringKind;
|
use rustc_span::hygiene::DesugaringKind;
|
||||||
use rustc_span::symbol::{kw, sym, Ident};
|
use rustc_span::symbol::{kw, sym, Ident};
|
||||||
use rustc_span::{BytePos, Span, Symbol};
|
use rustc_span::{BytePos, Span, Symbol};
|
||||||
use rustc_trait_selection::infer::InferCtxtExt;
|
use rustc_trait_selection::infer::InferCtxtExt;
|
||||||
|
use rustc_trait_selection::traits::error_reporting::suggestions::TypeErrCtxtExt;
|
||||||
use rustc_trait_selection::traits::error_reporting::FindExprBySpan;
|
use rustc_trait_selection::traits::error_reporting::FindExprBySpan;
|
||||||
use rustc_trait_selection::traits::ObligationCtxt;
|
use rustc_trait_selection::traits::{Obligation, ObligationCause, ObligationCtxt};
|
||||||
use std::iter;
|
use std::iter;
|
||||||
|
|
||||||
use crate::borrow_set::TwoPhaseActivation;
|
use crate::borrow_set::TwoPhaseActivation;
|
||||||
@ -283,7 +287,8 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
|||||||
// something that already has `Fn`-like bounds (or is a closure), so we can't
|
// something that already has `Fn`-like bounds (or is a closure), so we can't
|
||||||
// restrict anyways.
|
// restrict anyways.
|
||||||
} else {
|
} else {
|
||||||
self.suggest_adding_copy_bounds(&mut err, ty, span);
|
let copy_did = self.infcx.tcx.require_lang_item(LangItem::Copy, Some(span));
|
||||||
|
self.suggest_adding_bounds(&mut err, ty, copy_did, span);
|
||||||
}
|
}
|
||||||
|
|
||||||
if needs_note {
|
if needs_note {
|
||||||
@ -774,7 +779,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn suggest_adding_copy_bounds(&self, err: &mut Diag<'_>, ty: Ty<'tcx>, span: Span) {
|
fn suggest_adding_bounds(&self, err: &mut Diag<'_>, ty: Ty<'tcx>, def_id: DefId, span: Span) {
|
||||||
let tcx = self.infcx.tcx;
|
let tcx = self.infcx.tcx;
|
||||||
let generics = tcx.generics_of(self.mir_def_id());
|
let generics = tcx.generics_of(self.mir_def_id());
|
||||||
|
|
||||||
@ -787,10 +792,9 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
|||||||
};
|
};
|
||||||
// Try to find predicates on *generic params* that would allow copying `ty`
|
// Try to find predicates on *generic params* that would allow copying `ty`
|
||||||
let ocx = ObligationCtxt::new(self.infcx);
|
let ocx = ObligationCtxt::new(self.infcx);
|
||||||
let copy_did = tcx.require_lang_item(LangItem::Copy, Some(span));
|
|
||||||
let cause = ObligationCause::misc(span, self.mir_def_id());
|
let cause = ObligationCause::misc(span, self.mir_def_id());
|
||||||
|
|
||||||
ocx.register_bound(cause, self.param_env, ty, copy_did);
|
ocx.register_bound(cause, self.param_env, ty, def_id);
|
||||||
let errors = ocx.select_all_or_error();
|
let errors = ocx.select_all_or_error();
|
||||||
|
|
||||||
// Only emit suggestion if all required predicates are on generic
|
// Only emit suggestion if all required predicates are on generic
|
||||||
@ -876,6 +880,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
|||||||
Some(borrow_span),
|
Some(borrow_span),
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
|
self.suggest_copy_for_type_in_cloned_ref(&mut err, place);
|
||||||
self.buffer_error(err);
|
self.buffer_error(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1214,10 +1219,104 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
|||||||
);
|
);
|
||||||
|
|
||||||
self.suggest_using_local_if_applicable(&mut err, location, issued_borrow, explanation);
|
self.suggest_using_local_if_applicable(&mut err, location, issued_borrow, explanation);
|
||||||
|
self.suggest_copy_for_type_in_cloned_ref(&mut err, place);
|
||||||
|
|
||||||
err
|
err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn suggest_copy_for_type_in_cloned_ref(&self, err: &mut Diag<'tcx>, place: Place<'tcx>) {
|
||||||
|
let tcx = self.infcx.tcx;
|
||||||
|
let hir = tcx.hir();
|
||||||
|
let Some(body_id) = tcx.hir_node(self.mir_hir_id()).body_id() else { return };
|
||||||
|
struct FindUselessClone<'hir> {
|
||||||
|
pub clones: Vec<&'hir hir::Expr<'hir>>,
|
||||||
|
}
|
||||||
|
impl<'hir> FindUselessClone<'hir> {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Self { clones: vec![] }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'v> Visitor<'v> for FindUselessClone<'v> {
|
||||||
|
fn visit_expr(&mut self, ex: &'v hir::Expr<'v>) {
|
||||||
|
// FIXME: use `lookup_method_for_diagnostic`?
|
||||||
|
if let hir::ExprKind::MethodCall(segment, _rcvr, args, _span) = ex.kind
|
||||||
|
&& segment.ident.name == sym::clone
|
||||||
|
&& args.len() == 0
|
||||||
|
{
|
||||||
|
self.clones.push(ex);
|
||||||
|
}
|
||||||
|
hir::intravisit::walk_expr(self, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut expr_finder = FindUselessClone::new();
|
||||||
|
|
||||||
|
let body = hir.body(body_id).value;
|
||||||
|
expr_finder.visit_expr(body);
|
||||||
|
|
||||||
|
pub struct Holds<'tcx> {
|
||||||
|
ty: Ty<'tcx>,
|
||||||
|
holds: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'tcx> TypeVisitor<TyCtxt<'tcx>> for Holds<'tcx> {
|
||||||
|
type Result = std::ops::ControlFlow<()>;
|
||||||
|
|
||||||
|
fn visit_ty(&mut self, t: Ty<'tcx>) -> Self::Result {
|
||||||
|
if t == self.ty {
|
||||||
|
self.holds = true;
|
||||||
|
}
|
||||||
|
t.super_visit_with(self)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut types_to_constrain = FxIndexSet::default();
|
||||||
|
|
||||||
|
let local_ty = self.body.local_decls[place.local].ty;
|
||||||
|
let typeck_results = tcx.typeck(self.mir_def_id());
|
||||||
|
let clone = tcx.require_lang_item(LangItem::Clone, Some(body.span));
|
||||||
|
for expr in expr_finder.clones {
|
||||||
|
if let hir::ExprKind::MethodCall(_, rcvr, _, span) = expr.kind
|
||||||
|
&& let Some(rcvr_ty) = typeck_results.node_type_opt(rcvr.hir_id)
|
||||||
|
&& let Some(ty) = typeck_results.node_type_opt(expr.hir_id)
|
||||||
|
&& rcvr_ty == ty
|
||||||
|
&& let ty::Ref(_, inner, _) = rcvr_ty.kind()
|
||||||
|
&& let inner = inner.peel_refs()
|
||||||
|
&& let mut v = (Holds { ty: inner, holds: false })
|
||||||
|
&& let _ = v.visit_ty(local_ty)
|
||||||
|
&& v.holds
|
||||||
|
&& let None = self.infcx.type_implements_trait_shallow(clone, inner, self.param_env)
|
||||||
|
{
|
||||||
|
err.span_label(
|
||||||
|
span,
|
||||||
|
format!(
|
||||||
|
"this call doesn't do anything, the result is still `{rcvr_ty}` \
|
||||||
|
because `{inner}` doesn't implement `Clone`",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
types_to_constrain.insert(inner);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for ty in types_to_constrain {
|
||||||
|
self.suggest_adding_bounds(err, ty, clone, body.span);
|
||||||
|
if let ty::Adt(..) = ty.kind() {
|
||||||
|
// The type doesn't implement Clone.
|
||||||
|
let trait_ref = ty::Binder::dummy(ty::TraitRef::new(self.infcx.tcx, clone, [ty]));
|
||||||
|
let obligation = Obligation::new(
|
||||||
|
self.infcx.tcx,
|
||||||
|
ObligationCause::dummy(),
|
||||||
|
self.param_env,
|
||||||
|
trait_ref,
|
||||||
|
);
|
||||||
|
self.infcx.err_ctxt().suggest_derive(
|
||||||
|
&obligation,
|
||||||
|
err,
|
||||||
|
trait_ref.to_predicate(self.infcx.tcx),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[instrument(level = "debug", skip(self, err))]
|
#[instrument(level = "debug", skip(self, err))]
|
||||||
fn suggest_using_local_if_applicable(
|
fn suggest_using_local_if_applicable(
|
||||||
&self,
|
&self,
|
||||||
|
@ -1050,7 +1050,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
|||||||
);
|
);
|
||||||
err.subdiagnostic(self.dcx(), CaptureReasonNote::FnOnceMoveInCall { var_span });
|
err.subdiagnostic(self.dcx(), CaptureReasonNote::FnOnceMoveInCall { var_span });
|
||||||
}
|
}
|
||||||
CallKind::Operator { self_arg, .. } => {
|
CallKind::Operator { self_arg, trait_id, .. } => {
|
||||||
let self_arg = self_arg.unwrap();
|
let self_arg = self_arg.unwrap();
|
||||||
err.subdiagnostic(
|
err.subdiagnostic(
|
||||||
self.dcx(),
|
self.dcx(),
|
||||||
@ -1062,9 +1062,16 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
if self.fn_self_span_reported.insert(fn_span) {
|
if self.fn_self_span_reported.insert(fn_span) {
|
||||||
|
let lang = self.infcx.tcx.lang_items();
|
||||||
err.subdiagnostic(
|
err.subdiagnostic(
|
||||||
self.dcx(),
|
self.dcx(),
|
||||||
CaptureReasonNote::LhsMoveByOperator { span: self_arg.span },
|
if [lang.not_trait(), lang.deref_trait(), lang.neg_trait()]
|
||||||
|
.contains(&Some(trait_id))
|
||||||
|
{
|
||||||
|
CaptureReasonNote::UnOpMoveByOperator { span: self_arg.span }
|
||||||
|
} else {
|
||||||
|
CaptureReasonNote::LhsMoveByOperator { span: self_arg.span }
|
||||||
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1226,20 +1233,20 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
|
|||||||
{
|
{
|
||||||
let msg = match &errors[..] {
|
let msg = match &errors[..] {
|
||||||
[] => "you can `clone` the value and consume it, but this \
|
[] => "you can `clone` the value and consume it, but this \
|
||||||
might not be your desired behavior"
|
might not be your desired behavior"
|
||||||
.to_string(),
|
.to_string(),
|
||||||
[error] => {
|
[error] => {
|
||||||
format!(
|
format!(
|
||||||
"you could `clone` the value and consume it, if \
|
"you could `clone` the value and consume it, if the \
|
||||||
the `{}` trait bound could be satisfied",
|
`{}` trait bound could be satisfied",
|
||||||
error.obligation.predicate,
|
error.obligation.predicate,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
[errors @ .., last] => {
|
[errors @ .., last] => {
|
||||||
format!(
|
format!(
|
||||||
"you could `clone` the value and consume it, if \
|
"you could `clone` the value and consume it, if the \
|
||||||
the following trait bounds could be satisfied: {} \
|
following trait bounds could be satisfied: \
|
||||||
and `{}`",
|
{} and `{}`",
|
||||||
errors
|
errors
|
||||||
.iter()
|
.iter()
|
||||||
.map(|e| format!("`{}`", e.obligation.predicate))
|
.map(|e| format!("`{}`", e.obligation.predicate))
|
||||||
|
@ -368,6 +368,11 @@ pub(crate) enum CaptureReasonNote {
|
|||||||
#[primary_span]
|
#[primary_span]
|
||||||
var_span: Span,
|
var_span: Span,
|
||||||
},
|
},
|
||||||
|
#[note(borrowck_calling_operator_moves)]
|
||||||
|
UnOpMoveByOperator {
|
||||||
|
#[primary_span]
|
||||||
|
span: Span,
|
||||||
|
},
|
||||||
#[note(borrowck_calling_operator_moves_lhs)]
|
#[note(borrowck_calling_operator_moves_lhs)]
|
||||||
LhsMoveByOperator {
|
LhsMoveByOperator {
|
||||||
#[primary_span]
|
#[primary_span]
|
||||||
|
@ -580,6 +580,13 @@ pub const BUILTIN_ATTRIBUTES: &[BuiltinAttribute] = &[
|
|||||||
"`may_dangle` has unstable semantics and may be removed in the future",
|
"`may_dangle` has unstable semantics and may be removed in the future",
|
||||||
),
|
),
|
||||||
|
|
||||||
|
rustc_attr!(
|
||||||
|
rustc_never_type_mode, Normal, template!(NameValueStr: "fallback_to_unit|fallback_to_niko|fallback_to_never|no_fallback"), ErrorFollowing,
|
||||||
|
@only_local: true,
|
||||||
|
"`rustc_never_type_fallback` is used to experiment with never type fallback and work on \
|
||||||
|
never type stabilization, and will never be stable"
|
||||||
|
),
|
||||||
|
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
// Internal attributes: Runtime related:
|
// Internal attributes: Runtime related:
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
|
@ -4,8 +4,22 @@ use rustc_data_structures::{
|
|||||||
graph::{iterate::DepthFirstSearch, vec_graph::VecGraph},
|
graph::{iterate::DepthFirstSearch, vec_graph::VecGraph},
|
||||||
unord::{UnordBag, UnordMap, UnordSet},
|
unord::{UnordBag, UnordMap, UnordSet},
|
||||||
};
|
};
|
||||||
|
use rustc_hir::def_id::CRATE_DEF_ID;
|
||||||
use rustc_infer::infer::{DefineOpaqueTypes, InferOk};
|
use rustc_infer::infer::{DefineOpaqueTypes, InferOk};
|
||||||
use rustc_middle::ty::{self, Ty};
|
use rustc_middle::ty::{self, Ty};
|
||||||
|
use rustc_span::sym;
|
||||||
|
|
||||||
|
enum DivergingFallbackBehavior {
|
||||||
|
/// Always fallback to `()` (aka "always spontaneous decay")
|
||||||
|
FallbackToUnit,
|
||||||
|
/// Sometimes fallback to `!`, but mainly fallback to `()` so that most of the crates are not broken.
|
||||||
|
FallbackToNiko,
|
||||||
|
/// Always fallback to `!` (which should be equivalent to never falling back + not making
|
||||||
|
/// never-to-any coercions unless necessary)
|
||||||
|
FallbackToNever,
|
||||||
|
/// Don't fallback at all
|
||||||
|
NoFallback,
|
||||||
|
}
|
||||||
|
|
||||||
impl<'tcx> FnCtxt<'_, 'tcx> {
|
impl<'tcx> FnCtxt<'_, 'tcx> {
|
||||||
/// Performs type inference fallback, setting `FnCtxt::fallback_has_occurred`
|
/// Performs type inference fallback, setting `FnCtxt::fallback_has_occurred`
|
||||||
@ -64,7 +78,9 @@ impl<'tcx> FnCtxt<'_, 'tcx> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let diverging_fallback = self.calculate_diverging_fallback(&unresolved_variables);
|
let diverging_behavior = self.diverging_fallback_behavior();
|
||||||
|
let diverging_fallback =
|
||||||
|
self.calculate_diverging_fallback(&unresolved_variables, diverging_behavior);
|
||||||
|
|
||||||
// We do fallback in two passes, to try to generate
|
// We do fallback in two passes, to try to generate
|
||||||
// better error messages.
|
// better error messages.
|
||||||
@ -78,6 +94,32 @@ impl<'tcx> FnCtxt<'_, 'tcx> {
|
|||||||
fallback_occurred
|
fallback_occurred
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn diverging_fallback_behavior(&self) -> DivergingFallbackBehavior {
|
||||||
|
let Some((mode, span)) = self
|
||||||
|
.tcx
|
||||||
|
.get_attr(CRATE_DEF_ID, sym::rustc_never_type_mode)
|
||||||
|
.map(|attr| (attr.value_str().unwrap(), attr.span))
|
||||||
|
else {
|
||||||
|
if self.tcx.features().never_type_fallback {
|
||||||
|
return DivergingFallbackBehavior::FallbackToNiko;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DivergingFallbackBehavior::FallbackToUnit;
|
||||||
|
};
|
||||||
|
|
||||||
|
match mode {
|
||||||
|
sym::fallback_to_unit => DivergingFallbackBehavior::FallbackToUnit,
|
||||||
|
sym::fallback_to_niko => DivergingFallbackBehavior::FallbackToNiko,
|
||||||
|
sym::fallback_to_never => DivergingFallbackBehavior::FallbackToNever,
|
||||||
|
sym::no_fallback => DivergingFallbackBehavior::NoFallback,
|
||||||
|
_ => {
|
||||||
|
self.tcx.dcx().span_err(span, format!("unknown never type mode: `{mode}` (supported: `fallback_to_unit`, `fallback_to_niko`, `fallback_to_never` and `no_fallback`)"));
|
||||||
|
|
||||||
|
DivergingFallbackBehavior::FallbackToUnit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn fallback_effects(&self) -> bool {
|
fn fallback_effects(&self) -> bool {
|
||||||
let unsolved_effects = self.unsolved_effects();
|
let unsolved_effects = self.unsolved_effects();
|
||||||
|
|
||||||
@ -232,6 +274,7 @@ impl<'tcx> FnCtxt<'_, 'tcx> {
|
|||||||
fn calculate_diverging_fallback(
|
fn calculate_diverging_fallback(
|
||||||
&self,
|
&self,
|
||||||
unresolved_variables: &[Ty<'tcx>],
|
unresolved_variables: &[Ty<'tcx>],
|
||||||
|
behavior: DivergingFallbackBehavior,
|
||||||
) -> UnordMap<Ty<'tcx>, Ty<'tcx>> {
|
) -> UnordMap<Ty<'tcx>, Ty<'tcx>> {
|
||||||
debug!("calculate_diverging_fallback({:?})", unresolved_variables);
|
debug!("calculate_diverging_fallback({:?})", unresolved_variables);
|
||||||
|
|
||||||
@ -345,39 +388,61 @@ impl<'tcx> FnCtxt<'_, 'tcx> {
|
|||||||
output: infer_var_infos.items().any(|info| info.output),
|
output: infer_var_infos.items().any(|info| info.output),
|
||||||
};
|
};
|
||||||
|
|
||||||
if found_infer_var_info.self_in_trait && found_infer_var_info.output {
|
use DivergingFallbackBehavior::*;
|
||||||
// This case falls back to () to ensure that the code pattern in
|
match behavior {
|
||||||
// tests/ui/never_type/fallback-closure-ret.rs continues to
|
FallbackToUnit => {
|
||||||
// compile when never_type_fallback is enabled.
|
debug!("fallback to () - legacy: {:?}", diverging_vid);
|
||||||
//
|
diverging_fallback.insert(diverging_ty, self.tcx.types.unit);
|
||||||
// This rule is not readily explainable from first principles,
|
}
|
||||||
// but is rather intended as a patchwork fix to ensure code
|
FallbackToNiko => {
|
||||||
// which compiles before the stabilization of never type
|
if found_infer_var_info.self_in_trait && found_infer_var_info.output {
|
||||||
// fallback continues to work.
|
// This case falls back to () to ensure that the code pattern in
|
||||||
//
|
// tests/ui/never_type/fallback-closure-ret.rs continues to
|
||||||
// Typically this pattern is encountered in a function taking a
|
// compile when never_type_fallback is enabled.
|
||||||
// closure as a parameter, where the return type of that closure
|
//
|
||||||
// (checked by `relationship.output`) is expected to implement
|
// This rule is not readily explainable from first principles,
|
||||||
// some trait (checked by `relationship.self_in_trait`). This
|
// but is rather intended as a patchwork fix to ensure code
|
||||||
// can come up in non-closure cases too, so we do not limit this
|
// which compiles before the stabilization of never type
|
||||||
// rule to specifically `FnOnce`.
|
// fallback continues to work.
|
||||||
//
|
//
|
||||||
// When the closure's body is something like `panic!()`, the
|
// Typically this pattern is encountered in a function taking a
|
||||||
// return type would normally be inferred to `!`. However, it
|
// closure as a parameter, where the return type of that closure
|
||||||
// needs to fall back to `()` in order to still compile, as the
|
// (checked by `relationship.output`) is expected to implement
|
||||||
// trait is specifically implemented for `()` but not `!`.
|
// some trait (checked by `relationship.self_in_trait`). This
|
||||||
//
|
// can come up in non-closure cases too, so we do not limit this
|
||||||
// For details on the requirements for these relationships to be
|
// rule to specifically `FnOnce`.
|
||||||
// set, see the relationship finding module in
|
//
|
||||||
// compiler/rustc_trait_selection/src/traits/relationships.rs.
|
// When the closure's body is something like `panic!()`, the
|
||||||
debug!("fallback to () - found trait and projection: {:?}", diverging_vid);
|
// return type would normally be inferred to `!`. However, it
|
||||||
diverging_fallback.insert(diverging_ty, self.tcx.types.unit);
|
// needs to fall back to `()` in order to still compile, as the
|
||||||
} else if can_reach_non_diverging {
|
// trait is specifically implemented for `()` but not `!`.
|
||||||
debug!("fallback to () - reached non-diverging: {:?}", diverging_vid);
|
//
|
||||||
diverging_fallback.insert(diverging_ty, self.tcx.types.unit);
|
// For details on the requirements for these relationships to be
|
||||||
} else {
|
// set, see the relationship finding module in
|
||||||
debug!("fallback to ! - all diverging: {:?}", diverging_vid);
|
// compiler/rustc_trait_selection/src/traits/relationships.rs.
|
||||||
diverging_fallback.insert(diverging_ty, Ty::new_diverging_default(self.tcx));
|
debug!("fallback to () - found trait and projection: {:?}", diverging_vid);
|
||||||
|
diverging_fallback.insert(diverging_ty, self.tcx.types.unit);
|
||||||
|
} else if can_reach_non_diverging {
|
||||||
|
debug!("fallback to () - reached non-diverging: {:?}", diverging_vid);
|
||||||
|
diverging_fallback.insert(diverging_ty, self.tcx.types.unit);
|
||||||
|
} else {
|
||||||
|
debug!("fallback to ! - all diverging: {:?}", diverging_vid);
|
||||||
|
diverging_fallback.insert(diverging_ty, self.tcx.types.never);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FallbackToNever => {
|
||||||
|
debug!(
|
||||||
|
"fallback to ! - `rustc_never_type_mode = \"fallback_to_never\")`: {:?}",
|
||||||
|
diverging_vid
|
||||||
|
);
|
||||||
|
diverging_fallback.insert(diverging_ty, self.tcx.types.never);
|
||||||
|
}
|
||||||
|
NoFallback => {
|
||||||
|
debug!(
|
||||||
|
"no fallback - `rustc_never_type_mode = \"no_fallback\"`: {:?}",
|
||||||
|
diverging_vid
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ mir_build_borrow_of_layout_constrained_field_requires_unsafe_unsafe_op_in_unsafe
|
|||||||
|
|
||||||
mir_build_borrow_of_moved_value = borrow of moved value
|
mir_build_borrow_of_moved_value = borrow of moved value
|
||||||
.label = value moved into `{$name}` here
|
.label = value moved into `{$name}` here
|
||||||
.occurs_because_label = move occurs because `{$name}` has type `{$ty}` which does not implement the `Copy` trait
|
.occurs_because_label = move occurs because `{$name}` has type `{$ty}`, which does not implement the `Copy` trait
|
||||||
.value_borrowed_label = value borrowed here after move
|
.value_borrowed_label = value borrowed here after move
|
||||||
.suggestion = borrow this binding in the pattern to avoid moving the value
|
.suggestion = borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
||||||
|
@ -815,6 +815,9 @@ symbols! {
|
|||||||
fadd_algebraic,
|
fadd_algebraic,
|
||||||
fadd_fast,
|
fadd_fast,
|
||||||
fake_variadic,
|
fake_variadic,
|
||||||
|
fallback_to_never,
|
||||||
|
fallback_to_niko,
|
||||||
|
fallback_to_unit,
|
||||||
fdiv_algebraic,
|
fdiv_algebraic,
|
||||||
fdiv_fast,
|
fdiv_fast,
|
||||||
feature,
|
feature,
|
||||||
@ -1233,6 +1236,7 @@ symbols! {
|
|||||||
no_crate_inject,
|
no_crate_inject,
|
||||||
no_debug,
|
no_debug,
|
||||||
no_default_passes,
|
no_default_passes,
|
||||||
|
no_fallback,
|
||||||
no_implicit_prelude,
|
no_implicit_prelude,
|
||||||
no_inline,
|
no_inline,
|
||||||
no_link,
|
no_link,
|
||||||
@ -1551,6 +1555,7 @@ symbols! {
|
|||||||
rustc_mir,
|
rustc_mir,
|
||||||
rustc_must_implement_one_of,
|
rustc_must_implement_one_of,
|
||||||
rustc_never_returns_null_ptr,
|
rustc_never_returns_null_ptr,
|
||||||
|
rustc_never_type_mode,
|
||||||
rustc_no_mir_inline,
|
rustc_no_mir_inline,
|
||||||
rustc_nonnull_optimization_guaranteed,
|
rustc_nonnull_optimization_guaranteed,
|
||||||
rustc_nounwind,
|
rustc_nounwind,
|
||||||
|
@ -3073,29 +3073,29 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
|
|||||||
let src = trait_ref.args.type_at(1);
|
let src = trait_ref.args.type_at(1);
|
||||||
let err_msg = format!("`{src}` cannot be safely transmuted into `{dst}`");
|
let err_msg = format!("`{src}` cannot be safely transmuted into `{dst}`");
|
||||||
let safe_transmute_explanation = match reason {
|
let safe_transmute_explanation = match reason {
|
||||||
rustc_transmute::Reason::SrcIsUnspecified => {
|
rustc_transmute::Reason::SrcIsNotYetSupported => {
|
||||||
format!("`{src}` does not have a well-specified layout")
|
format!("analyzing the transmutability of `{src}` is not yet supported.")
|
||||||
}
|
}
|
||||||
|
|
||||||
rustc_transmute::Reason::DstIsUnspecified => {
|
rustc_transmute::Reason::DstIsNotYetSupported => {
|
||||||
format!("`{dst}` does not have a well-specified layout")
|
format!("analyzing the transmutability of `{dst}` is not yet supported.")
|
||||||
}
|
}
|
||||||
|
|
||||||
rustc_transmute::Reason::DstIsBitIncompatible => {
|
rustc_transmute::Reason::DstIsBitIncompatible => {
|
||||||
format!("At least one value of `{src}` isn't a bit-valid value of `{dst}`")
|
format!("at least one value of `{src}` isn't a bit-valid value of `{dst}`")
|
||||||
}
|
}
|
||||||
|
|
||||||
rustc_transmute::Reason::DstMayHaveSafetyInvariants => {
|
rustc_transmute::Reason::DstMayHaveSafetyInvariants => {
|
||||||
format!("`{dst}` may carry safety invariants")
|
format!("`{dst}` may carry safety invariants")
|
||||||
}
|
}
|
||||||
rustc_transmute::Reason::DstIsTooBig => {
|
rustc_transmute::Reason::DstIsTooBig => {
|
||||||
format!("The size of `{src}` is smaller than the size of `{dst}`")
|
format!("the size of `{src}` is smaller than the size of `{dst}`")
|
||||||
}
|
}
|
||||||
rustc_transmute::Reason::DstRefIsTooBig { src, dst } => {
|
rustc_transmute::Reason::DstRefIsTooBig { src, dst } => {
|
||||||
let src_size = src.size;
|
let src_size = src.size;
|
||||||
let dst_size = dst.size;
|
let dst_size = dst.size;
|
||||||
format!(
|
format!(
|
||||||
"The referent size of `{src}` ({src_size} bytes) is smaller than that of `{dst}` ({dst_size} bytes)"
|
"the referent size of `{src}` ({src_size} bytes) is smaller than that of `{dst}` ({dst_size} bytes)"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
rustc_transmute::Reason::SrcSizeOverflow => {
|
rustc_transmute::Reason::SrcSizeOverflow => {
|
||||||
@ -3113,7 +3113,7 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
|
|||||||
dst_min_align,
|
dst_min_align,
|
||||||
} => {
|
} => {
|
||||||
format!(
|
format!(
|
||||||
"The minimum alignment of `{src}` ({src_min_align}) should be greater than that of `{dst}` ({dst_min_align})"
|
"the minimum alignment of `{src}` ({src_min_align}) should be greater than that of `{dst}` ({dst_min_align})"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
rustc_transmute::Reason::DstIsMoreUnique => {
|
rustc_transmute::Reason::DstIsMoreUnique => {
|
||||||
|
@ -186,8 +186,8 @@ pub(crate) mod rustc {
|
|||||||
|
|
||||||
#[derive(Debug, Copy, Clone)]
|
#[derive(Debug, Copy, Clone)]
|
||||||
pub(crate) enum Err {
|
pub(crate) enum Err {
|
||||||
/// The layout of the type is unspecified.
|
/// The layout of the type is not yet supported.
|
||||||
Unspecified,
|
NotYetSupported,
|
||||||
/// This error will be surfaced elsewhere by rustc, so don't surface it.
|
/// This error will be surfaced elsewhere by rustc, so don't surface it.
|
||||||
UnknownLayout,
|
UnknownLayout,
|
||||||
/// Overflow size
|
/// Overflow size
|
||||||
@ -288,14 +288,14 @@ pub(crate) mod rustc {
|
|||||||
if members.len() == 0 {
|
if members.len() == 0 {
|
||||||
Ok(Tree::unit())
|
Ok(Tree::unit())
|
||||||
} else {
|
} else {
|
||||||
Err(Err::Unspecified)
|
Err(Err::NotYetSupported)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ty::Array(ty, len) => {
|
ty::Array(ty, len) => {
|
||||||
let len = len
|
let len = len
|
||||||
.try_eval_target_usize(tcx, ParamEnv::reveal_all())
|
.try_eval_target_usize(tcx, ParamEnv::reveal_all())
|
||||||
.ok_or(Err::Unspecified)?;
|
.ok_or(Err::NotYetSupported)?;
|
||||||
let elt = Tree::from_ty(*ty, tcx)?;
|
let elt = Tree::from_ty(*ty, tcx)?;
|
||||||
Ok(std::iter::repeat(elt)
|
Ok(std::iter::repeat(elt)
|
||||||
.take(len as usize)
|
.take(len as usize)
|
||||||
@ -307,7 +307,7 @@ pub(crate) mod rustc {
|
|||||||
|
|
||||||
// If the layout is ill-specified, halt.
|
// If the layout is ill-specified, halt.
|
||||||
if !(adt_def.repr().c() || adt_def.repr().int.is_some()) {
|
if !(adt_def.repr().c() || adt_def.repr().int.is_some()) {
|
||||||
return Err(Err::Unspecified);
|
return Err(Err::NotYetSupported);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compute a summary of the type's layout.
|
// Compute a summary of the type's layout.
|
||||||
@ -348,7 +348,7 @@ pub(crate) mod rustc {
|
|||||||
AdtKind::Union => {
|
AdtKind::Union => {
|
||||||
// is the layout well-defined?
|
// is the layout well-defined?
|
||||||
if !adt_def.repr().c() {
|
if !adt_def.repr().c() {
|
||||||
return Err(Err::Unspecified);
|
return Err(Err::NotYetSupported);
|
||||||
}
|
}
|
||||||
|
|
||||||
let ty_layout = layout_of(tcx, ty)?;
|
let ty_layout = layout_of(tcx, ty)?;
|
||||||
@ -384,7 +384,7 @@ pub(crate) mod rustc {
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
_ => Err(Err::Unspecified),
|
_ => Err(Err::NotYetSupported),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,10 +43,10 @@ pub enum Condition<R> {
|
|||||||
/// Answers "why wasn't the source type transmutable into the destination type?"
|
/// Answers "why wasn't the source type transmutable into the destination type?"
|
||||||
#[derive(Debug, Hash, Eq, PartialEq, PartialOrd, Ord, Clone)]
|
#[derive(Debug, Hash, Eq, PartialEq, PartialOrd, Ord, Clone)]
|
||||||
pub enum Reason<T> {
|
pub enum Reason<T> {
|
||||||
/// The layout of the source type is unspecified.
|
/// The layout of the source type is not yet supported.
|
||||||
SrcIsUnspecified,
|
SrcIsNotYetSupported,
|
||||||
/// The layout of the destination type is unspecified.
|
/// The layout of the destination type is not yet supported.
|
||||||
DstIsUnspecified,
|
DstIsNotYetSupported,
|
||||||
/// The layout of the destination type is bit-incompatible with the source type.
|
/// The layout of the destination type is bit-incompatible with the source type.
|
||||||
DstIsBitIncompatible,
|
DstIsBitIncompatible,
|
||||||
/// The destination type may carry safety invariants.
|
/// The destination type may carry safety invariants.
|
||||||
|
@ -56,8 +56,8 @@ mod rustc {
|
|||||||
}
|
}
|
||||||
(Err(Err::UnknownLayout), _) => Answer::No(Reason::SrcLayoutUnknown),
|
(Err(Err::UnknownLayout), _) => Answer::No(Reason::SrcLayoutUnknown),
|
||||||
(_, Err(Err::UnknownLayout)) => Answer::No(Reason::DstLayoutUnknown),
|
(_, Err(Err::UnknownLayout)) => Answer::No(Reason::DstLayoutUnknown),
|
||||||
(Err(Err::Unspecified), _) => Answer::No(Reason::SrcIsUnspecified),
|
(Err(Err::NotYetSupported), _) => Answer::No(Reason::SrcIsNotYetSupported),
|
||||||
(_, Err(Err::Unspecified)) => Answer::No(Reason::DstIsUnspecified),
|
(_, Err(Err::NotYetSupported)) => Answer::No(Reason::DstIsNotYetSupported),
|
||||||
(Err(Err::SizeOverflow), _) => Answer::No(Reason::SrcSizeOverflow),
|
(Err(Err::SizeOverflow), _) => Answer::No(Reason::SrcSizeOverflow),
|
||||||
(_, Err(Err::SizeOverflow)) => Answer::No(Reason::DstSizeOverflow),
|
(_, Err(Err::SizeOverflow)) => Answer::No(Reason::DstSizeOverflow),
|
||||||
(Ok(src), Ok(dst)) => MaybeTransmutableQuery { src, dst, assume, context }.answer(),
|
(Ok(src), Ok(dst)) => MaybeTransmutableQuery { src, dst, assume, context }.answer(),
|
||||||
|
@ -48,7 +48,7 @@ mod as_keyword {}
|
|||||||
|
|
||||||
#[doc(keyword = "break")]
|
#[doc(keyword = "break")]
|
||||||
//
|
//
|
||||||
/// Exit early from a loop.
|
/// Exit early from a loop or labelled block.
|
||||||
///
|
///
|
||||||
/// When `break` is encountered, execution of the associated loop body is
|
/// When `break` is encountered, execution of the associated loop body is
|
||||||
/// immediately terminated.
|
/// immediately terminated.
|
||||||
|
@ -92,21 +92,38 @@ if [ -f "$docker_dir/$image/Dockerfile" ]; then
|
|||||||
# Print docker version
|
# Print docker version
|
||||||
docker --version
|
docker --version
|
||||||
|
|
||||||
# On non-CI or PR jobs, we don't have permissions to write to the registry cache, so we should
|
REGISTRY=ghcr.io
|
||||||
# not use `docker login` nor caching.
|
# PR CI runs on rust-lang, but we want to use the cache from rust-lang-ci
|
||||||
if [[ "$CI" == "" ]] || [[ "$PR_CI_JOB" == "1" ]];
|
REGISTRY_USERNAME=rust-lang-ci
|
||||||
|
# Tag used to push the final Docker image, so that it can be pulled by e.g. rustup
|
||||||
|
IMAGE_TAG=${REGISTRY}/${REGISTRY_USERNAME}/rust-ci:${cksum}
|
||||||
|
# Tag used to cache the Docker build
|
||||||
|
# It seems that it cannot be the same as $IMAGE_TAG, otherwise it overwrites the cache
|
||||||
|
CACHE_IMAGE_TAG=${REGISTRY}/${REGISTRY_USERNAME}/rust-ci-cache:${cksum}
|
||||||
|
|
||||||
|
# On non-CI jobs, we don't do any caching.
|
||||||
|
if [[ "$CI" == "" ]];
|
||||||
then
|
then
|
||||||
retry docker build --rm -t rust-ci -f "$dockerfile" "$context"
|
retry docker build --rm -t rust-ci -f "$dockerfile" "$context"
|
||||||
else
|
# On PR CI jobs, we don't have permissions to write to the registry cache,
|
||||||
REGISTRY=ghcr.io
|
# but we can still read from it.
|
||||||
# Most probably rust-lang-ci, but in general the owner of the repository where CI runs
|
elif [[ "$PR_CI_JOB" == "1" ]];
|
||||||
REGISTRY_USERNAME=${GITHUB_REPOSITORY_OWNER}
|
then
|
||||||
# Tag used to push the final Docker image, so that it can be pulled by e.g. rustup
|
# Enable a new Docker driver so that --cache-from works with a registry backend
|
||||||
IMAGE_TAG=${REGISTRY}/${REGISTRY_USERNAME}/rust-ci:${cksum}
|
docker buildx create --use --driver docker-container
|
||||||
# Tag used to cache the Docker build
|
|
||||||
# It seems that it cannot be the same as $IMAGE_TAG, otherwise it overwrites the cache
|
|
||||||
CACHE_IMAGE_TAG=${REGISTRY}/${REGISTRY_USERNAME}/rust-ci-cache:${cksum}
|
|
||||||
|
|
||||||
|
# Build the image using registry caching backend
|
||||||
|
retry docker \
|
||||||
|
buildx \
|
||||||
|
build \
|
||||||
|
--rm \
|
||||||
|
-t rust-ci \
|
||||||
|
-f "$dockerfile" \
|
||||||
|
--cache-from type=registry,ref=${CACHE_IMAGE_TAG} \
|
||||||
|
--output=type=docker \
|
||||||
|
"$context"
|
||||||
|
# On auto/try builds, we can also write to the cache.
|
||||||
|
else
|
||||||
# Log into the Docker registry, so that we can read/write cache and the final image
|
# Log into the Docker registry, so that we can read/write cache and the final image
|
||||||
echo ${DOCKER_TOKEN} | docker login ${REGISTRY} \
|
echo ${DOCKER_TOKEN} | docker login ${REGISTRY} \
|
||||||
--username ${REGISTRY_USERNAME} \
|
--username ${REGISTRY_USERNAME} \
|
||||||
|
@ -62,6 +62,9 @@ pub(crate) fn try_inline(
|
|||||||
attrs_without_docs.as_ref().map(|(attrs, def_id)| (&attrs[..], *def_id));
|
attrs_without_docs.as_ref().map(|(attrs, def_id)| (&attrs[..], *def_id));
|
||||||
|
|
||||||
let import_def_id = attrs.and_then(|(_, def_id)| def_id);
|
let import_def_id = attrs.and_then(|(_, def_id)| def_id);
|
||||||
|
|
||||||
|
let (attrs, cfg) = merge_attrs(cx, load_attrs(cx, did), attrs);
|
||||||
|
|
||||||
let kind = match res {
|
let kind = match res {
|
||||||
Res::Def(DefKind::Trait, did) => {
|
Res::Def(DefKind::Trait, did) => {
|
||||||
record_extern_fqn(cx, did, ItemType::Trait);
|
record_extern_fqn(cx, did, ItemType::Trait);
|
||||||
@ -131,7 +134,7 @@ pub(crate) fn try_inline(
|
|||||||
cx.with_param_env(did, |cx| clean::ConstantItem(build_const(cx, did)))
|
cx.with_param_env(did, |cx| clean::ConstantItem(build_const(cx, did)))
|
||||||
}
|
}
|
||||||
Res::Def(DefKind::Macro(kind), did) => {
|
Res::Def(DefKind::Macro(kind), did) => {
|
||||||
let mac = build_macro(cx, did, name, import_def_id, kind);
|
let mac = build_macro(cx, did, name, import_def_id, kind, attrs.is_doc_hidden());
|
||||||
|
|
||||||
let type_kind = match kind {
|
let type_kind = match kind {
|
||||||
MacroKind::Bang => ItemType::Macro,
|
MacroKind::Bang => ItemType::Macro,
|
||||||
@ -144,7 +147,6 @@ pub(crate) fn try_inline(
|
|||||||
_ => return None,
|
_ => return None,
|
||||||
};
|
};
|
||||||
|
|
||||||
let (attrs, cfg) = merge_attrs(cx, load_attrs(cx, did), attrs);
|
|
||||||
cx.inlined.insert(did.into());
|
cx.inlined.insert(did.into());
|
||||||
let mut item =
|
let mut item =
|
||||||
clean::Item::from_def_id_and_attrs_and_parts(did, Some(name), kind, Box::new(attrs), cfg);
|
clean::Item::from_def_id_and_attrs_and_parts(did, Some(name), kind, Box::new(attrs), cfg);
|
||||||
@ -751,6 +753,7 @@ fn build_macro(
|
|||||||
name: Symbol,
|
name: Symbol,
|
||||||
import_def_id: Option<DefId>,
|
import_def_id: Option<DefId>,
|
||||||
macro_kind: MacroKind,
|
macro_kind: MacroKind,
|
||||||
|
is_doc_hidden: bool,
|
||||||
) -> clean::ItemKind {
|
) -> clean::ItemKind {
|
||||||
match CStore::from_tcx(cx.tcx).load_macro_untracked(def_id, cx.tcx) {
|
match CStore::from_tcx(cx.tcx).load_macro_untracked(def_id, cx.tcx) {
|
||||||
LoadedMacro::MacroDef(item_def, _) => match macro_kind {
|
LoadedMacro::MacroDef(item_def, _) => match macro_kind {
|
||||||
@ -758,7 +761,14 @@ fn build_macro(
|
|||||||
if let ast::ItemKind::MacroDef(ref def) = item_def.kind {
|
if let ast::ItemKind::MacroDef(ref def) = item_def.kind {
|
||||||
let vis = cx.tcx.visibility(import_def_id.unwrap_or(def_id));
|
let vis = cx.tcx.visibility(import_def_id.unwrap_or(def_id));
|
||||||
clean::MacroItem(clean::Macro {
|
clean::MacroItem(clean::Macro {
|
||||||
source: utils::display_macro_source(cx, name, def, def_id, vis),
|
source: utils::display_macro_source(
|
||||||
|
cx,
|
||||||
|
name,
|
||||||
|
def,
|
||||||
|
def_id,
|
||||||
|
vis,
|
||||||
|
is_doc_hidden,
|
||||||
|
),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
unreachable!()
|
unreachable!()
|
||||||
|
@ -2794,7 +2794,8 @@ fn clean_maybe_renamed_item<'tcx>(
|
|||||||
ItemKind::Macro(ref macro_def, MacroKind::Bang) => {
|
ItemKind::Macro(ref macro_def, MacroKind::Bang) => {
|
||||||
let ty_vis = cx.tcx.visibility(def_id);
|
let ty_vis = cx.tcx.visibility(def_id);
|
||||||
MacroItem(Macro {
|
MacroItem(Macro {
|
||||||
source: display_macro_source(cx, name, macro_def, def_id, ty_vis),
|
// FIXME this shouldn't be false
|
||||||
|
source: display_macro_source(cx, name, macro_def, def_id, ty_vis, false),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
ItemKind::Macro(_, macro_kind) => clean_proc_macro(item, &mut name, macro_kind, cx),
|
ItemKind::Macro(_, macro_kind) => clean_proc_macro(item, &mut name, macro_kind, cx),
|
||||||
|
@ -1161,7 +1161,7 @@ impl Attributes {
|
|||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_doc_hidden(&self) -> bool {
|
pub(crate) fn is_doc_hidden(&self) -> bool {
|
||||||
self.has_doc_flag(sym::hidden)
|
self.has_doc_flag(sym::hidden)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -625,6 +625,7 @@ pub(super) fn display_macro_source(
|
|||||||
def: &ast::MacroDef,
|
def: &ast::MacroDef,
|
||||||
def_id: DefId,
|
def_id: DefId,
|
||||||
vis: ty::Visibility<DefId>,
|
vis: ty::Visibility<DefId>,
|
||||||
|
is_doc_hidden: bool,
|
||||||
) -> String {
|
) -> String {
|
||||||
// Extract the spans of all matchers. They represent the "interface" of the macro.
|
// Extract the spans of all matchers. They represent the "interface" of the macro.
|
||||||
let matchers = def.body.tokens.chunks(4).map(|arm| &arm[0]);
|
let matchers = def.body.tokens.chunks(4).map(|arm| &arm[0]);
|
||||||
@ -635,7 +636,7 @@ pub(super) fn display_macro_source(
|
|||||||
if matchers.len() <= 1 {
|
if matchers.len() <= 1 {
|
||||||
format!(
|
format!(
|
||||||
"{vis}macro {name}{matchers} {{\n ...\n}}",
|
"{vis}macro {name}{matchers} {{\n ...\n}}",
|
||||||
vis = visibility_to_src_with_space(Some(vis), cx.tcx, def_id),
|
vis = visibility_to_src_with_space(Some(vis), cx.tcx, def_id, is_doc_hidden),
|
||||||
matchers = matchers
|
matchers = matchers
|
||||||
.map(|matcher| render_macro_matcher(cx.tcx, matcher))
|
.map(|matcher| render_macro_matcher(cx.tcx, matcher))
|
||||||
.collect::<String>(),
|
.collect::<String>(),
|
||||||
@ -643,7 +644,7 @@ pub(super) fn display_macro_source(
|
|||||||
} else {
|
} else {
|
||||||
format!(
|
format!(
|
||||||
"{vis}macro {name} {{\n{arms}}}",
|
"{vis}macro {name} {{\n{arms}}}",
|
||||||
vis = visibility_to_src_with_space(Some(vis), cx.tcx, def_id),
|
vis = visibility_to_src_with_space(Some(vis), cx.tcx, def_id, is_doc_hidden),
|
||||||
arms = render_macro_arms(cx.tcx, matchers, ","),
|
arms = render_macro_arms(cx.tcx, matchers, ","),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -29,8 +29,7 @@ use rustc_target::spec::abi::Abi;
|
|||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
|
|
||||||
use crate::clean::{
|
use crate::clean::{
|
||||||
self, types::ExternalLocation, utils::find_nearest_parent_module, ExternalCrate, ItemId,
|
self, types::ExternalLocation, utils::find_nearest_parent_module, ExternalCrate, PrimitiveType,
|
||||||
PrimitiveType,
|
|
||||||
};
|
};
|
||||||
use crate::formats::cache::Cache;
|
use crate::formats::cache::Cache;
|
||||||
use crate::formats::item_type::ItemType;
|
use crate::formats::item_type::ItemType;
|
||||||
@ -1506,20 +1505,18 @@ impl clean::FnDecl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn visibility_print_with_space<'a, 'tcx: 'a>(
|
pub(crate) fn visibility_print_with_space<'a, 'tcx: 'a>(
|
||||||
visibility: Option<ty::Visibility<DefId>>,
|
item: &clean::Item,
|
||||||
item_did: ItemId,
|
|
||||||
cx: &'a Context<'tcx>,
|
cx: &'a Context<'tcx>,
|
||||||
) -> impl Display + 'a + Captures<'tcx> {
|
) -> impl Display + 'a + Captures<'tcx> {
|
||||||
use std::fmt::Write as _;
|
use std::fmt::Write as _;
|
||||||
|
let vis: Cow<'static, str> = match item.visibility(cx.tcx()) {
|
||||||
let to_print: Cow<'static, str> = match visibility {
|
|
||||||
None => "".into(),
|
None => "".into(),
|
||||||
Some(ty::Visibility::Public) => "pub ".into(),
|
Some(ty::Visibility::Public) => "pub ".into(),
|
||||||
Some(ty::Visibility::Restricted(vis_did)) => {
|
Some(ty::Visibility::Restricted(vis_did)) => {
|
||||||
// FIXME(camelid): This may not work correctly if `item_did` is a module.
|
// FIXME(camelid): This may not work correctly if `item_did` is a module.
|
||||||
// However, rustdoc currently never displays a module's
|
// However, rustdoc currently never displays a module's
|
||||||
// visibility, so it shouldn't matter.
|
// visibility, so it shouldn't matter.
|
||||||
let parent_module = find_nearest_parent_module(cx.tcx(), item_did.expect_def_id());
|
let parent_module = find_nearest_parent_module(cx.tcx(), item.item_id.expect_def_id());
|
||||||
|
|
||||||
if vis_did.is_crate_root() {
|
if vis_did.is_crate_root() {
|
||||||
"pub(crate) ".into()
|
"pub(crate) ".into()
|
||||||
@ -1547,7 +1544,15 @@ pub(crate) fn visibility_print_with_space<'a, 'tcx: 'a>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
display_fn(move |f| f.write_str(&to_print))
|
|
||||||
|
let is_doc_hidden = item.is_doc_hidden();
|
||||||
|
display_fn(move |f| {
|
||||||
|
if is_doc_hidden {
|
||||||
|
f.write_str("#[doc(hidden)] ")?;
|
||||||
|
}
|
||||||
|
|
||||||
|
f.write_str(&vis)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// This function is the same as print_with_space, except that it renders no links.
|
/// This function is the same as print_with_space, except that it renders no links.
|
||||||
@ -1557,8 +1562,9 @@ pub(crate) fn visibility_to_src_with_space<'a, 'tcx: 'a>(
|
|||||||
visibility: Option<ty::Visibility<DefId>>,
|
visibility: Option<ty::Visibility<DefId>>,
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
item_did: DefId,
|
item_did: DefId,
|
||||||
|
is_doc_hidden: bool,
|
||||||
) -> impl Display + 'a + Captures<'tcx> {
|
) -> impl Display + 'a + Captures<'tcx> {
|
||||||
let to_print: Cow<'static, str> = match visibility {
|
let vis: Cow<'static, str> = match visibility {
|
||||||
None => "".into(),
|
None => "".into(),
|
||||||
Some(ty::Visibility::Public) => "pub ".into(),
|
Some(ty::Visibility::Public) => "pub ".into(),
|
||||||
Some(ty::Visibility::Restricted(vis_did)) => {
|
Some(ty::Visibility::Restricted(vis_did)) => {
|
||||||
@ -1582,7 +1588,12 @@ pub(crate) fn visibility_to_src_with_space<'a, 'tcx: 'a>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
display_fn(move |f| f.write_str(&to_print))
|
display_fn(move |f| {
|
||||||
|
if is_doc_hidden {
|
||||||
|
f.write_str("#[doc(hidden)] ")?;
|
||||||
|
}
|
||||||
|
f.write_str(&vis)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) trait PrintWithSpace {
|
pub(crate) trait PrintWithSpace {
|
||||||
|
@ -883,7 +883,7 @@ fn assoc_const(
|
|||||||
w,
|
w,
|
||||||
"{indent}{vis}const <a{href} class=\"constant\">{name}</a>{generics}: {ty}",
|
"{indent}{vis}const <a{href} class=\"constant\">{name}</a>{generics}: {ty}",
|
||||||
indent = " ".repeat(indent),
|
indent = " ".repeat(indent),
|
||||||
vis = visibility_print_with_space(it.visibility(tcx), it.item_id, cx),
|
vis = visibility_print_with_space(it, cx),
|
||||||
href = assoc_href_attr(it, link, cx),
|
href = assoc_href_attr(it, link, cx),
|
||||||
name = it.name.as_ref().unwrap(),
|
name = it.name.as_ref().unwrap(),
|
||||||
generics = generics.print(cx),
|
generics = generics.print(cx),
|
||||||
@ -912,12 +912,11 @@ fn assoc_type(
|
|||||||
indent: usize,
|
indent: usize,
|
||||||
cx: &Context<'_>,
|
cx: &Context<'_>,
|
||||||
) {
|
) {
|
||||||
let tcx = cx.tcx();
|
|
||||||
write!(
|
write!(
|
||||||
w,
|
w,
|
||||||
"{indent}{vis}type <a{href} class=\"associatedtype\">{name}</a>{generics}",
|
"{indent}{vis}type <a{href} class=\"associatedtype\">{name}</a>{generics}",
|
||||||
indent = " ".repeat(indent),
|
indent = " ".repeat(indent),
|
||||||
vis = visibility_print_with_space(it.visibility(tcx), it.item_id, cx),
|
vis = visibility_print_with_space(it, cx),
|
||||||
href = assoc_href_attr(it, link, cx),
|
href = assoc_href_attr(it, link, cx),
|
||||||
name = it.name.as_ref().unwrap(),
|
name = it.name.as_ref().unwrap(),
|
||||||
generics = generics.print(cx),
|
generics = generics.print(cx),
|
||||||
@ -945,7 +944,7 @@ fn assoc_method(
|
|||||||
let tcx = cx.tcx();
|
let tcx = cx.tcx();
|
||||||
let header = meth.fn_header(tcx).expect("Trying to get header from a non-function item");
|
let header = meth.fn_header(tcx).expect("Trying to get header from a non-function item");
|
||||||
let name = meth.name.as_ref().unwrap();
|
let name = meth.name.as_ref().unwrap();
|
||||||
let vis = visibility_print_with_space(meth.visibility(tcx), meth.item_id, cx).to_string();
|
let vis = visibility_print_with_space(meth, cx).to_string();
|
||||||
let defaultness = print_default_space(meth.is_default());
|
let defaultness = print_default_space(meth.is_default());
|
||||||
// FIXME: Once https://github.com/rust-lang/rust/issues/67792 is implemented, we can remove
|
// FIXME: Once https://github.com/rust-lang/rust/issues/67792 is implemented, we can remove
|
||||||
// this condition.
|
// this condition.
|
||||||
|
@ -445,14 +445,14 @@ fn item_module(w: &mut Buffer, cx: &mut Context<'_>, item: &clean::Item, items:
|
|||||||
Some(src) => write!(
|
Some(src) => write!(
|
||||||
w,
|
w,
|
||||||
"<div class=\"item-name\"><code>{}extern crate {} as {};",
|
"<div class=\"item-name\"><code>{}extern crate {} as {};",
|
||||||
visibility_print_with_space(myitem.visibility(tcx), myitem.item_id, cx),
|
visibility_print_with_space(myitem, cx),
|
||||||
anchor(myitem.item_id.expect_def_id(), src, cx),
|
anchor(myitem.item_id.expect_def_id(), src, cx),
|
||||||
myitem.name.unwrap(),
|
myitem.name.unwrap(),
|
||||||
),
|
),
|
||||||
None => write!(
|
None => write!(
|
||||||
w,
|
w,
|
||||||
"<div class=\"item-name\"><code>{}extern crate {};",
|
"<div class=\"item-name\"><code>{}extern crate {};",
|
||||||
visibility_print_with_space(myitem.visibility(tcx), myitem.item_id, cx),
|
visibility_print_with_space(myitem, cx),
|
||||||
anchor(myitem.item_id.expect_def_id(), myitem.name.unwrap(), cx),
|
anchor(myitem.item_id.expect_def_id(), myitem.name.unwrap(), cx),
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
@ -491,7 +491,7 @@ fn item_module(w: &mut Buffer, cx: &mut Context<'_>, item: &clean::Item, items:
|
|||||||
<code>{vis}{imp}</code>\
|
<code>{vis}{imp}</code>\
|
||||||
</div>\
|
</div>\
|
||||||
{stab_tags_before}{stab_tags}{stab_tags_after}",
|
{stab_tags_before}{stab_tags}{stab_tags_after}",
|
||||||
vis = visibility_print_with_space(myitem.visibility(tcx), myitem.item_id, cx),
|
vis = visibility_print_with_space(myitem, cx),
|
||||||
imp = import.print(cx),
|
imp = import.print(cx),
|
||||||
);
|
);
|
||||||
w.write_str(ITEM_TABLE_ROW_CLOSE);
|
w.write_str(ITEM_TABLE_ROW_CLOSE);
|
||||||
@ -511,10 +511,16 @@ fn item_module(w: &mut Buffer, cx: &mut Context<'_>, item: &clean::Item, items:
|
|||||||
_ => "",
|
_ => "",
|
||||||
};
|
};
|
||||||
|
|
||||||
let visibility_emoji = match myitem.visibility(tcx) {
|
let visibility_and_hidden = match myitem.visibility(tcx) {
|
||||||
Some(ty::Visibility::Restricted(_)) => {
|
Some(ty::Visibility::Restricted(_)) => {
|
||||||
"<span title=\"Restricted Visibility\"> 🔒</span> "
|
if myitem.is_doc_hidden() {
|
||||||
|
// Don't separate with a space when there are two of them
|
||||||
|
"<span title=\"Restricted Visibility\"> 🔒</span><span title=\"Hidden item\">👻</span> "
|
||||||
|
} else {
|
||||||
|
"<span title=\"Restricted Visibility\"> 🔒</span> "
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
_ if myitem.is_doc_hidden() => "<span title=\"Hidden item\"> 👻</span> ",
|
||||||
_ => "",
|
_ => "",
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -530,13 +536,13 @@ fn item_module(w: &mut Buffer, cx: &mut Context<'_>, item: &clean::Item, items:
|
|||||||
w,
|
w,
|
||||||
"<div class=\"item-name\">\
|
"<div class=\"item-name\">\
|
||||||
<a class=\"{class}\" href=\"{href}\" title=\"{title}\">{name}</a>\
|
<a class=\"{class}\" href=\"{href}\" title=\"{title}\">{name}</a>\
|
||||||
{visibility_emoji}\
|
{visibility_and_hidden}\
|
||||||
{unsafety_flag}\
|
{unsafety_flag}\
|
||||||
{stab_tags}\
|
{stab_tags}\
|
||||||
</div>\
|
</div>\
|
||||||
{docs_before}{docs}{docs_after}",
|
{docs_before}{docs}{docs_after}",
|
||||||
name = myitem.name.unwrap(),
|
name = myitem.name.unwrap(),
|
||||||
visibility_emoji = visibility_emoji,
|
visibility_and_hidden = visibility_and_hidden,
|
||||||
stab_tags = extra_info_tags(myitem, item, tcx),
|
stab_tags = extra_info_tags(myitem, item, tcx),
|
||||||
class = myitem.type_(),
|
class = myitem.type_(),
|
||||||
unsafety_flag = unsafety_flag,
|
unsafety_flag = unsafety_flag,
|
||||||
@ -625,7 +631,7 @@ fn item_function(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, f: &cle
|
|||||||
let unsafety = header.unsafety.print_with_space();
|
let unsafety = header.unsafety.print_with_space();
|
||||||
let abi = print_abi_with_space(header.abi).to_string();
|
let abi = print_abi_with_space(header.abi).to_string();
|
||||||
let asyncness = header.asyncness.print_with_space();
|
let asyncness = header.asyncness.print_with_space();
|
||||||
let visibility = visibility_print_with_space(it.visibility(tcx), it.item_id, cx).to_string();
|
let visibility = visibility_print_with_space(it, cx).to_string();
|
||||||
let name = it.name.unwrap();
|
let name = it.name.unwrap();
|
||||||
|
|
||||||
let generics_len = format!("{:#}", f.generics.print(cx)).len();
|
let generics_len = format!("{:#}", f.generics.print(cx)).len();
|
||||||
@ -682,7 +688,7 @@ fn item_trait(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, t: &clean:
|
|||||||
w,
|
w,
|
||||||
"{attrs}{vis}{unsafety}{is_auto}trait {name}{generics}{bounds}",
|
"{attrs}{vis}{unsafety}{is_auto}trait {name}{generics}{bounds}",
|
||||||
attrs = render_attributes_in_pre(it, "", cx),
|
attrs = render_attributes_in_pre(it, "", cx),
|
||||||
vis = visibility_print_with_space(it.visibility(tcx), it.item_id, cx),
|
vis = visibility_print_with_space(it, cx),
|
||||||
unsafety = t.unsafety(tcx).print_with_space(),
|
unsafety = t.unsafety(tcx).print_with_space(),
|
||||||
is_auto = if t.is_auto(tcx) { "auto " } else { "" },
|
is_auto = if t.is_auto(tcx) { "auto " } else { "" },
|
||||||
name = it.name.unwrap(),
|
name = it.name.unwrap(),
|
||||||
@ -1237,7 +1243,7 @@ fn item_type_alias(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, t: &c
|
|||||||
w,
|
w,
|
||||||
"{attrs}{vis}type {name}{generics}{where_clause} = {type_};",
|
"{attrs}{vis}type {name}{generics}{where_clause} = {type_};",
|
||||||
attrs = render_attributes_in_pre(it, "", cx),
|
attrs = render_attributes_in_pre(it, "", cx),
|
||||||
vis = visibility_print_with_space(it.visibility(cx.tcx()), it.item_id, cx),
|
vis = visibility_print_with_space(it, cx),
|
||||||
name = it.name.unwrap(),
|
name = it.name.unwrap(),
|
||||||
generics = t.generics.print(cx),
|
generics = t.generics.print(cx),
|
||||||
where_clause = print_where_clause(&t.generics, cx, 0, Ending::Newline),
|
where_clause = print_where_clause(&t.generics, cx, 0, Ending::Newline),
|
||||||
@ -1516,14 +1522,13 @@ fn print_tuple_struct_fields<'a, 'cx: 'a>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn item_enum(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, e: &clean::Enum) {
|
fn item_enum(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, e: &clean::Enum) {
|
||||||
let tcx = cx.tcx();
|
|
||||||
let count_variants = e.variants().count();
|
let count_variants = e.variants().count();
|
||||||
wrap_item(w, |w| {
|
wrap_item(w, |w| {
|
||||||
render_attributes_in_code(w, it, cx);
|
render_attributes_in_code(w, it, cx);
|
||||||
write!(
|
write!(
|
||||||
w,
|
w,
|
||||||
"{}enum {}{}",
|
"{}enum {}{}",
|
||||||
visibility_print_with_space(it.visibility(tcx), it.item_id, cx),
|
visibility_print_with_space(it, cx),
|
||||||
it.name.unwrap(),
|
it.name.unwrap(),
|
||||||
e.generics.print(cx),
|
e.generics.print(cx),
|
||||||
);
|
);
|
||||||
@ -1854,7 +1859,7 @@ fn item_constant(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, c: &cle
|
|||||||
write!(
|
write!(
|
||||||
w,
|
w,
|
||||||
"{vis}const {name}{generics}: {typ}{where_clause}",
|
"{vis}const {name}{generics}: {typ}{where_clause}",
|
||||||
vis = visibility_print_with_space(it.visibility(tcx), it.item_id, cx),
|
vis = visibility_print_with_space(it, cx),
|
||||||
name = it.name.unwrap(),
|
name = it.name.unwrap(),
|
||||||
generics = c.generics.print(cx),
|
generics = c.generics.print(cx),
|
||||||
typ = c.type_.print(cx),
|
typ = c.type_.print(cx),
|
||||||
@ -1958,7 +1963,7 @@ fn item_static(w: &mut impl fmt::Write, cx: &mut Context<'_>, it: &clean::Item,
|
|||||||
write!(
|
write!(
|
||||||
buffer,
|
buffer,
|
||||||
"{vis}static {mutability}{name}: {typ}",
|
"{vis}static {mutability}{name}: {typ}",
|
||||||
vis = visibility_print_with_space(it.visibility(cx.tcx()), it.item_id, cx),
|
vis = visibility_print_with_space(it, cx),
|
||||||
mutability = s.mutability.print_with_space(),
|
mutability = s.mutability.print_with_space(),
|
||||||
name = it.name.unwrap(),
|
name = it.name.unwrap(),
|
||||||
typ = s.type_.print(cx)
|
typ = s.type_.print(cx)
|
||||||
@ -1976,7 +1981,7 @@ fn item_foreign_type(w: &mut impl fmt::Write, cx: &mut Context<'_>, it: &clean::
|
|||||||
write!(
|
write!(
|
||||||
buffer,
|
buffer,
|
||||||
" {}type {};\n}}",
|
" {}type {};\n}}",
|
||||||
visibility_print_with_space(it.visibility(cx.tcx()), it.item_id, cx),
|
visibility_print_with_space(it, cx),
|
||||||
it.name.unwrap(),
|
it.name.unwrap(),
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
@ -2133,13 +2138,7 @@ fn render_union<'a, 'cx: 'a>(
|
|||||||
cx: &'a Context<'cx>,
|
cx: &'a Context<'cx>,
|
||||||
) -> impl fmt::Display + 'a + Captures<'cx> {
|
) -> impl fmt::Display + 'a + Captures<'cx> {
|
||||||
display_fn(move |mut f| {
|
display_fn(move |mut f| {
|
||||||
let tcx = cx.tcx();
|
write!(f, "{}union {}", visibility_print_with_space(it, cx), it.name.unwrap(),)?;
|
||||||
write!(
|
|
||||||
f,
|
|
||||||
"{}union {}",
|
|
||||||
visibility_print_with_space(it.visibility(tcx), it.item_id, cx),
|
|
||||||
it.name.unwrap(),
|
|
||||||
)?;
|
|
||||||
|
|
||||||
let where_displayed = g
|
let where_displayed = g
|
||||||
.map(|g| {
|
.map(|g| {
|
||||||
@ -2169,7 +2168,7 @@ fn render_union<'a, 'cx: 'a>(
|
|||||||
write!(
|
write!(
|
||||||
f,
|
f,
|
||||||
" {}{}: {},\n",
|
" {}{}: {},\n",
|
||||||
visibility_print_with_space(field.visibility(tcx), field.item_id, cx),
|
visibility_print_with_space(field, cx),
|
||||||
field.name.unwrap(),
|
field.name.unwrap(),
|
||||||
ty.print(cx)
|
ty.print(cx)
|
||||||
)?;
|
)?;
|
||||||
@ -2197,11 +2196,10 @@ fn render_struct(
|
|||||||
structhead: bool,
|
structhead: bool,
|
||||||
cx: &Context<'_>,
|
cx: &Context<'_>,
|
||||||
) {
|
) {
|
||||||
let tcx = cx.tcx();
|
|
||||||
write!(
|
write!(
|
||||||
w,
|
w,
|
||||||
"{}{}{}",
|
"{}{}{}",
|
||||||
visibility_print_with_space(it.visibility(tcx), it.item_id, cx),
|
visibility_print_with_space(it, cx),
|
||||||
if structhead { "struct " } else { "" },
|
if structhead { "struct " } else { "" },
|
||||||
it.name.unwrap()
|
it.name.unwrap()
|
||||||
);
|
);
|
||||||
@ -2230,7 +2228,6 @@ fn render_struct_fields(
|
|||||||
has_stripped_entries: bool,
|
has_stripped_entries: bool,
|
||||||
cx: &Context<'_>,
|
cx: &Context<'_>,
|
||||||
) {
|
) {
|
||||||
let tcx = cx.tcx();
|
|
||||||
match ty {
|
match ty {
|
||||||
None => {
|
None => {
|
||||||
let where_displayed =
|
let where_displayed =
|
||||||
@ -2254,7 +2251,7 @@ fn render_struct_fields(
|
|||||||
write!(
|
write!(
|
||||||
w,
|
w,
|
||||||
"\n{tab} {vis}{name}: {ty},",
|
"\n{tab} {vis}{name}: {ty},",
|
||||||
vis = visibility_print_with_space(field.visibility(tcx), field.item_id, cx),
|
vis = visibility_print_with_space(field, cx),
|
||||||
name = field.name.unwrap(),
|
name = field.name.unwrap(),
|
||||||
ty = ty.print(cx),
|
ty = ty.print(cx),
|
||||||
);
|
);
|
||||||
@ -2290,16 +2287,7 @@ fn render_struct_fields(
|
|||||||
match *field.kind {
|
match *field.kind {
|
||||||
clean::StrippedItem(box clean::StructFieldItem(..)) => write!(w, "_"),
|
clean::StrippedItem(box clean::StructFieldItem(..)) => write!(w, "_"),
|
||||||
clean::StructFieldItem(ref ty) => {
|
clean::StructFieldItem(ref ty) => {
|
||||||
write!(
|
write!(w, "{}{}", visibility_print_with_space(field, cx), ty.print(cx),)
|
||||||
w,
|
|
||||||
"{}{}",
|
|
||||||
visibility_print_with_space(
|
|
||||||
field.visibility(tcx),
|
|
||||||
field.item_id,
|
|
||||||
cx
|
|
||||||
),
|
|
||||||
ty.print(cx),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
}
|
}
|
||||||
|
@ -5,19 +5,22 @@
|
|||||||
#![crate_name = "foo"]
|
#![crate_name = "foo"]
|
||||||
|
|
||||||
// @has 'foo/index.html'
|
// @has 'foo/index.html'
|
||||||
// @has - '//*[@id="reexport.hidden_reexport"]/code' 'pub use hidden::inside_hidden as hidden_reexport;'
|
// @has - '//*[@class="item-name"]/span[@title="Hidden item"]' '👻'
|
||||||
|
|
||||||
|
// @has - '//*[@id="reexport.hidden_reexport"]/code' '#[doc(hidden)] pub use hidden::inside_hidden as hidden_reexport;'
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub use hidden::inside_hidden as hidden_reexport;
|
pub use hidden::inside_hidden as hidden_reexport;
|
||||||
|
|
||||||
// @has - '//*[@class="item-name"]/a[@class="trait"]' 'TraitHidden'
|
// @has - '//*[@class="item-name"]/a[@class="trait"]' 'TraitHidden'
|
||||||
// @has 'foo/trait.TraitHidden.html'
|
// @has 'foo/trait.TraitHidden.html'
|
||||||
|
// @has - '//code' '#[doc(hidden)] pub trait TraitHidden'
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub trait TraitHidden {}
|
pub trait TraitHidden {}
|
||||||
|
|
||||||
// @has 'foo/index.html' '//*[@class="item-name"]/a[@class="trait"]' 'Trait'
|
// @has 'foo/index.html' '//*[@class="item-name"]/a[@class="trait"]' 'Trait'
|
||||||
pub trait Trait {
|
pub trait Trait {
|
||||||
// @has 'foo/trait.Trait.html'
|
// @has 'foo/trait.Trait.html'
|
||||||
// @has - '//*[@id="associatedconstant.BAR"]/*[@class="code-header"]' 'const BAR: u32 = 0u32'
|
// @has - '//*[@id="associatedconstant.BAR"]/*[@class="code-header"]' '#[doc(hidden)] const BAR: u32 = 0u32'
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
const BAR: u32 = 0;
|
const BAR: u32 = 0;
|
||||||
|
|
||||||
@ -41,14 +44,15 @@ impl Struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Trait for Struct {
|
impl Trait for Struct {
|
||||||
// @has - '//*[@id="associatedconstant.BAR"]/*[@class="code-header"]' 'const BAR: u32 = 0u32'
|
// @has - '//*[@id="associatedconstant.BAR"]/*[@class="code-header"]' '#[doc(hidden)] const BAR: u32 = 0u32'
|
||||||
// @has - '//*[@id="method.foo"]/*[@class="code-header"]' 'fn foo()'
|
// @has - '//*[@id="method.foo"]/*[@class="code-header"]' '#[doc(hidden)] fn foo()'
|
||||||
}
|
}
|
||||||
// @has - '//*[@id="impl-TraitHidden-for-Struct"]/*[@class="code-header"]' 'impl TraitHidden for Struct'
|
// @has - '//*[@id="impl-TraitHidden-for-Struct"]/*[@class="code-header"]' 'impl TraitHidden for Struct'
|
||||||
impl TraitHidden for Struct {}
|
impl TraitHidden for Struct {}
|
||||||
|
|
||||||
// @has 'foo/index.html' '//*[@class="item-name"]/a[@class="enum"]' 'HiddenEnum'
|
// @has 'foo/index.html' '//*[@class="item-name"]/a[@class="enum"]' 'HiddenEnum'
|
||||||
// @has 'foo/enum.HiddenEnum.html'
|
// @has 'foo/enum.HiddenEnum.html'
|
||||||
|
// @has - '//code' '#[doc(hidden)] pub enum HiddenEnum'
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub enum HiddenEnum {
|
pub enum HiddenEnum {
|
||||||
A,
|
A,
|
||||||
|
32
tests/ui/borrowck/clone-on-ref.fixed
Normal file
32
tests/ui/borrowck/clone-on-ref.fixed
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
//@ run-rustfix
|
||||||
|
fn foo<T: Default + Clone>(list: &mut Vec<T>) {
|
||||||
|
let mut cloned_items = Vec::new();
|
||||||
|
for v in list.iter() {
|
||||||
|
cloned_items.push(v.clone())
|
||||||
|
}
|
||||||
|
list.push(T::default());
|
||||||
|
//~^ ERROR cannot borrow `*list` as mutable because it is also borrowed as immutable
|
||||||
|
drop(cloned_items);
|
||||||
|
}
|
||||||
|
fn bar<T: std::fmt::Display + Clone>(x: T) {
|
||||||
|
let a = &x;
|
||||||
|
let b = a.clone();
|
||||||
|
drop(x);
|
||||||
|
//~^ ERROR cannot move out of `x` because it is borrowed
|
||||||
|
println!("{b}");
|
||||||
|
}
|
||||||
|
#[derive(Debug)]
|
||||||
|
#[derive(Clone)]
|
||||||
|
struct A;
|
||||||
|
fn qux(x: A) {
|
||||||
|
let a = &x;
|
||||||
|
let b = a.clone();
|
||||||
|
drop(x);
|
||||||
|
//~^ ERROR cannot move out of `x` because it is borrowed
|
||||||
|
println!("{b:?}");
|
||||||
|
}
|
||||||
|
fn main() {
|
||||||
|
foo(&mut vec![1, 2, 3]);
|
||||||
|
bar("");
|
||||||
|
qux(A);
|
||||||
|
}
|
31
tests/ui/borrowck/clone-on-ref.rs
Normal file
31
tests/ui/borrowck/clone-on-ref.rs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
//@ run-rustfix
|
||||||
|
fn foo<T: Default>(list: &mut Vec<T>) {
|
||||||
|
let mut cloned_items = Vec::new();
|
||||||
|
for v in list.iter() {
|
||||||
|
cloned_items.push(v.clone())
|
||||||
|
}
|
||||||
|
list.push(T::default());
|
||||||
|
//~^ ERROR cannot borrow `*list` as mutable because it is also borrowed as immutable
|
||||||
|
drop(cloned_items);
|
||||||
|
}
|
||||||
|
fn bar<T: std::fmt::Display>(x: T) {
|
||||||
|
let a = &x;
|
||||||
|
let b = a.clone();
|
||||||
|
drop(x);
|
||||||
|
//~^ ERROR cannot move out of `x` because it is borrowed
|
||||||
|
println!("{b}");
|
||||||
|
}
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct A;
|
||||||
|
fn qux(x: A) {
|
||||||
|
let a = &x;
|
||||||
|
let b = a.clone();
|
||||||
|
drop(x);
|
||||||
|
//~^ ERROR cannot move out of `x` because it is borrowed
|
||||||
|
println!("{b:?}");
|
||||||
|
}
|
||||||
|
fn main() {
|
||||||
|
foo(&mut vec![1, 2, 3]);
|
||||||
|
bar("");
|
||||||
|
qux(A);
|
||||||
|
}
|
64
tests/ui/borrowck/clone-on-ref.stderr
Normal file
64
tests/ui/borrowck/clone-on-ref.stderr
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
error[E0502]: cannot borrow `*list` as mutable because it is also borrowed as immutable
|
||||||
|
--> $DIR/clone-on-ref.rs:7:5
|
||||||
|
|
|
||||||
|
LL | for v in list.iter() {
|
||||||
|
| ---- immutable borrow occurs here
|
||||||
|
LL | cloned_items.push(v.clone())
|
||||||
|
| ------- this call doesn't do anything, the result is still `&T` because `T` doesn't implement `Clone`
|
||||||
|
LL | }
|
||||||
|
LL | list.push(T::default());
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^ mutable borrow occurs here
|
||||||
|
LL |
|
||||||
|
LL | drop(cloned_items);
|
||||||
|
| ------------ immutable borrow later used here
|
||||||
|
|
|
||||||
|
help: consider further restricting this bound
|
||||||
|
|
|
||||||
|
LL | fn foo<T: Default + Clone>(list: &mut Vec<T>) {
|
||||||
|
| +++++++
|
||||||
|
|
||||||
|
error[E0505]: cannot move out of `x` because it is borrowed
|
||||||
|
--> $DIR/clone-on-ref.rs:14:10
|
||||||
|
|
|
||||||
|
LL | fn bar<T: std::fmt::Display>(x: T) {
|
||||||
|
| - binding `x` declared here
|
||||||
|
LL | let a = &x;
|
||||||
|
| -- borrow of `x` occurs here
|
||||||
|
LL | let b = a.clone();
|
||||||
|
| ------- this call doesn't do anything, the result is still `&T` because `T` doesn't implement `Clone`
|
||||||
|
LL | drop(x);
|
||||||
|
| ^ move out of `x` occurs here
|
||||||
|
LL |
|
||||||
|
LL | println!("{b}");
|
||||||
|
| --- borrow later used here
|
||||||
|
|
|
||||||
|
help: consider further restricting this bound
|
||||||
|
|
|
||||||
|
LL | fn bar<T: std::fmt::Display + Clone>(x: T) {
|
||||||
|
| +++++++
|
||||||
|
|
||||||
|
error[E0505]: cannot move out of `x` because it is borrowed
|
||||||
|
--> $DIR/clone-on-ref.rs:23:10
|
||||||
|
|
|
||||||
|
LL | fn qux(x: A) {
|
||||||
|
| - binding `x` declared here
|
||||||
|
LL | let a = &x;
|
||||||
|
| -- borrow of `x` occurs here
|
||||||
|
LL | let b = a.clone();
|
||||||
|
| ------- this call doesn't do anything, the result is still `&A` because `A` doesn't implement `Clone`
|
||||||
|
LL | drop(x);
|
||||||
|
| ^ move out of `x` occurs here
|
||||||
|
LL |
|
||||||
|
LL | println!("{b:?}");
|
||||||
|
| ----- borrow later used here
|
||||||
|
|
|
||||||
|
help: consider annotating `A` with `#[derive(Clone)]`
|
||||||
|
|
|
||||||
|
LL + #[derive(Clone)]
|
||||||
|
LL | struct A;
|
||||||
|
|
|
||||||
|
|
||||||
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
|
Some errors have detailed explanations: E0502, E0505.
|
||||||
|
For more information about an error, try `rustc --explain E0502`.
|
@ -13,7 +13,7 @@ LL | Some(_z @ ref _y) => {}
|
|||||||
| ^^ ------ value borrowed here after move
|
| ^^ ------ value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `_z` here
|
| value moved into `_z` here
|
||||||
| move occurs because `_z` has type `X` which does not implement the `Copy` trait
|
| move occurs because `_z` has type `X`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -35,7 +35,7 @@ LL | Some(_z @ ref mut _y) => {}
|
|||||||
| ^^ ---------- value borrowed here after move
|
| ^^ ---------- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `_z` here
|
| value moved into `_z` here
|
||||||
| move occurs because `_z` has type `X` which does not implement the `Copy` trait
|
| move occurs because `_z` has type `X`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
|
@ -5,7 +5,7 @@ LL | let a @ ref b = U;
|
|||||||
| ^ ----- value borrowed here after move
|
| ^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `U` which does not implement the `Copy` trait
|
| move occurs because `a` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
|
@ -5,7 +5,7 @@ LL | let a @ ref b = U;
|
|||||||
| ^ ----- value borrowed here after move
|
| ^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `U` which does not implement the `Copy` trait
|
| move occurs because `a` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -20,7 +20,7 @@ LL | let a @ (mut b @ ref mut c, d @ ref e) = (U, U);
|
|||||||
| | |
|
| | |
|
||||||
| | value borrowed here after move
|
| | value borrowed here after move
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `(U, U)` which does not implement the `Copy` trait
|
| move occurs because `a` has type `(U, U)`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -34,7 +34,7 @@ LL | let a @ (mut b @ ref mut c, d @ ref e) = (U, U);
|
|||||||
| ^^^^^ --------- value borrowed here after move
|
| ^^^^^ --------- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `b` here
|
| value moved into `b` here
|
||||||
| move occurs because `b` has type `U` which does not implement the `Copy` trait
|
| move occurs because `b` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -48,7 +48,7 @@ LL | let a @ (mut b @ ref mut c, d @ ref e) = (U, U);
|
|||||||
| ^ ----- value borrowed here after move
|
| ^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `d` here
|
| value moved into `d` here
|
||||||
| move occurs because `d` has type `U` which does not implement the `Copy` trait
|
| move occurs because `d` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -63,7 +63,7 @@ LL | let a @ [ref mut b, ref c] = [U, U];
|
|||||||
| | |
|
| | |
|
||||||
| | value borrowed here after move
|
| | value borrowed here after move
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `[U; 2]` which does not implement the `Copy` trait
|
| move occurs because `a` has type `[U; 2]`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -77,7 +77,7 @@ LL | let a @ ref b = u();
|
|||||||
| ^ ----- value borrowed here after move
|
| ^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `U` which does not implement the `Copy` trait
|
| move occurs because `a` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -92,7 +92,7 @@ LL | let a @ (mut b @ ref mut c, d @ ref e) = (u(), u());
|
|||||||
| | |
|
| | |
|
||||||
| | value borrowed here after move
|
| | value borrowed here after move
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `(U, U)` which does not implement the `Copy` trait
|
| move occurs because `a` has type `(U, U)`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -106,7 +106,7 @@ LL | let a @ (mut b @ ref mut c, d @ ref e) = (u(), u());
|
|||||||
| ^^^^^ --------- value borrowed here after move
|
| ^^^^^ --------- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `b` here
|
| value moved into `b` here
|
||||||
| move occurs because `b` has type `U` which does not implement the `Copy` trait
|
| move occurs because `b` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -120,7 +120,7 @@ LL | let a @ (mut b @ ref mut c, d @ ref e) = (u(), u());
|
|||||||
| ^ ----- value borrowed here after move
|
| ^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `d` here
|
| value moved into `d` here
|
||||||
| move occurs because `d` has type `U` which does not implement the `Copy` trait
|
| move occurs because `d` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -135,7 +135,7 @@ LL | let a @ [ref mut b, ref c] = [u(), u()];
|
|||||||
| | |
|
| | |
|
||||||
| | value borrowed here after move
|
| | value borrowed here after move
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `[U; 2]` which does not implement the `Copy` trait
|
| move occurs because `a` has type `[U; 2]`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -149,7 +149,7 @@ LL | a @ Some(ref b) => {}
|
|||||||
| ^ ----- value borrowed here after move
|
| ^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `Option<U>` which does not implement the `Copy` trait
|
| move occurs because `a` has type `Option<U>`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -164,7 +164,7 @@ LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
|
|||||||
| | |
|
| | |
|
||||||
| | value borrowed here after move
|
| | value borrowed here after move
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `Option<(U, U)>` which does not implement the `Copy` trait
|
| move occurs because `a` has type `Option<(U, U)>`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -178,7 +178,7 @@ LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
|
|||||||
| ^^^^^ --------- value borrowed here after move
|
| ^^^^^ --------- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `b` here
|
| value moved into `b` here
|
||||||
| move occurs because `b` has type `U` which does not implement the `Copy` trait
|
| move occurs because `b` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -192,7 +192,7 @@ LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
|
|||||||
| ^ ----- value borrowed here after move
|
| ^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `d` here
|
| value moved into `d` here
|
||||||
| move occurs because `d` has type `U` which does not implement the `Copy` trait
|
| move occurs because `d` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -207,7 +207,7 @@ LL | mut a @ Some([ref b, ref mut c]) => {}
|
|||||||
| | |
|
| | |
|
||||||
| | value borrowed here after move
|
| | value borrowed here after move
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `Option<[U; 2]>` which does not implement the `Copy` trait
|
| move occurs because `a` has type `Option<[U; 2]>`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -221,7 +221,7 @@ LL | a @ Some(ref b) => {}
|
|||||||
| ^ ----- value borrowed here after move
|
| ^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `Option<U>` which does not implement the `Copy` trait
|
| move occurs because `a` has type `Option<U>`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -236,7 +236,7 @@ LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
|
|||||||
| | |
|
| | |
|
||||||
| | value borrowed here after move
|
| | value borrowed here after move
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `Option<(U, U)>` which does not implement the `Copy` trait
|
| move occurs because `a` has type `Option<(U, U)>`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -250,7 +250,7 @@ LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
|
|||||||
| ^^^^^ --------- value borrowed here after move
|
| ^^^^^ --------- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `b` here
|
| value moved into `b` here
|
||||||
| move occurs because `b` has type `U` which does not implement the `Copy` trait
|
| move occurs because `b` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -264,7 +264,7 @@ LL | a @ Some((mut b @ ref mut c, d @ ref e)) => {}
|
|||||||
| ^ ----- value borrowed here after move
|
| ^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `d` here
|
| value moved into `d` here
|
||||||
| move occurs because `d` has type `U` which does not implement the `Copy` trait
|
| move occurs because `d` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -279,7 +279,7 @@ LL | mut a @ Some([ref b, ref mut c]) => {}
|
|||||||
| | |
|
| | |
|
||||||
| | value borrowed here after move
|
| | value borrowed here after move
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `Option<[U; 2]>` which does not implement the `Copy` trait
|
| move occurs because `a` has type `Option<[U; 2]>`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -349,7 +349,7 @@ LL | fn f1(a @ ref b: U) {}
|
|||||||
| ^ ----- value borrowed here after move
|
| ^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `U` which does not implement the `Copy` trait
|
| move occurs because `a` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -364,7 +364,7 @@ LL | fn f2(mut a @ (b @ ref c, mut d @ ref e): (U, U)) {}
|
|||||||
| | |
|
| | |
|
||||||
| | value borrowed here after move
|
| | value borrowed here after move
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `(U, U)` which does not implement the `Copy` trait
|
| move occurs because `a` has type `(U, U)`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -378,7 +378,7 @@ LL | fn f2(mut a @ (b @ ref c, mut d @ ref e): (U, U)) {}
|
|||||||
| ^ ----- value borrowed here after move
|
| ^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `b` here
|
| value moved into `b` here
|
||||||
| move occurs because `b` has type `U` which does not implement the `Copy` trait
|
| move occurs because `b` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -392,7 +392,7 @@ LL | fn f2(mut a @ (b @ ref c, mut d @ ref e): (U, U)) {}
|
|||||||
| ^^^^^ ----- value borrowed here after move
|
| ^^^^^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `d` here
|
| value moved into `d` here
|
||||||
| move occurs because `d` has type `U` which does not implement the `Copy` trait
|
| move occurs because `d` has type `U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -417,7 +417,7 @@ LL | fn f3(a @ [ref mut b, ref c]: [U; 2]) {}
|
|||||||
| | |
|
| | |
|
||||||
| | value borrowed here after move
|
| | value borrowed here after move
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `[U; 2]` which does not implement the `Copy` trait
|
| move occurs because `a` has type `[U; 2]`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
|
@ -78,7 +78,7 @@ LL | let a @ (ref mut b, ref mut c) = (U, U);
|
|||||||
| | |
|
| | |
|
||||||
| | value borrowed here after move
|
| | value borrowed here after move
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `(U, U)` which does not implement the `Copy` trait
|
| move occurs because `a` has type `(U, U)`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -94,7 +94,7 @@ LL | let a @ (b, [c, d]) = &mut val; // Same as ^--
|
|||||||
| | | value borrowed here after move
|
| | | value borrowed here after move
|
||||||
| | value borrowed here after move
|
| | value borrowed here after move
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `&mut (U, [U; 2])` which does not implement the `Copy` trait
|
| move occurs because `a` has type `&mut (U, [U; 2])`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -108,7 +108,7 @@ LL | let a @ &mut ref mut b = &mut U;
|
|||||||
| ^ --------- value borrowed here after move
|
| ^ --------- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `&mut U` which does not implement the `Copy` trait
|
| move occurs because `a` has type `&mut U`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -123,7 +123,7 @@ LL | let a @ &mut (ref mut b, ref mut c) = &mut (U, U);
|
|||||||
| | |
|
| | |
|
||||||
| | value borrowed here after move
|
| | value borrowed here after move
|
||||||
| value moved into `a` here
|
| value moved into `a` here
|
||||||
| move occurs because `a` has type `&mut (U, U)` which does not implement the `Copy` trait
|
| move occurs because `a` has type `&mut (U, U)`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
|
@ -29,7 +29,7 @@ LL | Ok(ref a @ b) | Err(b @ ref a) => {
|
|||||||
| ^ ----- value borrowed here after move
|
| ^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `b` here
|
| value moved into `b` here
|
||||||
| move occurs because `b` has type `NotCopy` which does not implement the `Copy` trait
|
| move occurs because `b` has type `NotCopy`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
|
@ -5,7 +5,7 @@ LL | let _moved @ ref _from = String::from("foo");
|
|||||||
| ^^^^^^ --------- value borrowed here after move
|
| ^^^^^^ --------- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `_moved` here
|
| value moved into `_moved` here
|
||||||
| move occurs because `_moved` has type `String` which does not implement the `Copy` trait
|
| move occurs because `_moved` has type `String`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
@ -35,7 +35,7 @@ LL | let _moved @ S { ref f } = S { f: String::from("foo") };
|
|||||||
| ^^^^^^ ----- value borrowed here after move
|
| ^^^^^^ ----- value borrowed here after move
|
||||||
| |
|
| |
|
||||||
| value moved into `_moved` here
|
| value moved into `_moved` here
|
||||||
| move occurs because `_moved` has type `S` which does not implement the `Copy` trait
|
| move occurs because `_moved` has type `S`, which does not implement the `Copy` trait
|
||||||
|
|
|
|
||||||
help: borrow this binding in the pattern to avoid moving the value
|
help: borrow this binding in the pattern to avoid moving the value
|
||||||
|
|
|
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `&[u8; 0]` cannot be safely transmuted into `&[u16; 0]`
|
|||||||
--> $DIR/align-fail.rs:21:55
|
--> $DIR/align-fail.rs:21:55
|
||||||
|
|
|
|
||||||
LL | ...tatic [u8; 0], &'static [u16; 0]>();
|
LL | ...tatic [u8; 0], &'static [u16; 0]>();
|
||||||
| ^^^^^^^^^^^^^^^^^ The minimum alignment of `&[u8; 0]` (1) should be greater than that of `&[u16; 0]` (2)
|
| ^^^^^^^^^^^^^^^^^ the minimum alignment of `&[u8; 0]` (1) should be greater than that of `&[u16; 0]` (2)
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/align-fail.rs:9:14
|
--> $DIR/align-fail.rs:9:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `[String; 0]` cannot be safely transmuted into `()`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:25:52
|
--> $DIR/should_require_well_defined_layout.rs:25:52
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
||||||
| ^^ `[String; 0]` does not have a well-specified layout
|
| ^^ analyzing the transmutability of `[String; 0]` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -23,7 +23,7 @@ error[E0277]: `u128` cannot be safely transmuted into `[String; 0]`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:26:47
|
--> $DIR/should_require_well_defined_layout.rs:26:47
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
||||||
| ^^^^^^^^^ `[String; 0]` does not have a well-specified layout
|
| ^^^^^^^^^ analyzing the transmutability of `[String; 0]` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -44,7 +44,7 @@ error[E0277]: `[String; 1]` cannot be safely transmuted into `()`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:31:52
|
--> $DIR/should_require_well_defined_layout.rs:31:52
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
||||||
| ^^ `[String; 1]` does not have a well-specified layout
|
| ^^ analyzing the transmutability of `[String; 1]` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -65,7 +65,7 @@ error[E0277]: `u128` cannot be safely transmuted into `[String; 1]`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:32:47
|
--> $DIR/should_require_well_defined_layout.rs:32:47
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
||||||
| ^^^^^^^^^ `[String; 1]` does not have a well-specified layout
|
| ^^^^^^^^^ analyzing the transmutability of `[String; 1]` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -86,7 +86,7 @@ error[E0277]: `[String; 2]` cannot be safely transmuted into `()`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:37:52
|
--> $DIR/should_require_well_defined_layout.rs:37:52
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
||||||
| ^^ `[String; 2]` does not have a well-specified layout
|
| ^^ analyzing the transmutability of `[String; 2]` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -107,7 +107,7 @@ error[E0277]: `u128` cannot be safely transmuted into `[String; 2]`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:38:47
|
--> $DIR/should_require_well_defined_layout.rs:38:47
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
||||||
| ^^^^^^^^^ `[String; 2]` does not have a well-specified layout
|
| ^^^^^^^^^ analyzing the transmutability of `[String; 2]` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `Zst` cannot be safely transmuted into `V0i8`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:46:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:46:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Smaller, Current>();
|
LL | assert::is_transmutable::<Smaller, Current>();
|
||||||
| ^^^^^^^ The size of `Zst` is smaller than the size of `V0i8`
|
| ^^^^^^^ the size of `Zst` is smaller than the size of `V0i8`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -24,7 +24,7 @@ error[E0277]: `V0i8` cannot be safely transmuted into `u16`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:48:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:48:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Current, Larger>();
|
LL | assert::is_transmutable::<Current, Larger>();
|
||||||
| ^^^^^^ The size of `V0i8` is smaller than the size of `u16`
|
| ^^^^^^ the size of `V0i8` is smaller than the size of `u16`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -46,7 +46,7 @@ error[E0277]: `Zst` cannot be safely transmuted into `V0u8`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:54:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:54:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Smaller, Current>();
|
LL | assert::is_transmutable::<Smaller, Current>();
|
||||||
| ^^^^^^^ The size of `Zst` is smaller than the size of `V0u8`
|
| ^^^^^^^ the size of `Zst` is smaller than the size of `V0u8`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -68,7 +68,7 @@ error[E0277]: `V0u8` cannot be safely transmuted into `u16`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:56:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:56:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Current, Larger>();
|
LL | assert::is_transmutable::<Current, Larger>();
|
||||||
| ^^^^^^ The size of `V0u8` is smaller than the size of `u16`
|
| ^^^^^^ the size of `V0u8` is smaller than the size of `u16`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -90,7 +90,7 @@ error[E0277]: `u8` cannot be safely transmuted into `V0i16`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:68:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:68:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Smaller, Current>();
|
LL | assert::is_transmutable::<Smaller, Current>();
|
||||||
| ^^^^^^^ The size of `u8` is smaller than the size of `V0i16`
|
| ^^^^^^^ the size of `u8` is smaller than the size of `V0i16`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -112,7 +112,7 @@ error[E0277]: `V0i16` cannot be safely transmuted into `u32`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:70:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:70:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Current, Larger>();
|
LL | assert::is_transmutable::<Current, Larger>();
|
||||||
| ^^^^^^ The size of `V0i16` is smaller than the size of `u32`
|
| ^^^^^^ the size of `V0i16` is smaller than the size of `u32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -134,7 +134,7 @@ error[E0277]: `u8` cannot be safely transmuted into `V0u16`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:76:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:76:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Smaller, Current>();
|
LL | assert::is_transmutable::<Smaller, Current>();
|
||||||
| ^^^^^^^ The size of `u8` is smaller than the size of `V0u16`
|
| ^^^^^^^ the size of `u8` is smaller than the size of `V0u16`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -156,7 +156,7 @@ error[E0277]: `V0u16` cannot be safely transmuted into `u32`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:78:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:78:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Current, Larger>();
|
LL | assert::is_transmutable::<Current, Larger>();
|
||||||
| ^^^^^^ The size of `V0u16` is smaller than the size of `u32`
|
| ^^^^^^ the size of `V0u16` is smaller than the size of `u32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -178,7 +178,7 @@ error[E0277]: `u16` cannot be safely transmuted into `V0i32`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:90:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:90:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Smaller, Current>();
|
LL | assert::is_transmutable::<Smaller, Current>();
|
||||||
| ^^^^^^^ The size of `u16` is smaller than the size of `V0i32`
|
| ^^^^^^^ the size of `u16` is smaller than the size of `V0i32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -200,7 +200,7 @@ error[E0277]: `V0i32` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:92:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:92:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Current, Larger>();
|
LL | assert::is_transmutable::<Current, Larger>();
|
||||||
| ^^^^^^ The size of `V0i32` is smaller than the size of `u64`
|
| ^^^^^^ the size of `V0i32` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -222,7 +222,7 @@ error[E0277]: `u16` cannot be safely transmuted into `V0u32`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:98:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:98:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Smaller, Current>();
|
LL | assert::is_transmutable::<Smaller, Current>();
|
||||||
| ^^^^^^^ The size of `u16` is smaller than the size of `V0u32`
|
| ^^^^^^^ the size of `u16` is smaller than the size of `V0u32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -244,7 +244,7 @@ error[E0277]: `V0u32` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:100:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:100:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Current, Larger>();
|
LL | assert::is_transmutable::<Current, Larger>();
|
||||||
| ^^^^^^ The size of `V0u32` is smaller than the size of `u64`
|
| ^^^^^^ the size of `V0u32` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -266,7 +266,7 @@ error[E0277]: `u32` cannot be safely transmuted into `V0i64`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:112:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:112:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Smaller, Current>();
|
LL | assert::is_transmutable::<Smaller, Current>();
|
||||||
| ^^^^^^^ The size of `u32` is smaller than the size of `V0i64`
|
| ^^^^^^^ the size of `u32` is smaller than the size of `V0i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -288,7 +288,7 @@ error[E0277]: `V0i64` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:114:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:114:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Current, Larger>();
|
LL | assert::is_transmutable::<Current, Larger>();
|
||||||
| ^^^^^^ The size of `V0i64` is smaller than the size of `u128`
|
| ^^^^^^ the size of `V0i64` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -310,7 +310,7 @@ error[E0277]: `u32` cannot be safely transmuted into `V0u64`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:120:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:120:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Smaller, Current>();
|
LL | assert::is_transmutable::<Smaller, Current>();
|
||||||
| ^^^^^^^ The size of `u32` is smaller than the size of `V0u64`
|
| ^^^^^^^ the size of `u32` is smaller than the size of `V0u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -332,7 +332,7 @@ error[E0277]: `V0u64` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:122:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:122:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Current, Larger>();
|
LL | assert::is_transmutable::<Current, Larger>();
|
||||||
| ^^^^^^ The size of `V0u64` is smaller than the size of `u128`
|
| ^^^^^^ the size of `V0u64` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -354,7 +354,7 @@ error[E0277]: `u8` cannot be safely transmuted into `V0isize`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:134:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:134:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Smaller, Current>();
|
LL | assert::is_transmutable::<Smaller, Current>();
|
||||||
| ^^^^^^^ The size of `u8` is smaller than the size of `V0isize`
|
| ^^^^^^^ the size of `u8` is smaller than the size of `V0isize`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -376,7 +376,7 @@ error[E0277]: `V0isize` cannot be safely transmuted into `[usize; 2]`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:136:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:136:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Current, Larger>();
|
LL | assert::is_transmutable::<Current, Larger>();
|
||||||
| ^^^^^^ The size of `V0isize` is smaller than the size of `[usize; 2]`
|
| ^^^^^^ the size of `V0isize` is smaller than the size of `[usize; 2]`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -398,7 +398,7 @@ error[E0277]: `u8` cannot be safely transmuted into `V0usize`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:142:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:142:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Smaller, Current>();
|
LL | assert::is_transmutable::<Smaller, Current>();
|
||||||
| ^^^^^^^ The size of `u8` is smaller than the size of `V0usize`
|
| ^^^^^^^ the size of `u8` is smaller than the size of `V0usize`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
@ -420,7 +420,7 @@ error[E0277]: `V0usize` cannot be safely transmuted into `[usize; 2]`
|
|||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:144:44
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:144:44
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Current, Larger>();
|
LL | assert::is_transmutable::<Current, Larger>();
|
||||||
| ^^^^^^ The size of `V0usize` is smaller than the size of `[usize; 2]`
|
| ^^^^^^ the size of `V0usize` is smaller than the size of `[usize; 2]`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
--> $DIR/primitive_reprs_should_have_correct_length.rs:12:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `void::repr_rust` cannot be safely transmuted into `()`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:27:52
|
--> $DIR/should_require_well_defined_layout.rs:27:52
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
||||||
| ^^ `void::repr_rust` does not have a well-specified layout
|
| ^^ analyzing the transmutability of `void::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:13:14
|
--> $DIR/should_require_well_defined_layout.rs:13:14
|
||||||
@ -24,7 +24,7 @@ error[E0277]: `u128` cannot be safely transmuted into `void::repr_rust`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:28:47
|
--> $DIR/should_require_well_defined_layout.rs:28:47
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
||||||
| ^^^^^^^^^ `void::repr_rust` does not have a well-specified layout
|
| ^^^^^^^^^ analyzing the transmutability of `void::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:13:14
|
--> $DIR/should_require_well_defined_layout.rs:13:14
|
||||||
@ -46,7 +46,7 @@ error[E0277]: `singleton::repr_rust` cannot be safely transmuted into `()`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:33:52
|
--> $DIR/should_require_well_defined_layout.rs:33:52
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
||||||
| ^^ `singleton::repr_rust` does not have a well-specified layout
|
| ^^ analyzing the transmutability of `singleton::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:13:14
|
--> $DIR/should_require_well_defined_layout.rs:13:14
|
||||||
@ -68,7 +68,7 @@ error[E0277]: `u128` cannot be safely transmuted into `singleton::repr_rust`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:34:47
|
--> $DIR/should_require_well_defined_layout.rs:34:47
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
||||||
| ^^^^^^^^^ `singleton::repr_rust` does not have a well-specified layout
|
| ^^^^^^^^^ analyzing the transmutability of `singleton::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:13:14
|
--> $DIR/should_require_well_defined_layout.rs:13:14
|
||||||
@ -90,7 +90,7 @@ error[E0277]: `duplex::repr_rust` cannot be safely transmuted into `()`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:39:52
|
--> $DIR/should_require_well_defined_layout.rs:39:52
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
||||||
| ^^ `duplex::repr_rust` does not have a well-specified layout
|
| ^^ analyzing the transmutability of `duplex::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:13:14
|
--> $DIR/should_require_well_defined_layout.rs:13:14
|
||||||
@ -112,7 +112,7 @@ error[E0277]: `u128` cannot be safely transmuted into `duplex::repr_rust`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:40:47
|
--> $DIR/should_require_well_defined_layout.rs:40:47
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
||||||
| ^^^^^^^^^ `duplex::repr_rust` does not have a well-specified layout
|
| ^^^^^^^^^ analyzing the transmutability of `duplex::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:13:14
|
--> $DIR/should_require_well_defined_layout.rs:13:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `Src` cannot be safely transmuted into `Dst`
|
|||||||
--> $DIR/should_pad_variants.rs:43:36
|
--> $DIR/should_pad_variants.rs:43:36
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Src, Dst>();
|
LL | assert::is_transmutable::<Src, Dst>();
|
||||||
| ^^^ The size of `Src` is smaller than the size of `Dst`
|
| ^^^ the size of `Src` is smaller than the size of `Dst`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/should_pad_variants.rs:13:14
|
--> $DIR/should_pad_variants.rs:13:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `Src` cannot be safely transmuted into `Unexpected`
|
|||||||
--> $DIR/should_respect_endianness.rs:35:36
|
--> $DIR/should_respect_endianness.rs:35:36
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Src, Unexpected>();
|
LL | assert::is_transmutable::<Src, Unexpected>();
|
||||||
| ^^^^^^^^^^ At least one value of `Src` isn't a bit-valid value of `Unexpected`
|
| ^^^^^^^^^^ at least one value of `Src` isn't a bit-valid value of `Unexpected`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/should_respect_endianness.rs:13:14
|
--> $DIR/should_respect_endianness.rs:13:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `u8` cannot be safely transmuted into `bool`
|
|||||||
--> $DIR/bool-mut.rs:15:50
|
--> $DIR/bool-mut.rs:15:50
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<&'static mut bool, &'static mut u8>()
|
LL | assert::is_transmutable::<&'static mut bool, &'static mut u8>()
|
||||||
| ^^^^^^^^^^^^^^^ At least one value of `u8` isn't a bit-valid value of `bool`
|
| ^^^^^^^^^^^^^^^ at least one value of `u8` isn't a bit-valid value of `bool`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/bool-mut.rs:10:14
|
--> $DIR/bool-mut.rs:10:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `u8` cannot be safely transmuted into `bool`
|
|||||||
--> $DIR/bool.rs:21:35
|
--> $DIR/bool.rs:21:35
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<u8, bool>();
|
LL | assert::is_transmutable::<u8, bool>();
|
||||||
| ^^^^ At least one value of `u8` isn't a bit-valid value of `bool`
|
| ^^^^ at least one value of `u8` isn't a bit-valid value of `bool`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/bool.rs:11:14
|
--> $DIR/bool.rs:11:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `u8` cannot be safely transmuted into `bool`
|
|||||||
--> $DIR/bool.rs:21:35
|
--> $DIR/bool.rs:21:35
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<u8, bool>();
|
LL | assert::is_transmutable::<u8, bool>();
|
||||||
| ^^^^ At least one value of `u8` isn't a bit-valid value of `bool`
|
| ^^^^ at least one value of `u8` isn't a bit-valid value of `bool`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/bool.rs:11:14
|
--> $DIR/bool.rs:11:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `i8` cannot be safely transmuted into `i16`
|
|||||||
--> $DIR/numbers.rs:64:40
|
--> $DIR/numbers.rs:64:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, i16>();
|
LL | assert::is_transmutable::< i8, i16>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `i16`
|
| ^^^ the size of `i8` is smaller than the size of `i16`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -17,7 +17,7 @@ error[E0277]: `i8` cannot be safely transmuted into `u16`
|
|||||||
--> $DIR/numbers.rs:65:40
|
--> $DIR/numbers.rs:65:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, u16>();
|
LL | assert::is_transmutable::< i8, u16>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `u16`
|
| ^^^ the size of `i8` is smaller than the size of `u16`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -32,7 +32,7 @@ error[E0277]: `i8` cannot be safely transmuted into `i32`
|
|||||||
--> $DIR/numbers.rs:66:40
|
--> $DIR/numbers.rs:66:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, i32>();
|
LL | assert::is_transmutable::< i8, i32>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `i32`
|
| ^^^ the size of `i8` is smaller than the size of `i32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -47,7 +47,7 @@ error[E0277]: `i8` cannot be safely transmuted into `f32`
|
|||||||
--> $DIR/numbers.rs:67:40
|
--> $DIR/numbers.rs:67:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, f32>();
|
LL | assert::is_transmutable::< i8, f32>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `f32`
|
| ^^^ the size of `i8` is smaller than the size of `f32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -62,7 +62,7 @@ error[E0277]: `i8` cannot be safely transmuted into `u32`
|
|||||||
--> $DIR/numbers.rs:68:40
|
--> $DIR/numbers.rs:68:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, u32>();
|
LL | assert::is_transmutable::< i8, u32>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `u32`
|
| ^^^ the size of `i8` is smaller than the size of `u32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -77,7 +77,7 @@ error[E0277]: `i8` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:69:40
|
--> $DIR/numbers.rs:69:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, u64>();
|
LL | assert::is_transmutable::< i8, u64>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `u64`
|
| ^^^ the size of `i8` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -92,7 +92,7 @@ error[E0277]: `i8` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:70:40
|
--> $DIR/numbers.rs:70:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, i64>();
|
LL | assert::is_transmutable::< i8, i64>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `i64`
|
| ^^^ the size of `i8` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -107,7 +107,7 @@ error[E0277]: `i8` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:71:40
|
--> $DIR/numbers.rs:71:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, f64>();
|
LL | assert::is_transmutable::< i8, f64>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `f64`
|
| ^^^ the size of `i8` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -122,7 +122,7 @@ error[E0277]: `i8` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:72:39
|
--> $DIR/numbers.rs:72:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, u128>();
|
LL | assert::is_transmutable::< i8, u128>();
|
||||||
| ^^^^ The size of `i8` is smaller than the size of `u128`
|
| ^^^^ the size of `i8` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -137,7 +137,7 @@ error[E0277]: `i8` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:73:39
|
--> $DIR/numbers.rs:73:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, i128>();
|
LL | assert::is_transmutable::< i8, i128>();
|
||||||
| ^^^^ The size of `i8` is smaller than the size of `i128`
|
| ^^^^ the size of `i8` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -152,7 +152,7 @@ error[E0277]: `u8` cannot be safely transmuted into `i16`
|
|||||||
--> $DIR/numbers.rs:75:40
|
--> $DIR/numbers.rs:75:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, i16>();
|
LL | assert::is_transmutable::< u8, i16>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `i16`
|
| ^^^ the size of `u8` is smaller than the size of `i16`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -167,7 +167,7 @@ error[E0277]: `u8` cannot be safely transmuted into `u16`
|
|||||||
--> $DIR/numbers.rs:76:40
|
--> $DIR/numbers.rs:76:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, u16>();
|
LL | assert::is_transmutable::< u8, u16>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `u16`
|
| ^^^ the size of `u8` is smaller than the size of `u16`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -182,7 +182,7 @@ error[E0277]: `u8` cannot be safely transmuted into `i32`
|
|||||||
--> $DIR/numbers.rs:77:40
|
--> $DIR/numbers.rs:77:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, i32>();
|
LL | assert::is_transmutable::< u8, i32>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `i32`
|
| ^^^ the size of `u8` is smaller than the size of `i32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -197,7 +197,7 @@ error[E0277]: `u8` cannot be safely transmuted into `f32`
|
|||||||
--> $DIR/numbers.rs:78:40
|
--> $DIR/numbers.rs:78:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, f32>();
|
LL | assert::is_transmutable::< u8, f32>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `f32`
|
| ^^^ the size of `u8` is smaller than the size of `f32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -212,7 +212,7 @@ error[E0277]: `u8` cannot be safely transmuted into `u32`
|
|||||||
--> $DIR/numbers.rs:79:40
|
--> $DIR/numbers.rs:79:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, u32>();
|
LL | assert::is_transmutable::< u8, u32>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `u32`
|
| ^^^ the size of `u8` is smaller than the size of `u32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -227,7 +227,7 @@ error[E0277]: `u8` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:80:40
|
--> $DIR/numbers.rs:80:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, u64>();
|
LL | assert::is_transmutable::< u8, u64>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `u64`
|
| ^^^ the size of `u8` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -242,7 +242,7 @@ error[E0277]: `u8` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:81:40
|
--> $DIR/numbers.rs:81:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, i64>();
|
LL | assert::is_transmutable::< u8, i64>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `i64`
|
| ^^^ the size of `u8` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -257,7 +257,7 @@ error[E0277]: `u8` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:82:40
|
--> $DIR/numbers.rs:82:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, f64>();
|
LL | assert::is_transmutable::< u8, f64>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `f64`
|
| ^^^ the size of `u8` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -272,7 +272,7 @@ error[E0277]: `u8` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:83:39
|
--> $DIR/numbers.rs:83:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, u128>();
|
LL | assert::is_transmutable::< u8, u128>();
|
||||||
| ^^^^ The size of `u8` is smaller than the size of `u128`
|
| ^^^^ the size of `u8` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -287,7 +287,7 @@ error[E0277]: `u8` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:84:39
|
--> $DIR/numbers.rs:84:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, i128>();
|
LL | assert::is_transmutable::< u8, i128>();
|
||||||
| ^^^^ The size of `u8` is smaller than the size of `i128`
|
| ^^^^ the size of `u8` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -302,7 +302,7 @@ error[E0277]: `i16` cannot be safely transmuted into `i32`
|
|||||||
--> $DIR/numbers.rs:86:40
|
--> $DIR/numbers.rs:86:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, i32>();
|
LL | assert::is_transmutable::< i16, i32>();
|
||||||
| ^^^ The size of `i16` is smaller than the size of `i32`
|
| ^^^ the size of `i16` is smaller than the size of `i32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -317,7 +317,7 @@ error[E0277]: `i16` cannot be safely transmuted into `f32`
|
|||||||
--> $DIR/numbers.rs:87:40
|
--> $DIR/numbers.rs:87:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, f32>();
|
LL | assert::is_transmutable::< i16, f32>();
|
||||||
| ^^^ The size of `i16` is smaller than the size of `f32`
|
| ^^^ the size of `i16` is smaller than the size of `f32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -332,7 +332,7 @@ error[E0277]: `i16` cannot be safely transmuted into `u32`
|
|||||||
--> $DIR/numbers.rs:88:40
|
--> $DIR/numbers.rs:88:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, u32>();
|
LL | assert::is_transmutable::< i16, u32>();
|
||||||
| ^^^ The size of `i16` is smaller than the size of `u32`
|
| ^^^ the size of `i16` is smaller than the size of `u32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -347,7 +347,7 @@ error[E0277]: `i16` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:89:40
|
--> $DIR/numbers.rs:89:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, u64>();
|
LL | assert::is_transmutable::< i16, u64>();
|
||||||
| ^^^ The size of `i16` is smaller than the size of `u64`
|
| ^^^ the size of `i16` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -362,7 +362,7 @@ error[E0277]: `i16` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:90:40
|
--> $DIR/numbers.rs:90:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, i64>();
|
LL | assert::is_transmutable::< i16, i64>();
|
||||||
| ^^^ The size of `i16` is smaller than the size of `i64`
|
| ^^^ the size of `i16` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -377,7 +377,7 @@ error[E0277]: `i16` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:91:40
|
--> $DIR/numbers.rs:91:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, f64>();
|
LL | assert::is_transmutable::< i16, f64>();
|
||||||
| ^^^ The size of `i16` is smaller than the size of `f64`
|
| ^^^ the size of `i16` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -392,7 +392,7 @@ error[E0277]: `i16` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:92:39
|
--> $DIR/numbers.rs:92:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, u128>();
|
LL | assert::is_transmutable::< i16, u128>();
|
||||||
| ^^^^ The size of `i16` is smaller than the size of `u128`
|
| ^^^^ the size of `i16` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -407,7 +407,7 @@ error[E0277]: `i16` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:93:39
|
--> $DIR/numbers.rs:93:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, i128>();
|
LL | assert::is_transmutable::< i16, i128>();
|
||||||
| ^^^^ The size of `i16` is smaller than the size of `i128`
|
| ^^^^ the size of `i16` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -422,7 +422,7 @@ error[E0277]: `u16` cannot be safely transmuted into `i32`
|
|||||||
--> $DIR/numbers.rs:95:40
|
--> $DIR/numbers.rs:95:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, i32>();
|
LL | assert::is_transmutable::< u16, i32>();
|
||||||
| ^^^ The size of `u16` is smaller than the size of `i32`
|
| ^^^ the size of `u16` is smaller than the size of `i32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -437,7 +437,7 @@ error[E0277]: `u16` cannot be safely transmuted into `f32`
|
|||||||
--> $DIR/numbers.rs:96:40
|
--> $DIR/numbers.rs:96:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, f32>();
|
LL | assert::is_transmutable::< u16, f32>();
|
||||||
| ^^^ The size of `u16` is smaller than the size of `f32`
|
| ^^^ the size of `u16` is smaller than the size of `f32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -452,7 +452,7 @@ error[E0277]: `u16` cannot be safely transmuted into `u32`
|
|||||||
--> $DIR/numbers.rs:97:40
|
--> $DIR/numbers.rs:97:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, u32>();
|
LL | assert::is_transmutable::< u16, u32>();
|
||||||
| ^^^ The size of `u16` is smaller than the size of `u32`
|
| ^^^ the size of `u16` is smaller than the size of `u32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -467,7 +467,7 @@ error[E0277]: `u16` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:98:40
|
--> $DIR/numbers.rs:98:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, u64>();
|
LL | assert::is_transmutable::< u16, u64>();
|
||||||
| ^^^ The size of `u16` is smaller than the size of `u64`
|
| ^^^ the size of `u16` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -482,7 +482,7 @@ error[E0277]: `u16` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:99:40
|
--> $DIR/numbers.rs:99:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, i64>();
|
LL | assert::is_transmutable::< u16, i64>();
|
||||||
| ^^^ The size of `u16` is smaller than the size of `i64`
|
| ^^^ the size of `u16` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -497,7 +497,7 @@ error[E0277]: `u16` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:100:40
|
--> $DIR/numbers.rs:100:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, f64>();
|
LL | assert::is_transmutable::< u16, f64>();
|
||||||
| ^^^ The size of `u16` is smaller than the size of `f64`
|
| ^^^ the size of `u16` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -512,7 +512,7 @@ error[E0277]: `u16` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:101:39
|
--> $DIR/numbers.rs:101:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, u128>();
|
LL | assert::is_transmutable::< u16, u128>();
|
||||||
| ^^^^ The size of `u16` is smaller than the size of `u128`
|
| ^^^^ the size of `u16` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -527,7 +527,7 @@ error[E0277]: `u16` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:102:39
|
--> $DIR/numbers.rs:102:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, i128>();
|
LL | assert::is_transmutable::< u16, i128>();
|
||||||
| ^^^^ The size of `u16` is smaller than the size of `i128`
|
| ^^^^ the size of `u16` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -542,7 +542,7 @@ error[E0277]: `i32` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:104:40
|
--> $DIR/numbers.rs:104:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i32, u64>();
|
LL | assert::is_transmutable::< i32, u64>();
|
||||||
| ^^^ The size of `i32` is smaller than the size of `u64`
|
| ^^^ the size of `i32` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -557,7 +557,7 @@ error[E0277]: `i32` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:105:40
|
--> $DIR/numbers.rs:105:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i32, i64>();
|
LL | assert::is_transmutable::< i32, i64>();
|
||||||
| ^^^ The size of `i32` is smaller than the size of `i64`
|
| ^^^ the size of `i32` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -572,7 +572,7 @@ error[E0277]: `i32` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:106:40
|
--> $DIR/numbers.rs:106:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i32, f64>();
|
LL | assert::is_transmutable::< i32, f64>();
|
||||||
| ^^^ The size of `i32` is smaller than the size of `f64`
|
| ^^^ the size of `i32` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -587,7 +587,7 @@ error[E0277]: `i32` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:107:39
|
--> $DIR/numbers.rs:107:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i32, u128>();
|
LL | assert::is_transmutable::< i32, u128>();
|
||||||
| ^^^^ The size of `i32` is smaller than the size of `u128`
|
| ^^^^ the size of `i32` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -602,7 +602,7 @@ error[E0277]: `i32` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:108:39
|
--> $DIR/numbers.rs:108:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i32, i128>();
|
LL | assert::is_transmutable::< i32, i128>();
|
||||||
| ^^^^ The size of `i32` is smaller than the size of `i128`
|
| ^^^^ the size of `i32` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -617,7 +617,7 @@ error[E0277]: `f32` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:110:40
|
--> $DIR/numbers.rs:110:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f32, u64>();
|
LL | assert::is_transmutable::< f32, u64>();
|
||||||
| ^^^ The size of `f32` is smaller than the size of `u64`
|
| ^^^ the size of `f32` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -632,7 +632,7 @@ error[E0277]: `f32` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:111:40
|
--> $DIR/numbers.rs:111:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f32, i64>();
|
LL | assert::is_transmutable::< f32, i64>();
|
||||||
| ^^^ The size of `f32` is smaller than the size of `i64`
|
| ^^^ the size of `f32` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -647,7 +647,7 @@ error[E0277]: `f32` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:112:40
|
--> $DIR/numbers.rs:112:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f32, f64>();
|
LL | assert::is_transmutable::< f32, f64>();
|
||||||
| ^^^ The size of `f32` is smaller than the size of `f64`
|
| ^^^ the size of `f32` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -662,7 +662,7 @@ error[E0277]: `f32` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:113:39
|
--> $DIR/numbers.rs:113:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f32, u128>();
|
LL | assert::is_transmutable::< f32, u128>();
|
||||||
| ^^^^ The size of `f32` is smaller than the size of `u128`
|
| ^^^^ the size of `f32` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -677,7 +677,7 @@ error[E0277]: `f32` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:114:39
|
--> $DIR/numbers.rs:114:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f32, i128>();
|
LL | assert::is_transmutable::< f32, i128>();
|
||||||
| ^^^^ The size of `f32` is smaller than the size of `i128`
|
| ^^^^ the size of `f32` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -692,7 +692,7 @@ error[E0277]: `u32` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:116:40
|
--> $DIR/numbers.rs:116:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u32, u64>();
|
LL | assert::is_transmutable::< u32, u64>();
|
||||||
| ^^^ The size of `u32` is smaller than the size of `u64`
|
| ^^^ the size of `u32` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -707,7 +707,7 @@ error[E0277]: `u32` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:117:40
|
--> $DIR/numbers.rs:117:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u32, i64>();
|
LL | assert::is_transmutable::< u32, i64>();
|
||||||
| ^^^ The size of `u32` is smaller than the size of `i64`
|
| ^^^ the size of `u32` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -722,7 +722,7 @@ error[E0277]: `u32` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:118:40
|
--> $DIR/numbers.rs:118:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u32, f64>();
|
LL | assert::is_transmutable::< u32, f64>();
|
||||||
| ^^^ The size of `u32` is smaller than the size of `f64`
|
| ^^^ the size of `u32` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -737,7 +737,7 @@ error[E0277]: `u32` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:119:39
|
--> $DIR/numbers.rs:119:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u32, u128>();
|
LL | assert::is_transmutable::< u32, u128>();
|
||||||
| ^^^^ The size of `u32` is smaller than the size of `u128`
|
| ^^^^ the size of `u32` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -752,7 +752,7 @@ error[E0277]: `u32` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:120:39
|
--> $DIR/numbers.rs:120:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u32, i128>();
|
LL | assert::is_transmutable::< u32, i128>();
|
||||||
| ^^^^ The size of `u32` is smaller than the size of `i128`
|
| ^^^^ the size of `u32` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -767,7 +767,7 @@ error[E0277]: `u64` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:122:39
|
--> $DIR/numbers.rs:122:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u64, u128>();
|
LL | assert::is_transmutable::< u64, u128>();
|
||||||
| ^^^^ The size of `u64` is smaller than the size of `u128`
|
| ^^^^ the size of `u64` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -782,7 +782,7 @@ error[E0277]: `u64` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:123:39
|
--> $DIR/numbers.rs:123:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u64, i128>();
|
LL | assert::is_transmutable::< u64, i128>();
|
||||||
| ^^^^ The size of `u64` is smaller than the size of `i128`
|
| ^^^^ the size of `u64` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -797,7 +797,7 @@ error[E0277]: `i64` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:125:39
|
--> $DIR/numbers.rs:125:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i64, u128>();
|
LL | assert::is_transmutable::< i64, u128>();
|
||||||
| ^^^^ The size of `i64` is smaller than the size of `u128`
|
| ^^^^ the size of `i64` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -812,7 +812,7 @@ error[E0277]: `i64` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:126:39
|
--> $DIR/numbers.rs:126:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i64, i128>();
|
LL | assert::is_transmutable::< i64, i128>();
|
||||||
| ^^^^ The size of `i64` is smaller than the size of `i128`
|
| ^^^^ the size of `i64` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -827,7 +827,7 @@ error[E0277]: `f64` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:128:39
|
--> $DIR/numbers.rs:128:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f64, u128>();
|
LL | assert::is_transmutable::< f64, u128>();
|
||||||
| ^^^^ The size of `f64` is smaller than the size of `u128`
|
| ^^^^ the size of `f64` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -842,7 +842,7 @@ error[E0277]: `f64` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:129:39
|
--> $DIR/numbers.rs:129:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f64, i128>();
|
LL | assert::is_transmutable::< f64, i128>();
|
||||||
| ^^^^ The size of `f64` is smaller than the size of `i128`
|
| ^^^^ the size of `f64` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `i8` cannot be safely transmuted into `i16`
|
|||||||
--> $DIR/numbers.rs:64:40
|
--> $DIR/numbers.rs:64:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, i16>();
|
LL | assert::is_transmutable::< i8, i16>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `i16`
|
| ^^^ the size of `i8` is smaller than the size of `i16`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -17,7 +17,7 @@ error[E0277]: `i8` cannot be safely transmuted into `u16`
|
|||||||
--> $DIR/numbers.rs:65:40
|
--> $DIR/numbers.rs:65:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, u16>();
|
LL | assert::is_transmutable::< i8, u16>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `u16`
|
| ^^^ the size of `i8` is smaller than the size of `u16`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -32,7 +32,7 @@ error[E0277]: `i8` cannot be safely transmuted into `i32`
|
|||||||
--> $DIR/numbers.rs:66:40
|
--> $DIR/numbers.rs:66:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, i32>();
|
LL | assert::is_transmutable::< i8, i32>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `i32`
|
| ^^^ the size of `i8` is smaller than the size of `i32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -47,7 +47,7 @@ error[E0277]: `i8` cannot be safely transmuted into `f32`
|
|||||||
--> $DIR/numbers.rs:67:40
|
--> $DIR/numbers.rs:67:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, f32>();
|
LL | assert::is_transmutable::< i8, f32>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `f32`
|
| ^^^ the size of `i8` is smaller than the size of `f32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -62,7 +62,7 @@ error[E0277]: `i8` cannot be safely transmuted into `u32`
|
|||||||
--> $DIR/numbers.rs:68:40
|
--> $DIR/numbers.rs:68:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, u32>();
|
LL | assert::is_transmutable::< i8, u32>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `u32`
|
| ^^^ the size of `i8` is smaller than the size of `u32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -77,7 +77,7 @@ error[E0277]: `i8` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:69:40
|
--> $DIR/numbers.rs:69:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, u64>();
|
LL | assert::is_transmutable::< i8, u64>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `u64`
|
| ^^^ the size of `i8` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -92,7 +92,7 @@ error[E0277]: `i8` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:70:40
|
--> $DIR/numbers.rs:70:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, i64>();
|
LL | assert::is_transmutable::< i8, i64>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `i64`
|
| ^^^ the size of `i8` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -107,7 +107,7 @@ error[E0277]: `i8` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:71:40
|
--> $DIR/numbers.rs:71:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, f64>();
|
LL | assert::is_transmutable::< i8, f64>();
|
||||||
| ^^^ The size of `i8` is smaller than the size of `f64`
|
| ^^^ the size of `i8` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -122,7 +122,7 @@ error[E0277]: `i8` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:72:39
|
--> $DIR/numbers.rs:72:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, u128>();
|
LL | assert::is_transmutable::< i8, u128>();
|
||||||
| ^^^^ The size of `i8` is smaller than the size of `u128`
|
| ^^^^ the size of `i8` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -137,7 +137,7 @@ error[E0277]: `i8` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:73:39
|
--> $DIR/numbers.rs:73:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i8, i128>();
|
LL | assert::is_transmutable::< i8, i128>();
|
||||||
| ^^^^ The size of `i8` is smaller than the size of `i128`
|
| ^^^^ the size of `i8` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -152,7 +152,7 @@ error[E0277]: `u8` cannot be safely transmuted into `i16`
|
|||||||
--> $DIR/numbers.rs:75:40
|
--> $DIR/numbers.rs:75:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, i16>();
|
LL | assert::is_transmutable::< u8, i16>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `i16`
|
| ^^^ the size of `u8` is smaller than the size of `i16`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -167,7 +167,7 @@ error[E0277]: `u8` cannot be safely transmuted into `u16`
|
|||||||
--> $DIR/numbers.rs:76:40
|
--> $DIR/numbers.rs:76:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, u16>();
|
LL | assert::is_transmutable::< u8, u16>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `u16`
|
| ^^^ the size of `u8` is smaller than the size of `u16`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -182,7 +182,7 @@ error[E0277]: `u8` cannot be safely transmuted into `i32`
|
|||||||
--> $DIR/numbers.rs:77:40
|
--> $DIR/numbers.rs:77:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, i32>();
|
LL | assert::is_transmutable::< u8, i32>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `i32`
|
| ^^^ the size of `u8` is smaller than the size of `i32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -197,7 +197,7 @@ error[E0277]: `u8` cannot be safely transmuted into `f32`
|
|||||||
--> $DIR/numbers.rs:78:40
|
--> $DIR/numbers.rs:78:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, f32>();
|
LL | assert::is_transmutable::< u8, f32>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `f32`
|
| ^^^ the size of `u8` is smaller than the size of `f32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -212,7 +212,7 @@ error[E0277]: `u8` cannot be safely transmuted into `u32`
|
|||||||
--> $DIR/numbers.rs:79:40
|
--> $DIR/numbers.rs:79:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, u32>();
|
LL | assert::is_transmutable::< u8, u32>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `u32`
|
| ^^^ the size of `u8` is smaller than the size of `u32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -227,7 +227,7 @@ error[E0277]: `u8` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:80:40
|
--> $DIR/numbers.rs:80:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, u64>();
|
LL | assert::is_transmutable::< u8, u64>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `u64`
|
| ^^^ the size of `u8` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -242,7 +242,7 @@ error[E0277]: `u8` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:81:40
|
--> $DIR/numbers.rs:81:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, i64>();
|
LL | assert::is_transmutable::< u8, i64>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `i64`
|
| ^^^ the size of `u8` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -257,7 +257,7 @@ error[E0277]: `u8` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:82:40
|
--> $DIR/numbers.rs:82:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, f64>();
|
LL | assert::is_transmutable::< u8, f64>();
|
||||||
| ^^^ The size of `u8` is smaller than the size of `f64`
|
| ^^^ the size of `u8` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -272,7 +272,7 @@ error[E0277]: `u8` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:83:39
|
--> $DIR/numbers.rs:83:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, u128>();
|
LL | assert::is_transmutable::< u8, u128>();
|
||||||
| ^^^^ The size of `u8` is smaller than the size of `u128`
|
| ^^^^ the size of `u8` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -287,7 +287,7 @@ error[E0277]: `u8` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:84:39
|
--> $DIR/numbers.rs:84:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u8, i128>();
|
LL | assert::is_transmutable::< u8, i128>();
|
||||||
| ^^^^ The size of `u8` is smaller than the size of `i128`
|
| ^^^^ the size of `u8` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -302,7 +302,7 @@ error[E0277]: `i16` cannot be safely transmuted into `i32`
|
|||||||
--> $DIR/numbers.rs:86:40
|
--> $DIR/numbers.rs:86:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, i32>();
|
LL | assert::is_transmutable::< i16, i32>();
|
||||||
| ^^^ The size of `i16` is smaller than the size of `i32`
|
| ^^^ the size of `i16` is smaller than the size of `i32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -317,7 +317,7 @@ error[E0277]: `i16` cannot be safely transmuted into `f32`
|
|||||||
--> $DIR/numbers.rs:87:40
|
--> $DIR/numbers.rs:87:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, f32>();
|
LL | assert::is_transmutable::< i16, f32>();
|
||||||
| ^^^ The size of `i16` is smaller than the size of `f32`
|
| ^^^ the size of `i16` is smaller than the size of `f32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -332,7 +332,7 @@ error[E0277]: `i16` cannot be safely transmuted into `u32`
|
|||||||
--> $DIR/numbers.rs:88:40
|
--> $DIR/numbers.rs:88:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, u32>();
|
LL | assert::is_transmutable::< i16, u32>();
|
||||||
| ^^^ The size of `i16` is smaller than the size of `u32`
|
| ^^^ the size of `i16` is smaller than the size of `u32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -347,7 +347,7 @@ error[E0277]: `i16` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:89:40
|
--> $DIR/numbers.rs:89:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, u64>();
|
LL | assert::is_transmutable::< i16, u64>();
|
||||||
| ^^^ The size of `i16` is smaller than the size of `u64`
|
| ^^^ the size of `i16` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -362,7 +362,7 @@ error[E0277]: `i16` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:90:40
|
--> $DIR/numbers.rs:90:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, i64>();
|
LL | assert::is_transmutable::< i16, i64>();
|
||||||
| ^^^ The size of `i16` is smaller than the size of `i64`
|
| ^^^ the size of `i16` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -377,7 +377,7 @@ error[E0277]: `i16` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:91:40
|
--> $DIR/numbers.rs:91:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, f64>();
|
LL | assert::is_transmutable::< i16, f64>();
|
||||||
| ^^^ The size of `i16` is smaller than the size of `f64`
|
| ^^^ the size of `i16` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -392,7 +392,7 @@ error[E0277]: `i16` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:92:39
|
--> $DIR/numbers.rs:92:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, u128>();
|
LL | assert::is_transmutable::< i16, u128>();
|
||||||
| ^^^^ The size of `i16` is smaller than the size of `u128`
|
| ^^^^ the size of `i16` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -407,7 +407,7 @@ error[E0277]: `i16` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:93:39
|
--> $DIR/numbers.rs:93:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i16, i128>();
|
LL | assert::is_transmutable::< i16, i128>();
|
||||||
| ^^^^ The size of `i16` is smaller than the size of `i128`
|
| ^^^^ the size of `i16` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -422,7 +422,7 @@ error[E0277]: `u16` cannot be safely transmuted into `i32`
|
|||||||
--> $DIR/numbers.rs:95:40
|
--> $DIR/numbers.rs:95:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, i32>();
|
LL | assert::is_transmutable::< u16, i32>();
|
||||||
| ^^^ The size of `u16` is smaller than the size of `i32`
|
| ^^^ the size of `u16` is smaller than the size of `i32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -437,7 +437,7 @@ error[E0277]: `u16` cannot be safely transmuted into `f32`
|
|||||||
--> $DIR/numbers.rs:96:40
|
--> $DIR/numbers.rs:96:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, f32>();
|
LL | assert::is_transmutable::< u16, f32>();
|
||||||
| ^^^ The size of `u16` is smaller than the size of `f32`
|
| ^^^ the size of `u16` is smaller than the size of `f32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -452,7 +452,7 @@ error[E0277]: `u16` cannot be safely transmuted into `u32`
|
|||||||
--> $DIR/numbers.rs:97:40
|
--> $DIR/numbers.rs:97:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, u32>();
|
LL | assert::is_transmutable::< u16, u32>();
|
||||||
| ^^^ The size of `u16` is smaller than the size of `u32`
|
| ^^^ the size of `u16` is smaller than the size of `u32`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -467,7 +467,7 @@ error[E0277]: `u16` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:98:40
|
--> $DIR/numbers.rs:98:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, u64>();
|
LL | assert::is_transmutable::< u16, u64>();
|
||||||
| ^^^ The size of `u16` is smaller than the size of `u64`
|
| ^^^ the size of `u16` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -482,7 +482,7 @@ error[E0277]: `u16` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:99:40
|
--> $DIR/numbers.rs:99:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, i64>();
|
LL | assert::is_transmutable::< u16, i64>();
|
||||||
| ^^^ The size of `u16` is smaller than the size of `i64`
|
| ^^^ the size of `u16` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -497,7 +497,7 @@ error[E0277]: `u16` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:100:40
|
--> $DIR/numbers.rs:100:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, f64>();
|
LL | assert::is_transmutable::< u16, f64>();
|
||||||
| ^^^ The size of `u16` is smaller than the size of `f64`
|
| ^^^ the size of `u16` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -512,7 +512,7 @@ error[E0277]: `u16` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:101:39
|
--> $DIR/numbers.rs:101:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, u128>();
|
LL | assert::is_transmutable::< u16, u128>();
|
||||||
| ^^^^ The size of `u16` is smaller than the size of `u128`
|
| ^^^^ the size of `u16` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -527,7 +527,7 @@ error[E0277]: `u16` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:102:39
|
--> $DIR/numbers.rs:102:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u16, i128>();
|
LL | assert::is_transmutable::< u16, i128>();
|
||||||
| ^^^^ The size of `u16` is smaller than the size of `i128`
|
| ^^^^ the size of `u16` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -542,7 +542,7 @@ error[E0277]: `i32` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:104:40
|
--> $DIR/numbers.rs:104:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i32, u64>();
|
LL | assert::is_transmutable::< i32, u64>();
|
||||||
| ^^^ The size of `i32` is smaller than the size of `u64`
|
| ^^^ the size of `i32` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -557,7 +557,7 @@ error[E0277]: `i32` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:105:40
|
--> $DIR/numbers.rs:105:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i32, i64>();
|
LL | assert::is_transmutable::< i32, i64>();
|
||||||
| ^^^ The size of `i32` is smaller than the size of `i64`
|
| ^^^ the size of `i32` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -572,7 +572,7 @@ error[E0277]: `i32` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:106:40
|
--> $DIR/numbers.rs:106:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i32, f64>();
|
LL | assert::is_transmutable::< i32, f64>();
|
||||||
| ^^^ The size of `i32` is smaller than the size of `f64`
|
| ^^^ the size of `i32` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -587,7 +587,7 @@ error[E0277]: `i32` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:107:39
|
--> $DIR/numbers.rs:107:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i32, u128>();
|
LL | assert::is_transmutable::< i32, u128>();
|
||||||
| ^^^^ The size of `i32` is smaller than the size of `u128`
|
| ^^^^ the size of `i32` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -602,7 +602,7 @@ error[E0277]: `i32` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:108:39
|
--> $DIR/numbers.rs:108:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i32, i128>();
|
LL | assert::is_transmutable::< i32, i128>();
|
||||||
| ^^^^ The size of `i32` is smaller than the size of `i128`
|
| ^^^^ the size of `i32` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -617,7 +617,7 @@ error[E0277]: `f32` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:110:40
|
--> $DIR/numbers.rs:110:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f32, u64>();
|
LL | assert::is_transmutable::< f32, u64>();
|
||||||
| ^^^ The size of `f32` is smaller than the size of `u64`
|
| ^^^ the size of `f32` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -632,7 +632,7 @@ error[E0277]: `f32` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:111:40
|
--> $DIR/numbers.rs:111:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f32, i64>();
|
LL | assert::is_transmutable::< f32, i64>();
|
||||||
| ^^^ The size of `f32` is smaller than the size of `i64`
|
| ^^^ the size of `f32` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -647,7 +647,7 @@ error[E0277]: `f32` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:112:40
|
--> $DIR/numbers.rs:112:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f32, f64>();
|
LL | assert::is_transmutable::< f32, f64>();
|
||||||
| ^^^ The size of `f32` is smaller than the size of `f64`
|
| ^^^ the size of `f32` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -662,7 +662,7 @@ error[E0277]: `f32` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:113:39
|
--> $DIR/numbers.rs:113:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f32, u128>();
|
LL | assert::is_transmutable::< f32, u128>();
|
||||||
| ^^^^ The size of `f32` is smaller than the size of `u128`
|
| ^^^^ the size of `f32` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -677,7 +677,7 @@ error[E0277]: `f32` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:114:39
|
--> $DIR/numbers.rs:114:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f32, i128>();
|
LL | assert::is_transmutable::< f32, i128>();
|
||||||
| ^^^^ The size of `f32` is smaller than the size of `i128`
|
| ^^^^ the size of `f32` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -692,7 +692,7 @@ error[E0277]: `u32` cannot be safely transmuted into `u64`
|
|||||||
--> $DIR/numbers.rs:116:40
|
--> $DIR/numbers.rs:116:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u32, u64>();
|
LL | assert::is_transmutable::< u32, u64>();
|
||||||
| ^^^ The size of `u32` is smaller than the size of `u64`
|
| ^^^ the size of `u32` is smaller than the size of `u64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -707,7 +707,7 @@ error[E0277]: `u32` cannot be safely transmuted into `i64`
|
|||||||
--> $DIR/numbers.rs:117:40
|
--> $DIR/numbers.rs:117:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u32, i64>();
|
LL | assert::is_transmutable::< u32, i64>();
|
||||||
| ^^^ The size of `u32` is smaller than the size of `i64`
|
| ^^^ the size of `u32` is smaller than the size of `i64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -722,7 +722,7 @@ error[E0277]: `u32` cannot be safely transmuted into `f64`
|
|||||||
--> $DIR/numbers.rs:118:40
|
--> $DIR/numbers.rs:118:40
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u32, f64>();
|
LL | assert::is_transmutable::< u32, f64>();
|
||||||
| ^^^ The size of `u32` is smaller than the size of `f64`
|
| ^^^ the size of `u32` is smaller than the size of `f64`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -737,7 +737,7 @@ error[E0277]: `u32` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:119:39
|
--> $DIR/numbers.rs:119:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u32, u128>();
|
LL | assert::is_transmutable::< u32, u128>();
|
||||||
| ^^^^ The size of `u32` is smaller than the size of `u128`
|
| ^^^^ the size of `u32` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -752,7 +752,7 @@ error[E0277]: `u32` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:120:39
|
--> $DIR/numbers.rs:120:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u32, i128>();
|
LL | assert::is_transmutable::< u32, i128>();
|
||||||
| ^^^^ The size of `u32` is smaller than the size of `i128`
|
| ^^^^ the size of `u32` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -767,7 +767,7 @@ error[E0277]: `u64` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:122:39
|
--> $DIR/numbers.rs:122:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u64, u128>();
|
LL | assert::is_transmutable::< u64, u128>();
|
||||||
| ^^^^ The size of `u64` is smaller than the size of `u128`
|
| ^^^^ the size of `u64` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -782,7 +782,7 @@ error[E0277]: `u64` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:123:39
|
--> $DIR/numbers.rs:123:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< u64, i128>();
|
LL | assert::is_transmutable::< u64, i128>();
|
||||||
| ^^^^ The size of `u64` is smaller than the size of `i128`
|
| ^^^^ the size of `u64` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -797,7 +797,7 @@ error[E0277]: `i64` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:125:39
|
--> $DIR/numbers.rs:125:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i64, u128>();
|
LL | assert::is_transmutable::< i64, u128>();
|
||||||
| ^^^^ The size of `i64` is smaller than the size of `u128`
|
| ^^^^ the size of `i64` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -812,7 +812,7 @@ error[E0277]: `i64` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:126:39
|
--> $DIR/numbers.rs:126:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< i64, i128>();
|
LL | assert::is_transmutable::< i64, i128>();
|
||||||
| ^^^^ The size of `i64` is smaller than the size of `i128`
|
| ^^^^ the size of `i64` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -827,7 +827,7 @@ error[E0277]: `f64` cannot be safely transmuted into `u128`
|
|||||||
--> $DIR/numbers.rs:128:39
|
--> $DIR/numbers.rs:128:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f64, u128>();
|
LL | assert::is_transmutable::< f64, u128>();
|
||||||
| ^^^^ The size of `f64` is smaller than the size of `u128`
|
| ^^^^ the size of `f64` is smaller than the size of `u128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
@ -842,7 +842,7 @@ error[E0277]: `f64` cannot be safely transmuted into `i128`
|
|||||||
--> $DIR/numbers.rs:129:39
|
--> $DIR/numbers.rs:129:39
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::< f64, i128>();
|
LL | assert::is_transmutable::< f64, i128>();
|
||||||
| ^^^^ The size of `f64` is smaller than the size of `i128`
|
| ^^^^ the size of `f64` is smaller than the size of `i128`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/numbers.rs:14:14
|
--> $DIR/numbers.rs:14:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `()` cannot be safely transmuted into `u8`
|
|||||||
--> $DIR/unit.rs:31:35
|
--> $DIR/unit.rs:31:35
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<(), u8>();
|
LL | assert::is_transmutable::<(), u8>();
|
||||||
| ^^ The size of `()` is smaller than the size of `u8`
|
| ^^ the size of `()` is smaller than the size of `u8`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/unit.rs:16:14
|
--> $DIR/unit.rs:16:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `()` cannot be safely transmuted into `u8`
|
|||||||
--> $DIR/unit.rs:31:35
|
--> $DIR/unit.rs:31:35
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<(), u8>();
|
LL | assert::is_transmutable::<(), u8>();
|
||||||
| ^^ The size of `()` is smaller than the size of `u8`
|
| ^^ the size of `()` is smaller than the size of `u8`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/unit.rs:16:14
|
--> $DIR/unit.rs:16:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `B` cannot be safely transmuted into `A`
|
|||||||
--> $DIR/recursive-wrapper-types-bit-incompatible.rs:23:49
|
--> $DIR/recursive-wrapper-types-bit-incompatible.rs:23:49
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<&'static B, &'static A>();
|
LL | assert::is_maybe_transmutable::<&'static B, &'static A>();
|
||||||
| ^^^^^^^^^^ At least one value of `B` isn't a bit-valid value of `A`
|
| ^^^^^^^^^^ at least one value of `B` isn't a bit-valid value of `A`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/recursive-wrapper-types-bit-incompatible.rs:9:14
|
--> $DIR/recursive-wrapper-types-bit-incompatible.rs:9:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `&Packed<Two>` cannot be safely transmuted into `&Packed<Four>`
|
|||||||
--> $DIR/reject_extension.rs:48:37
|
--> $DIR/reject_extension.rs:48:37
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<&Src, &Dst>();
|
LL | assert::is_transmutable::<&Src, &Dst>();
|
||||||
| ^^^^ The referent size of `&Packed<Two>` (2 bytes) is smaller than that of `&Packed<Four>` (4 bytes)
|
| ^^^^ the referent size of `&Packed<Two>` (2 bytes) is smaller than that of `&Packed<Four>` (4 bytes)
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/reject_extension.rs:13:14
|
--> $DIR/reject_extension.rs:13:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `&Unit` cannot be safely transmuted into `&u8`
|
|||||||
--> $DIR/unit-to-u8.rs:22:52
|
--> $DIR/unit-to-u8.rs:22:52
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<&'static Unit, &'static u8>();
|
LL | assert::is_maybe_transmutable::<&'static Unit, &'static u8>();
|
||||||
| ^^^^^^^^^^^ The referent size of `&Unit` (0 bytes) is smaller than that of `&u8` (1 bytes)
|
| ^^^^^^^^^^^ the referent size of `&Unit` (0 bytes) is smaller than that of `&u8` (1 bytes)
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/unit-to-u8.rs:9:14
|
--> $DIR/unit-to-u8.rs:9:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `()` cannot be safely transmuted into `W<'_>`
|
|||||||
--> $DIR/region-infer.rs:18:5
|
--> $DIR/region-infer.rs:18:5
|
||||||
|
|
|
|
||||||
LL | test();
|
LL | test();
|
||||||
| ^^^^^^ The size of `()` is smaller than the size of `W<'_>`
|
| ^^^^^^ the size of `()` is smaller than the size of `W<'_>`
|
||||||
|
|
|
|
||||||
note: required by a bound in `test`
|
note: required by a bound in `test`
|
||||||
--> $DIR/region-infer.rs:10:12
|
--> $DIR/region-infer.rs:10:12
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `should_reject_repr_rust::unit::repr_rust` cannot be safely transm
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:27:52
|
--> $DIR/should_require_well_defined_layout.rs:27:52
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
||||||
| ^^ `should_reject_repr_rust::unit::repr_rust` does not have a well-specified layout
|
| ^^ analyzing the transmutability of `should_reject_repr_rust::unit::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -24,7 +24,7 @@ error[E0277]: `u128` cannot be safely transmuted into `should_reject_repr_rust::
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:28:47
|
--> $DIR/should_require_well_defined_layout.rs:28:47
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
||||||
| ^^^^^^^^^ `should_reject_repr_rust::unit::repr_rust` does not have a well-specified layout
|
| ^^^^^^^^^ analyzing the transmutability of `should_reject_repr_rust::unit::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -46,7 +46,7 @@ error[E0277]: `should_reject_repr_rust::tuple::repr_rust` cannot be safely trans
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:33:52
|
--> $DIR/should_require_well_defined_layout.rs:33:52
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
||||||
| ^^ `should_reject_repr_rust::tuple::repr_rust` does not have a well-specified layout
|
| ^^ analyzing the transmutability of `should_reject_repr_rust::tuple::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -68,7 +68,7 @@ error[E0277]: `u128` cannot be safely transmuted into `should_reject_repr_rust::
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:34:47
|
--> $DIR/should_require_well_defined_layout.rs:34:47
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
||||||
| ^^^^^^^^^ `should_reject_repr_rust::tuple::repr_rust` does not have a well-specified layout
|
| ^^^^^^^^^ analyzing the transmutability of `should_reject_repr_rust::tuple::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -90,7 +90,7 @@ error[E0277]: `should_reject_repr_rust::braces::repr_rust` cannot be safely tran
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:39:52
|
--> $DIR/should_require_well_defined_layout.rs:39:52
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
||||||
| ^^ `should_reject_repr_rust::braces::repr_rust` does not have a well-specified layout
|
| ^^ analyzing the transmutability of `should_reject_repr_rust::braces::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -112,7 +112,7 @@ error[E0277]: `u128` cannot be safely transmuted into `should_reject_repr_rust::
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:40:47
|
--> $DIR/should_require_well_defined_layout.rs:40:47
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
||||||
| ^^^^^^^^^ `should_reject_repr_rust::braces::repr_rust` does not have a well-specified layout
|
| ^^^^^^^^^ analyzing the transmutability of `should_reject_repr_rust::braces::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -134,7 +134,7 @@ error[E0277]: `aligned::repr_rust` cannot be safely transmuted into `()`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:45:52
|
--> $DIR/should_require_well_defined_layout.rs:45:52
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
||||||
| ^^ `aligned::repr_rust` does not have a well-specified layout
|
| ^^ analyzing the transmutability of `aligned::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -156,7 +156,7 @@ error[E0277]: `u128` cannot be safely transmuted into `aligned::repr_rust`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:46:47
|
--> $DIR/should_require_well_defined_layout.rs:46:47
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
||||||
| ^^^^^^^^^ `aligned::repr_rust` does not have a well-specified layout
|
| ^^^^^^^^^ analyzing the transmutability of `aligned::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -178,7 +178,7 @@ error[E0277]: `packed::repr_rust` cannot be safely transmuted into `()`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:51:52
|
--> $DIR/should_require_well_defined_layout.rs:51:52
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
||||||
| ^^ `packed::repr_rust` does not have a well-specified layout
|
| ^^ analyzing the transmutability of `packed::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -200,7 +200,7 @@ error[E0277]: `u128` cannot be safely transmuted into `packed::repr_rust`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:52:47
|
--> $DIR/should_require_well_defined_layout.rs:52:47
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
||||||
| ^^^^^^^^^ `packed::repr_rust` does not have a well-specified layout
|
| ^^^^^^^^^ analyzing the transmutability of `packed::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -222,7 +222,7 @@ error[E0277]: `nested::repr_c` cannot be safely transmuted into `()`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:58:49
|
--> $DIR/should_require_well_defined_layout.rs:58:49
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<repr_c, ()>();
|
LL | assert::is_maybe_transmutable::<repr_c, ()>();
|
||||||
| ^^ `nested::repr_c` does not have a well-specified layout
|
| ^^ analyzing the transmutability of `nested::repr_c` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -244,7 +244,7 @@ error[E0277]: `u128` cannot be safely transmuted into `nested::repr_c`
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:59:47
|
--> $DIR/should_require_well_defined_layout.rs:59:47
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<u128, repr_c>();
|
LL | assert::is_maybe_transmutable::<u128, repr_c>();
|
||||||
| ^^^^^^ `nested::repr_c` does not have a well-specified layout
|
| ^^^^^^ analyzing the transmutability of `nested::repr_c` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `B` cannot be safely transmuted into `A`
|
|||||||
--> $DIR/transmute-padding-ice.rs:25:40
|
--> $DIR/transmute-padding-ice.rs:25:40
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<B, A>();
|
LL | assert::is_maybe_transmutable::<B, A>();
|
||||||
| ^ The size of `B` is smaller than the size of `A`
|
| ^ the size of `B` is smaller than the size of `A`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/transmute-padding-ice.rs:10:14
|
--> $DIR/transmute-padding-ice.rs:10:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `should_reject_repr_rust::repr_rust` cannot be safely transmuted i
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:29:48
|
--> $DIR/should_require_well_defined_layout.rs:29:48
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
LL | assert::is_maybe_transmutable::<repr_rust, ()>();
|
||||||
| ^^ `should_reject_repr_rust::repr_rust` does not have a well-specified layout
|
| ^^ analyzing the transmutability of `should_reject_repr_rust::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
@ -24,7 +24,7 @@ error[E0277]: `u128` cannot be safely transmuted into `should_reject_repr_rust::
|
|||||||
--> $DIR/should_require_well_defined_layout.rs:30:43
|
--> $DIR/should_require_well_defined_layout.rs:30:43
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
LL | assert::is_maybe_transmutable::<u128, repr_rust>();
|
||||||
| ^^^^^^^^^ `should_reject_repr_rust::repr_rust` does not have a well-specified layout
|
| ^^^^^^^^^ analyzing the transmutability of `should_reject_repr_rust::repr_rust` is not yet supported.
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_require_well_defined_layout.rs:12:14
|
--> $DIR/should_require_well_defined_layout.rs:12:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `Src` cannot be safely transmuted into `Dst`
|
|||||||
--> $DIR/should_pad_variants.rs:43:36
|
--> $DIR/should_pad_variants.rs:43:36
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Src, Dst>();
|
LL | assert::is_transmutable::<Src, Dst>();
|
||||||
| ^^^ The size of `Src` is smaller than the size of `Dst`
|
| ^^^ the size of `Src` is smaller than the size of `Dst`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/should_pad_variants.rs:13:14
|
--> $DIR/should_pad_variants.rs:13:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `Superset` cannot be safely transmuted into `Subset`
|
|||||||
--> $DIR/should_reject_contraction.rs:34:41
|
--> $DIR/should_reject_contraction.rs:34:41
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<Superset, Subset>();
|
LL | assert::is_transmutable::<Superset, Subset>();
|
||||||
| ^^^^^^ At least one value of `Superset` isn't a bit-valid value of `Subset`
|
| ^^^^^^ at least one value of `Superset` isn't a bit-valid value of `Subset`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/should_reject_contraction.rs:12:14
|
--> $DIR/should_reject_contraction.rs:12:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `A` cannot be safely transmuted into `B`
|
|||||||
--> $DIR/should_reject_disjoint.rs:32:40
|
--> $DIR/should_reject_disjoint.rs:32:40
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<A, B>();
|
LL | assert::is_maybe_transmutable::<A, B>();
|
||||||
| ^ At least one value of `A` isn't a bit-valid value of `B`
|
| ^ at least one value of `A` isn't a bit-valid value of `B`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_reject_disjoint.rs:12:14
|
--> $DIR/should_reject_disjoint.rs:12:14
|
||||||
@ -17,7 +17,7 @@ error[E0277]: `B` cannot be safely transmuted into `A`
|
|||||||
--> $DIR/should_reject_disjoint.rs:33:40
|
--> $DIR/should_reject_disjoint.rs:33:40
|
||||||
|
|
|
|
||||||
LL | assert::is_maybe_transmutable::<B, A>();
|
LL | assert::is_maybe_transmutable::<B, A>();
|
||||||
| ^ At least one value of `B` isn't a bit-valid value of `A`
|
| ^ at least one value of `B` isn't a bit-valid value of `A`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_maybe_transmutable`
|
note: required by a bound in `is_maybe_transmutable`
|
||||||
--> $DIR/should_reject_disjoint.rs:12:14
|
--> $DIR/should_reject_disjoint.rs:12:14
|
||||||
|
@ -2,7 +2,7 @@ error[E0277]: `A` cannot be safely transmuted into `B`
|
|||||||
--> $DIR/should_reject_intersecting.rs:35:34
|
--> $DIR/should_reject_intersecting.rs:35:34
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<A, B>();
|
LL | assert::is_transmutable::<A, B>();
|
||||||
| ^ At least one value of `A` isn't a bit-valid value of `B`
|
| ^ at least one value of `A` isn't a bit-valid value of `B`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/should_reject_intersecting.rs:13:14
|
--> $DIR/should_reject_intersecting.rs:13:14
|
||||||
@ -17,7 +17,7 @@ error[E0277]: `B` cannot be safely transmuted into `A`
|
|||||||
--> $DIR/should_reject_intersecting.rs:36:34
|
--> $DIR/should_reject_intersecting.rs:36:34
|
||||||
|
|
|
|
||||||
LL | assert::is_transmutable::<B, A>();
|
LL | assert::is_transmutable::<B, A>();
|
||||||
| ^ At least one value of `B` isn't a bit-valid value of `A`
|
| ^ at least one value of `B` isn't a bit-valid value of `A`
|
||||||
|
|
|
|
||||||
note: required by a bound in `is_transmutable`
|
note: required by a bound in `is_transmutable`
|
||||||
--> $DIR/should_reject_intersecting.rs:13:14
|
--> $DIR/should_reject_intersecting.rs:13:14
|
||||||
|
@ -9,7 +9,7 @@ LL |
|
|||||||
LL | x.clone();
|
LL | x.clone();
|
||||||
| ^ value borrowed here after move
|
| ^ value borrowed here after move
|
||||||
|
|
|
|
||||||
note: calling this operator moves the left-hand side
|
note: calling this operator moves the value
|
||||||
--> $SRC_DIR/core/src/ops/bit.rs:LL:COL
|
--> $SRC_DIR/core/src/ops/bit.rs:LL:COL
|
||||||
help: consider cloning the value if the performance cost is acceptable
|
help: consider cloning the value if the performance cost is acceptable
|
||||||
|
|
|
|
||||||
@ -57,7 +57,7 @@ LL | !*m;
|
|||||||
| |move occurs because `*m` has type `T`, which does not implement the `Copy` trait
|
| |move occurs because `*m` has type `T`, which does not implement the `Copy` trait
|
||||||
| `*m` moved due to usage in operator
|
| `*m` moved due to usage in operator
|
||||||
|
|
|
|
||||||
note: calling this operator moves the left-hand side
|
note: calling this operator moves the value
|
||||||
--> $SRC_DIR/core/src/ops/bit.rs:LL:COL
|
--> $SRC_DIR/core/src/ops/bit.rs:LL:COL
|
||||||
|
|
||||||
error[E0507]: cannot move out of `*n` which is behind a shared reference
|
error[E0507]: cannot move out of `*n` which is behind a shared reference
|
||||||
|
Loading…
Reference in New Issue
Block a user