about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/macros.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/libstd/macros.rs b/src/libstd/macros.rs
index e245a048955..9eba76cc04a 100644
--- a/src/libstd/macros.rs
+++ b/src/libstd/macros.rs
@@ -321,6 +321,15 @@ macro_rules! eprintln {
 /// assert_eq!(dbg!(1usize, 2u32), (1, 2));
 /// ```
 ///
+/// However, a single argument with a trailing comma will still not be treated
+/// as a tuple, following the convention of ignoring trailing commas in macro
+/// invocations. You can use a 1-tuple directly if you need one:
+///
+/// ```
+/// assert_eq!(1, dbg!(1u32,)); // trailing comma ignored
+/// assert_eq!((1,), dbg!((1u32,))); // 1-tuple
+/// ```
+///
 /// [stderr]: https://en.wikipedia.org/wiki/Standard_streams#Standard_error_(stderr)
 /// [`debug!`]: https://docs.rs/log/*/log/macro.debug.html
 /// [`log`]: https://crates.io/crates/log
@@ -341,9 +350,11 @@ macro_rules! dbg {
             }
         }
     };
+    // Trailing comma with single argument is ignored
+    ($val:expr,) => { dbg!($val) };
     ($($val:expr),+ $(,)?) => {
         ($(dbg!($val)),+,)
-    }
+    };
 }
 
 /// Awaits the completion of an async call.