ferris_print/
lib.rs

1pub extern crate ferris_says;
2
3#[macro_export]
4macro_rules! ferrisprint {
5($fmt:expr) => {
6        {
7            use std::io::{stdout, BufWriter};
8            let stdout = stdout();
9            let width = 24;
10            let mut writer = BufWriter::new(stdout.lock());
11            $crate::ferris_says::say(concat!($fmt).as_bytes(), width, &mut writer).unwrap();
12        }
13    };
14($fmt:expr, $($arg:tt)*) => {
15        {
16            use std::io::{stdout, BufWriter};
17            let stdout = stdout();
18            let width = 24;
19            let mut writer = BufWriter::new(stdout.lock());
20            $crate::ferris_says::say(format!(concat!($fmt), $($arg)*).as_bytes(), width, &mut writer).unwrap();
21        }
22    };
23}
24
25#[cfg(test)]
26mod tests {
27    #[test]
28    fn ferrisprint_macro_works() {
29        ferrisprint!("hola");
30        let str = "ok";
31        ferrisprint!("hey {}", &str);
32    }
33
34    #[test]
35    fn ferrisprint_macro_works_with_multiple_arguments() {
36        ferrisprint!("I am {} the {}", "ferris", "crab");
37    }
38}