diff options
| author | Huon Wilson <dbau.pp+github@gmail.com> | 2014-01-31 21:32:39 +1100 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2014-02-02 14:19:05 +1100 |
| commit | d8b6919d4fcd1b69494278bb4472e095e2cd52f3 (patch) | |
| tree | 92da37db20ade45e9fd1e86c599b5caceb87d533 /src/libstd | |
| parent | 003ce502350ed1e374b740ee2d719e500c165615 (diff) | |
| download | rust-d8b6919d4fcd1b69494278bb4472e095e2cd52f3.tar.gz rust-d8b6919d4fcd1b69494278bb4472e095e2cd52f3.zip | |
std::fmt: prepare to convert the formatting traits to methods, and work
around the lack of UFCS. The further work is pending a snapshot, to avoid putting #[cfg(stage0)] attributes on all the traits and duplicating them.
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/fmt/mod.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/libstd/fmt/mod.rs b/src/libstd/fmt/mod.rs index 435e5568b8f..14bf0206c28 100644 --- a/src/libstd/fmt/mod.rs +++ b/src/libstd/fmt/mod.rs @@ -606,6 +606,41 @@ pub trait LowerExp { fn fmt(&Self, &mut Formatter); } #[allow(missing_doc)] pub trait UpperExp { fn fmt(&Self, &mut Formatter); } +// FIXME #11938 - UFCS would make us able call the above methods +// directly Show::show(x, fmt). + +// FIXME(huonw's WIP): this is a intermediate state waiting for a +// snapshot (at the time of writing we're at 2014-01-20 b6400f9), to +// be able to make the `fmt` functions into normal methods and have +// `format!()` still work. +macro_rules! uniform_fn_call_workaround { + ($( $name: ident, $trait_: ident; )*) => { + $( + #[doc(hidden)] + pub fn $name<T: $trait_>(x: &T, fmt: &mut Formatter) { + $trait_::fmt(x, fmt) + } + )* + } +} +uniform_fn_call_workaround! { + secret_show, Show; + secret_bool, Bool; + secret_char, Char; + secret_signed, Signed; + secret_unsigned, Unsigned; + secret_octal, Octal; + secret_binary, Binary; + secret_lower_hex, LowerHex; + secret_upper_hex, UpperHex; + secret_string, String; + secret_poly, Poly; + secret_pointer, Pointer; + secret_float, Float; + secret_lower_exp, LowerExp; + secret_upper_exp, UpperExp; +} + /// The `write` function takes an output stream, a precompiled format string, /// and a list of arguments. The arguments will be formatted according to the /// specified format string into the output stream provided. |
