about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorMara Bos <m-ou.se@m-ou.se>2020-07-05 16:00:35 +0200
committerMara Bos <m-ou.se@m-ou.se>2020-07-17 15:35:59 +0200
commite17c17a1af4cd7dee069088c7ae682480179e810 (patch)
tree5458b92ca30d2ce4d34f9318df1f7536f1715954 /src/libcore
parentbc4e33e6c1250a51fb1b57af085a0dc89853eb17 (diff)
downloadrust-e17c17a1af4cd7dee069088c7ae682480179e810.tar.gz
rust-e17c17a1af4cd7dee069088c7ae682480179e810.zip
Make Arguments::as_str() work for empty format strings.
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/fmt/mod.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/libcore/fmt/mod.rs b/src/libcore/fmt/mod.rs
index fdebf785b31..d16f8b5ac9a 100644
--- a/src/libcore/fmt/mod.rs
+++ b/src/libcore/fmt/mod.rs
@@ -436,12 +436,17 @@ impl<'a> Arguments<'a> {
     /// #![feature(fmt_as_str)]
     ///
     /// assert_eq!(format_args!("hello").as_str(), Some("hello"));
+    /// assert_eq!(format_args!("").as_str(), Some(""));
     /// assert_eq!(format_args!("{}", 1).as_str(), None);
     /// ```
     #[unstable(feature = "fmt_as_str", issue = "none")]
     #[inline]
     pub fn as_str(&self) -> Option<&'a str> {
-        if self.args.is_empty() && self.pieces.len() == 1 { Some(self.pieces[0]) } else { None }
+        match (self.pieces, self.args) {
+            ([], []) => Some(""),
+            ([s], []) => Some(s),
+            _ => None,
+        }
     }
 }