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