-
Notifications
You must be signed in to change notification settings - Fork 0
/
lib.rs
41 lines (39 loc) · 962 Bytes
/
lib.rs
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
//! Macro `echo!` and `echon!` print values separated by spaces without the
//! need to specify `"{}"` format strings, similar to Linux `echo` and
//! `echo -n` commands.
//!
//! To use the macro, you'll need to include the following declarations
//! at the top level of your crate:
//!
//! ```ignore
//! #![feature(phase)]
//! #[phase(plugin)] extern crate echo;
//! ```
//!
//! Then you can invoke it as follows:
//!
//! ```ignore
//! let a = 0u;
//! let b = vec![2i, 4, 6];
//! // 0 [2, 4, 6] true
//! echo!(a, b, true);
//! // 0 (without newline)
//! echon!(a);
//! ```
#![feature(macro_rules)]
#[macro_export]
/// Print space-separated values with newline
macro_rules! echo {
($($arg:tt)*) => ({
echon!($($arg)*)
println!("")
});
}
#[macro_export]
/// Print space-separated values without newline
macro_rules! echon {
($head:expr $(, $tail:expr)*) => ({
print!("{}", $head);
$(print!(" {}", $tail);)*
});
}