Shoot. I was hoping it would be possible to approximate https://www.microsoft.com/en-us/research/wp-content/uploads/2016/11/trees-that-grow.pdf in Rust without HKTs using this technique, but the compiler seems to lack the ability to reason about impossible constructors when calculating object size: ```rust #![feature(never_type)] struct L { v: Result<(A, [u8;32]), (B, [u8; 64])>, } impl L { fn extractLeft(&self) -> [u8;32] { match &self.v { Ok((a, i)) => *i, Err((impossible, _)) => *impossible, } } } pub fn main(){ let v : L<(),!> = L{v:Ok(((), [0;32]))}; println!("{}", core::mem::size_of::>()) } ``` The above prints `65`, so rustc is not pruning the impossible `Err` constructor