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 {
25 fn encode(
26 self,
27 _: &mut E,
28 _: &mut MaybeUninit<W>,
29 _: W::Constraint,
30 ) -> Result<(), EncodeError> {
31 unsafe { unreachable_unchecked() }
33 }
34}