2024-02-16 20:02:50 +00:00
|
|
|
//@ build-fail
|
|
|
|
//@ known-bug: #95134
|
|
|
|
//@ compile-flags: -Copt-level=0
|
|
|
|
//@ dont-check-failure-status
|
|
|
|
//@ dont-check-compiler-stderr
|
2022-11-19 20:03:14 +00:00
|
|
|
|
|
|
|
pub fn encode_num<Writer: ExampleWriter>(n: u32, mut writer: Writer) -> Result<(), Writer::Error> {
|
|
|
|
if n > 15 {
|
|
|
|
encode_num(n / 16, &mut writer)?;
|
|
|
|
}
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
|
|
|
|
pub trait ExampleWriter {
|
|
|
|
type Error;
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<'a, T: ExampleWriter> ExampleWriter for &'a mut T {
|
|
|
|
type Error = T::Error;
|
|
|
|
}
|
|
|
|
|
|
|
|
struct EmptyWriter;
|
|
|
|
|
|
|
|
impl ExampleWriter for EmptyWriter {
|
|
|
|
type Error = ();
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
encode_num(69, &mut EmptyWriter).unwrap();
|
|
|
|
}
|