1use core::hint::unreachable_unchecked;
8use core::mem::MaybeUninit;
9
10use crate::{Constrained, Encode, EncodeError, Slot, ValidationError, Wire};
11
12pub enum Never {}
14
15impl Constrained for Never {
16 type Constraint = ();
17
18 fn validate(_: Slot<'_, Self>, _: Self::Constraint) -> Result<(), ValidationError> {
19 Ok(())
20 }
21}
22
23unsafe impl<W: Wire, E: ?Sized> Encode<W, E> for Never {
24 fn encode(
25 self,
26 _: &mut E,
27 _: &mut MaybeUninit<W>,
28 _: W::Constraint,
29 ) -> Result<(), EncodeError> {
30 unsafe { unreachable_unchecked() }
32 }
33}