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
pub extern crate ferris_says; #[macro_export] macro_rules! ferrisprint { ($fmt:expr) => { { use std::io::{stdout, BufWriter}; let stdout = stdout(); let width = 24; let mut writer = BufWriter::new(stdout.lock()); $crate::ferris_says::say(concat!($fmt).as_bytes(), width, &mut writer).unwrap(); } }; ($fmt:expr, $($arg:tt)*) => { { use std::io::{stdout, BufWriter}; let stdout = stdout(); let width = 24; let mut writer = BufWriter::new(stdout.lock()); $crate::ferris_says::say(format!(concat!($fmt), $($arg)*).as_bytes(), width, &mut writer).unwrap(); } }; } #[cfg(test)] mod tests { #[test] fn ferrisprint_macro_works() { ferrisprint!("hola"); let str = "ok"; ferrisprint!("hey {}", &str); } #[test] fn ferrisprint_macro_works_with_multiple_arguments() { ferrisprint!("I am {} the {}", "ferris", "crab"); } }