Poly uses reflection, is fairly slow, and is intended only for
debugging. `{}` is used for lots of things. It's used quite novelly
for HTML formatting in rustdoc.

On Mon, Nov 11, 2013 at 6:55 AM, spir <[email protected]> wrote:
> Hello,
>
> Well, I wonder if we could exchange those formats. Here is how they work:
>
> fn main () {
>     struct P {i:uint, j:uint};
>     let (b, u, i, x, c, s, a, p) =
>         (false, 1u, -1, -1.11, 'c', "abc", [1,2,3], P{i:1,j:2});
>     let z : Option<uint> = None;
>
>     // Poly
>     println!("{:?} {:?} {:?} {:?} {:?} {:?} {:?} {:?} {:?}",
>         b, u, i, x, c, s, a, p, z);
>     // ==> false 1u -1 -1.11 'c' "abc" [1, 2, 3] main::P{i: 1u, j: 2u}
>
>     // Standard
>     println!("{} {} {} {} {} {}",
>         b, u, i, x, c, s);
>     // ==> false 1 -1 -1.11 c abc
> }
>
> The format 'Poly" {:?}:
> * works for all types, including app defined, does not require trait
> definition or declaration
> * just does the right thing, telling the programmer all what is needed
>   in an exact and complete manner (except "main::" is too much maybe)
>
> The format 'Standard' {}:
> * requires definition of trait 'Standard' for complex types (arrays,
> structs, enums), as well as its declaration for type variables
> * is ambiguous about chars and strings, as well integers (signed?)
>
> In other words, 'poly' gives us back the notation of data, as we (would)
> have noted them in code. Also, its tells us the type, if implicitely, except
> for the exact size of a number. This information is what we need in the
> general case for all kinds of feedback in program testing, diagnosis,
> debugging... The standard notation of data is not always the best possible
> form, but it always does the job and we are used to it. I guess we'll
> constantly use it for our own feedback.
>
> For this reason, I'd like to exchange the notations of these formats: have
> Poly be {} so that we are less annoyed at typing it. And call with a
> meaningful name, such as Notation, Literal or... Standard.
>
> I have no idea what the other format (the one currently noted {} and called
> Standard) is good for. I'd say it can be used as part of user output, but we
> already have good type-specific formats for that. Maybe this format is a
> polyvalent form of those specialised formats, so that we don't need to
> choose: then call *this one* "poly"... Also, noting this one {:?} would make
> sense.
>
> Denis
>
>
> _______________________________________________
> Rust-dev mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/rust-dev
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to