|
1 |
| -/// Prints to the standard output. |
2 |
| -/// |
3 |
| -/// Equivalent to the [`println!`] macro except that a newline is not printed at |
4 |
| -/// the end of the message. |
5 |
| -/// |
6 |
| -/// Note that stdout is frequently line-buffered by default so it may be |
7 |
| -/// necessary to use [`io::stdout().flush()`][flush] to ensure the output is emitted |
8 |
| -/// immediately. |
9 |
| -/// |
10 |
| -/// Use `print!` only for the primary output of your program. Use |
11 |
| -/// [`eprint!`] instead to print error and progress messages. |
12 |
| -/// |
13 |
| -/// [`println!`]: macro.println.html |
14 |
| -/// [flush]: io/trait.Write.html#tymethod.flush |
15 |
| -/// [`eprint!`]: macro.eprint.html |
16 |
| -/// |
17 |
| -/// # Panics |
18 |
| -/// |
19 |
| -/// Panics if writing to `io::stdout()` fails. |
20 |
| -/// |
21 |
| -/// # Examples |
22 |
| -/// |
23 |
| -/// ``` |
24 |
| -/// # async_std::task::block_on(async { |
25 |
| -/// # |
26 |
| -/// use async_std::io; |
27 |
| -/// use async_std::prelude::*; |
28 |
| -/// use async_std::print; |
29 |
| -/// |
30 |
| -/// print!("this ").await; |
31 |
| -/// print!("will ").await; |
32 |
| -/// print!("be ").await; |
33 |
| -/// print!("on ").await; |
34 |
| -/// print!("the ").await; |
35 |
| -/// print!("same ").await; |
36 |
| -/// print!("line ").await; |
37 |
| -/// |
38 |
| -/// io::stdout().flush().await.unwrap(); |
39 |
| -/// |
40 |
| -/// print!("this string has a newline, why not choose println! instead?\n").await; |
41 |
| -/// |
42 |
| -/// io::stdout().flush().await.unwrap(); |
43 |
| -/// # |
44 |
| -/// # }) |
45 |
| -/// ``` |
46 |
| -#[cfg(feature = "unstable")] |
47 |
| -#[cfg_attr(feature = "docs", doc(cfg(unstable)))] |
48 |
| -#[macro_export] |
49 |
| -macro_rules! print { |
50 |
| - ($($arg:tt)*) => ($crate::io::_print(format_args!($($arg)*))) |
51 |
| -} |
52 |
| - |
53 |
| -/// Prints to the standard output, with a newline. |
54 |
| -/// |
55 |
| -/// On all platforms, the newline is the LINE FEED character (`\n`/`U+000A`) alone |
56 |
| -/// (no additional CARRIAGE RETURN (`\r`/`U+000D`)). |
57 |
| -/// |
58 |
| -/// Use the [`format!`] syntax to write data to the standard output. |
59 |
| -/// See [`std::fmt`] for more information. |
60 |
| -/// |
61 |
| -/// Use `println!` only for the primary output of your program. Use |
62 |
| -/// [`eprintln!`] instead to print error and progress messages. |
63 |
| -/// |
64 |
| -/// [`format!`]: macro.format.html |
65 |
| -/// [`std::fmt`]: https://doc.rust-lang.org/std/fmt/index.html |
66 |
| -/// [`eprintln!`]: macro.eprintln.html |
67 |
| -/// # Panics |
68 |
| -/// |
69 |
| -/// Panics if writing to `io::stdout` fails. |
70 |
| -/// |
71 |
| -/// # Examples |
72 |
| -/// |
73 |
| -/// ``` |
74 |
| -/// # async_std::task::block_on(async { |
75 |
| -/// # |
76 |
| -/// use async_std::println; |
77 |
| -/// |
78 |
| -/// println!().await; // prints just a newline |
79 |
| -/// println!("hello there!").await; |
80 |
| -/// println!("format {} arguments", "some").await; |
81 |
| -/// # |
82 |
| -/// # }) |
83 |
| -/// ``` |
84 |
| -#[cfg(feature = "unstable")] |
85 |
| -#[cfg_attr(feature = "docs", doc(cfg(unstable)))] |
86 |
| -#[macro_export] |
87 |
| -macro_rules! println { |
88 |
| - () => ($crate::print!("\n")); |
89 |
| - ($($arg:tt)*) => (async { |
90 |
| - $crate::io::_print(format_args!($($arg)*)).await; |
91 |
| - $crate::io::_print(format_args!("\n")).await; |
92 |
| - }) |
93 |
| -} |
94 |
| - |
95 |
| -/// Prints to the standard error. |
96 |
| -/// |
97 |
| -/// Equivalent to the [`print!`] macro, except that output goes to |
98 |
| -/// [`io::stderr`] instead of `io::stdout`. See [`print!`] for |
99 |
| -/// example usage. |
100 |
| -/// |
101 |
| -/// Use `eprint!` only for error and progress messages. Use `print!` |
102 |
| -/// instead for the primary output of your program. |
103 |
| -/// |
104 |
| -/// [`io::stderr`]: io/struct.Stderr.html |
105 |
| -/// [`print!`]: macro.print.html |
106 |
| -/// |
107 |
| -/// # Panics |
108 |
| -/// |
109 |
| -/// Panics if writing to `io::stderr` fails. |
110 |
| -/// |
111 |
| -/// # Examples |
112 |
| -/// |
113 |
| -/// ``` |
114 |
| -/// # async_std::task::block_on(async { |
115 |
| -/// # |
116 |
| -/// use async_std::eprint; |
117 |
| -/// |
118 |
| -/// eprint!("Error: Could not complete task").await; |
119 |
| -/// # |
120 |
| -/// # }) |
121 |
| -/// ``` |
122 |
| -#[cfg(feature = "unstable")] |
123 |
| -#[cfg_attr(feature = "docs", doc(cfg(unstable)))] |
124 |
| -#[macro_export] |
125 |
| -macro_rules! eprint { |
126 |
| - ($($arg:tt)*) => ($crate::io::_eprint(format_args!($($arg)*))) |
127 |
| -} |
128 |
| - |
129 |
| -/// Prints to the standard error, with a newline. |
130 |
| -/// |
131 |
| -/// Equivalent to the [`println!`] macro, except that output goes to |
132 |
| -/// [`io::stderr`] instead of `io::stdout`. See [`println!`] for |
133 |
| -/// example usage. |
134 |
| -/// |
135 |
| -/// Use `eprintln!` only for error and progress messages. Use `println!` |
136 |
| -/// instead for the primary output of your program. |
137 |
| -/// |
138 |
| -/// [`io::stderr`]: io/struct.Stderr.html |
139 |
| -/// [`println!`]: macro.println.html |
140 |
| -/// |
141 |
| -/// # Panics |
142 |
| -/// |
143 |
| -/// Panics if writing to `io::stderr` fails. |
144 |
| -/// |
145 |
| -/// # Examples |
146 |
| -/// |
147 |
| -/// ``` |
148 |
| -/// # async_std::task::block_on(async { |
149 |
| -/// # |
150 |
| -/// use async_std::eprintln; |
151 |
| -/// |
152 |
| -/// eprintln!("Error: Could not complete task").await; |
153 |
| -/// # |
154 |
| -/// # }) |
155 |
| -/// ``` |
156 |
| -#[cfg(feature = "unstable")] |
157 |
| -#[cfg_attr(feature = "docs", doc(cfg(unstable)))] |
158 |
| -#[macro_export] |
159 |
| -macro_rules! eprintln { |
160 |
| - () => (async { $crate::eprint!("\n").await; }); |
161 |
| - ($($arg:tt)*) => ( |
162 |
| - async { |
163 |
| - $crate::io::_eprint(format_args!($($arg)*)).await; |
164 |
| - $crate::io::_eprint(format_args!("\n")).await; |
165 |
| - } |
166 |
| - ); |
167 |
| -} |
168 |
| - |
169 | 1 | /// Declares task-local values.
|
170 | 2 | ///
|
171 | 3 | /// The macro wraps any number of static declarations and makes them task-local. Attributes and
|
|
0 commit comments