about summary refs log tree commit diff
path: root/src/libcore/macros.rs
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2014-11-17 11:29:38 -0800
committerAlex Crichton <alex@alexcrichton.com>2014-11-18 21:16:22 -0800
commit4af3494bb02e80badc978faa65e59625ade0c675 (patch)
tree566d9d1cce052d89b33ca69b1fe89e16c447b711 /src/libcore/macros.rs
parente09d98603e608c9e47d4c89f7b4dca87a4b56da3 (diff)
std: Stabilize std::fmt
This commit applies the stabilization of std::fmt as outlined in [RFC 380][rfc].
There are a number of breaking changes as a part of this commit which will need
to be handled to migrated old code:

* A number of formatting traits have been removed: String, Bool, Char, Unsigned,
  Signed, and Float. It is recommended to instead use Show wherever possible or
  to use adaptor structs to implement other methods of formatting.

* The format specifier for Boolean has changed from `t` to `b`.

* The enum `FormatError` has been renamed to `Error` as well as becoming a unit
  struct instead of an enum. The `WriteError` variant no longer exists.

* The `format_args_method!` macro has been removed with no replacement. Alter
  code to use the `format_args!` macro instead.

* The public fields of a `Formatter` have become read-only with no replacement.
  Use a new formatting string to alter the formatting flags in combination with
  the `write!` macro. The fields can be accessed through accessor methods on the
  `Formatter` structure.

Other than these breaking changes, the contents of std::fmt should now also all
contain stability markers. Most of them are still #[unstable] or #[experimental]

[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0380-stabilize-std-fmt.md
[breaking-change]

Closes #18904
Diffstat (limited to 'src/libcore/macros.rs')
-rw-r--r--src/libcore/macros.rs15
1 files changed, 4 insertions, 11 deletions
diff --git a/src/libcore/macros.rs b/src/libcore/macros.rs
index 9ba67bb2e47..9016f40b1b8 100644
--- a/src/libcore/macros.rs
+++ b/src/libcore/macros.rs
@@ -108,7 +108,10 @@ macro_rules! try(
 /// Writing a formatted string into a writer
 #[macro_export]
 macro_rules! write(
-    ($dst:expr, $($arg:tt)*) => (format_args_method!($dst, write_fmt, $($arg)*))
+    ($dst:expr, $($arg:tt)*) => ({
+        let dst = &mut *$dst;
+        format_args!(|args| { dst.write_fmt(args) }, $($arg)*)
+    })
 )
 
 /// Writing a formatted string plus a newline into a writer
@@ -119,15 +122,5 @@ macro_rules! writeln(
     )
 )
 
-/// Write some formatted data into a stream.
-///
-/// Identical to the macro in `std::macros`
-#[macro_export]
-macro_rules! write(
-    ($dst:expr, $($arg:tt)*) => ({
-        format_args_method!($dst, write_fmt, $($arg)*)
-    })
-)
-
 #[macro_export]
 macro_rules! unreachable( () => (panic!("unreachable code")) )