mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-17 19:14:16 +00:00
Remove core::any::AnyPrivate
[Previously](e5da6a71a6
), the `Any` trait was split into a private portion and an (empty) public portion, in order to hide the implementation strategy used for downcasting. However, the [new rules](e9ad12c0ca
) for privacy forbid `AnyPrivate` from actually being private. This patch thus reverts the introduction of `AnyPrivate`. Although this is unlikely to break any real code, it removes a public trait and is therefore a: [breaking-change]
This commit is contained in:
parent
b5ba2f5517
commit
07cfc252a1
@ -91,20 +91,15 @@ pub enum Void { }
|
||||
/// Every type with no non-`'static` references implements `Any`, so `Any` can
|
||||
/// be used as a trait object to emulate the effects dynamic typing.
|
||||
#[stable]
|
||||
pub trait Any: AnyPrivate + 'static {}
|
||||
|
||||
/// An inner trait to ensure that only this module can call `get_type_id()`.
|
||||
pub trait AnyPrivate {
|
||||
pub trait Any: 'static {
|
||||
/// Get the `TypeId` of `self`
|
||||
fn get_type_id(&self) -> TypeId;
|
||||
}
|
||||
|
||||
impl<T: 'static> AnyPrivate for T {
|
||||
impl<T: 'static> Any for T {
|
||||
fn get_type_id(&self) -> TypeId { TypeId::of::<T>() }
|
||||
}
|
||||
|
||||
impl<T: 'static + AnyPrivate> Any for T {}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Extension methods for Any trait objects.
|
||||
// Implemented as three extension traits so that the methods can be generic.
|
||||
|
Loading…
Reference in New Issue
Block a user