1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
mod riot_fmt { extern { pub fn print(ptr : *const u8, len : usize) -> (); } extern { pub fn print_u32_dec(n : u32) -> (); } extern { pub fn print_s32_dec(n : i32) -> (); } extern { pub fn print_u64_dec(n : u64) -> (); } } pub trait Print { fn print(self) -> (); } pub fn print<T: Print> (x: T) { x.print(); } pub fn printnl() { "\n".print(); } impl<'a> Print for &'a str { fn print(self) -> () { unsafe { riot_fmt::print(self.as_ptr(), self.len()); } } } impl Print for u32 { fn print(self) -> () { unsafe { riot_fmt::print_u32_dec(self); } } } impl Print for i32 { fn print(self) -> () { unsafe { riot_fmt::print_s32_dec(self); } } } impl Print for u64 { fn print(self) -> () { unsafe { riot_fmt::print_u64_dec(self); } } }