diff options
Diffstat (limited to 'compiler/rustc_transmute/src/lib.rs')
| -rw-r--r-- | compiler/rustc_transmute/src/lib.rs | 13 | 
1 files changed, 5 insertions, 8 deletions
| diff --git a/compiler/rustc_transmute/src/lib.rs b/compiler/rustc_transmute/src/lib.rs index c4a99d9eb89..baf63e6d3a2 100644 --- a/compiler/rustc_transmute/src/lib.rs +++ b/compiler/rustc_transmute/src/lib.rs @@ -19,15 +19,12 @@ pub struct Assume { pub validity: bool, } -/// The type encodes answers to the question: "Are these types transmutable?" -#[derive(Debug, Hash, Eq, PartialEq, PartialOrd, Ord, Clone)] -pub enum Answer<R> { - /// `Src` is transmutable into `Dst`. - Yes, - - /// `Src` is NOT transmutable into `Dst`. - No(Reason), +/// Either we have an error, or we have an optional Condition that must hold. +pub type Answer<R> = Result<Option<Condition<R>>, Reason>; +/// A condition which must hold for safe transmutation to be possible +#[derive(Debug, Hash, Eq, PartialEq, Clone)] +pub enum Condition<R> { /// `Src` is transmutable into `Dst`, if `src` is transmutable into `dst`. IfTransmutable { src: R, dst: R }, | 
