about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libcollections/fmt.rs3
-rw-r--r--src/libcollections/macros.rs6
-rw-r--r--src/libcollections/string.rs9
3 files changed, 16 insertions, 2 deletions
diff --git a/src/libcollections/fmt.rs b/src/libcollections/fmt.rs
index 079541235a2..dfd292176d2 100644
--- a/src/libcollections/fmt.rs
+++ b/src/libcollections/fmt.rs
@@ -524,6 +524,7 @@ use string;
 pub fn format(args: Arguments) -> string::String {
     let capacity = args.estimated_capacity();
     let mut output = string::String::with_capacity(capacity);
-    let _ = output.write_fmt(args);
+    output.write_fmt(args)
+          .expect("a formatting trait implementation returned an error");
     output
 }
diff --git a/src/libcollections/macros.rs b/src/libcollections/macros.rs
index 3115be00a4d..396a917dfde 100644
--- a/src/libcollections/macros.rs
+++ b/src/libcollections/macros.rs
@@ -72,6 +72,12 @@ macro_rules! vec {
 ///
 /// [fmt]: ../std/fmt/index.html
 ///
+/// # Panics
+///
+/// `format!` panics if a formatting trait implementation returns an error.
+/// This indicates an incorrect implementation
+/// since `fmt::Write for String` never returns an error itself.
+///
 /// # Examples
 ///
 /// ```
diff --git a/src/libcollections/string.rs b/src/libcollections/string.rs
index 10bc5ab88c9..a8942619cea 100644
--- a/src/libcollections/string.rs
+++ b/src/libcollections/string.rs
@@ -1888,13 +1888,20 @@ pub trait ToString {
     fn to_string(&self) -> String;
 }
 
+/// # Panics
+///
+/// In this implementation, the `to_string` method panics
+/// if the `Display` implementation returns an error.
+/// This indicates an incorrect `Display` implementation
+/// since `fmt::Write for String` never returns an error itself.
 #[stable(feature = "rust1", since = "1.0.0")]
 impl<T: fmt::Display + ?Sized> ToString for T {
     #[inline]
     default fn to_string(&self) -> String {
         use core::fmt::Write;
         let mut buf = String::new();
-        let _ = buf.write_fmt(format_args!("{}", self));
+        buf.write_fmt(format_args!("{}", self))
+           .expect("a Display implementation return an error unexpectedly");
         buf.shrink_to_fit();
         buf
     }