mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-18 03:25:55 +00:00
28 lines
492 B
Rust
28 lines
492 B
Rust
//@ known-bug: #105937
|
|
//@ compile-flags: -Copt-level=0
|
|
|
|
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 Error;
|
|
|
|
impl ExampleWriter for Error {
|
|
type Error = ();
|
|
}
|
|
|
|
fn main() {
|
|
encode_num(69, &mut Error).unwrap();
|
|
}
|