// revisions: rpass #![feature(generic_const_exprs)] #![allow(incomplete_features)] pub trait IsTrue {} pub trait IsFalse {} pub struct Assert {} impl IsTrue for Assert {} impl IsFalse for Assert {} pub struct SliceConstWriter<'a, const N: usize> { ptr: &'a mut [u8], } impl<'a, const N: usize> SliceConstWriter<'a, { N }> { pub fn from_slice(vec: &'a mut [u8]) -> Self { Self { ptr: vec } } pub fn convert(mut self) -> SliceConstWriter<'a, { NN }> { SliceConstWriter { ptr: self.ptr } } } impl<'a, const N: usize> SliceConstWriter<'a, { N }> where Assert<{ N >= 2 }>: IsTrue, { pub fn write_u8(mut self) -> SliceConstWriter<'a, { N - 2 }> { self.convert() } } fn main() {}