mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +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();
|
||
|
}
|