// check-pass pub trait Archive { type Archived; } impl Archive for Option { type Archived = (); } pub type Archived = ::Archived; pub trait Deserialize {} const ARRAY_SIZE: usize = 32; impl<__D> Deserialize<__D> for () where Option<[u8; ARRAY_SIZE]>: Archive, Option<[u8; ARRAY_SIZE]>: Archive, Archived>: Deserialize<__D>, { } fn main() {}