Rollup merge of #127134 - tgross35:typeid-debug, r=Nilstrieb

Print `TypeId` as a `u128` for `Debug`

Since <https://github.com/rust-lang/rust/pull/121358>, `TypeId` is represented as a `(u64, u64)`. This also made the debug implementation a lot larger, which is especially apparent with pretty formatting.

Change this to convert the inner value back to a `u128` and then print as a tuple struct to make this less noisy.

Current:

    TypeId { t: (1403077013027291752, 4518903163082958039) }
    TypeId {
        t: (
            1403077013027291752,
            4518903163082958039,
        ),
    }

New:

    TypeId(25882202575019293479932656973818029271)
    TypeId(
        25882202575019293479932656973818029271,
    )
This commit is contained in:
Matthias Krüger 2024-06-30 10:39:48 +02:00 committed by GitHub
commit f2c287f744
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 12 additions and 1 deletions

View File

@ -602,7 +602,7 @@ impl dyn Any + Send + Sync {
/// While `TypeId` implements `Hash`, `PartialOrd`, and `Ord`, it is worth /// While `TypeId` implements `Hash`, `PartialOrd`, and `Ord`, it is worth
/// noting that the hashes and ordering will vary between Rust releases. Beware /// noting that the hashes and ordering will vary between Rust releases. Beware
/// of relying on them inside of your code! /// of relying on them inside of your code!
#[derive(Clone, Copy, Debug, Eq, PartialOrd, Ord)] #[derive(Clone, Copy, Eq, PartialOrd, Ord)]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
pub struct TypeId { pub struct TypeId {
// We avoid using `u128` because that imposes higher alignment requirements on many platforms. // We avoid using `u128` because that imposes higher alignment requirements on many platforms.
@ -644,6 +644,10 @@ impl TypeId {
let t2 = t as u64; let t2 = t as u64;
TypeId { t: (t1, t2) } TypeId { t: (t1, t2) }
} }
fn as_u128(self) -> u128 {
u128::from(self.t.0) << 64 | u128::from(self.t.1)
}
} }
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
@ -666,6 +670,13 @@ impl hash::Hash for TypeId {
} }
} }
#[stable(feature = "rust1", since = "1.0.0")]
impl fmt::Debug for TypeId {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
f.debug_tuple("TypeId").field(&self.as_u128()).finish()
}
}
/// Returns the name of a type as a string slice. /// Returns the name of a type as a string slice.
/// ///
/// # Note /// # Note