Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

std: Rename Show/String to Debug/Display #21457

Merged
merged 1 commit into from
Jan 22, 2015

Conversation

alexcrichton
Copy link
Member

This commit is an implementation of RFC 565 which is a stabilization of
the std::fmt module and the implementations of various formatting traits.
Specifically, the following changes were performed:

  • The Show trait is now deprecated, it was renamed to Debug
  • The String trait is now deprecated, it was renamed to Display
  • Many Debug and Display implementations were audited in accordance with the
    RFC and audited implementations now have the #[stable] attribute
    • Integers and floats no longer print a suffix
    • Smart pointers no longer print details that they are a smart pointer
    • Paths with Debug are now quoted and escape characters
  • The unwrap methods on Result now require Display instead of Debug
  • The Error trait no longer has a detail method and now requires that
    Display must be implemented. With the loss of String, this has moved into
    libcore.
  • impl<E: Error> FromError<E> for Box<Error> now exists
  • derive(Show) has been renamed to derive(Debug). This is not currently
    warned about due to warnings being emitted on stage1+

While backwards compatibility is attempted to be maintained with a blanket
implementation of Display for the old String trait (and the same for
Show/Debug) this is still a breaking change due to primitives no longer
implementing String as well as modifications such as unwrap and the Error
trait. Most code is fairly straightforward to update with a rename or tweaks of
method calls.

[breaking-change]
Closes #21436

@rust-highfive
Copy link
Collaborator

r? @brson

(rust_highfive has picked a reviewer for you, use r? to override)

@alexcrichton
Copy link
Member Author

r? @aturon

This commit is an implementation of [RFC 565][rfc] which is a stabilization of
the `std::fmt` module and the implementations of various formatting traits.
Specifically, the following changes were performed:

[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0565-show-string-guidelines.md

* The `Show` trait is now deprecated, it was renamed to `Debug`
* The `String` trait is now deprecated, it was renamed to `Display`
* Many `Debug` and `Display` implementations were audited in accordance with the
  RFC and audited implementations now have the `#[stable]` attribute
  * Integers and floats no longer print a suffix
  * Smart pointers no longer print details that they are a smart pointer
  * Paths with `Debug` are now quoted and escape characters
* The `unwrap` methods on `Result` now require `Display` instead of `Debug`
* The `Error` trait no longer has a `detail` method and now requires that
  `Display` must be implemented. With the loss of `String`, this has moved into
  libcore.
* `impl<E: Error> FromError<E> for Box<Error>` now exists
* `derive(Show)` has been renamed to `derive(Debug)`. This is not currently
  warned about due to warnings being emitted on stage1+

While backwards compatibility is attempted to be maintained with a blanket
implementation of `Display` for the old `String` trait (and the same for
`Show`/`Debug`) this is still a breaking change due to primitives no longer
implementing `String` as well as modifications such as `unwrap` and the `Error`
trait. Most code is fairly straightforward to update with a rename or tweaks of
method calls.

[breaking-change]
Closes rust-lang#21436
@aturon
Copy link
Member

aturon commented Jan 21, 2015

Nicely done, @alexcrichton!

@bors: r+ 3cb9fa2

alexcrichton added a commit to alexcrichton/rust that referenced this pull request Jan 21, 2015
Conflicts:
	src/liballoc/boxed.rs
	src/librustc/middle/traits/error_reporting.rs
	src/libstd/sync/mpsc/mod.rs
@aturon aturon mentioned this pull request Jan 21, 2015
38 tasks
@bors bors merged commit 3cb9fa2 into rust-lang:master Jan 22, 2015
@ahmedcharles
Copy link
Contributor

This seems to have broken make check-stage1:

src/compiletest/common.rs:16:28: 16:33 error: unknown derive trait: Debug

ianbollinger added a commit to ianbollinger/docopt.rs that referenced this pull request Jan 23, 2015
This commit replaces usage of the Show and fmt::String traits with
the Debug and Display traits. This was required to fix breaking
changes introduced by rust-lang/rust#21457. Additionally, the
superfluous `detail` method on `docopt::Error` was removed as it no
longer exists in the trait. Also, hi!
@alexcrichton alexcrichton deleted the issue-21436 branch February 4, 2015 18:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Audit fmt::{Display,Debug} implementations (also rename from String/Show)
6 participants