mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 02:57:37 +00:00
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. Make this less noisy by converting the inner value back to a `u128` then printing as a tuple struct. Current: TypeId { t: (1403077013027291752, 4518903163082958039) } TypeId { t: ( 1403077013027291752, 4518903163082958039, ), } New: TypeId(25882202575019293479932656973818029271) TypeId( 25882202575019293479932656973818029271, )
This commit is contained in:
parent
d1b7355d3d
commit
682e7c1174
@ -602,7 +602,7 @@ impl dyn Any + Send + Sync {
|
||||
/// While `TypeId` implements `Hash`, `PartialOrd`, and `Ord`, it is worth
|
||||
/// noting that the hashes and ordering will vary between Rust releases. Beware
|
||||
/// 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")]
|
||||
pub struct TypeId {
|
||||
// We avoid using `u128` because that imposes higher alignment requirements on many platforms.
|
||||
@ -644,6 +644,10 @@ impl TypeId {
|
||||
let t2 = t as u64;
|
||||
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")]
|
||||
@ -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.
|
||||
///
|
||||
/// # Note
|
||||
|
Loading…
Reference in New Issue
Block a user