Deny bare trait objects in in src/librustc_data_structures
This commit is contained in:
parent
ae5b629efd
commit
ff65bbe96a
@ -16,6 +16,8 @@
|
||||
//!
|
||||
//! This API is completely unstable and subject to change.
|
||||
|
||||
#![deny(bare_trait_objects)]
|
||||
|
||||
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
|
||||
html_favicon_url = "https://www.rust-lang.org/favicon.ico",
|
||||
html_root_url = "https://doc.rust-lang.org/nightly/")]
|
||||
|
@ -1046,7 +1046,7 @@ unsafe impl<O, T: ?Sized> Send for OwningRefMut<O, T>
|
||||
unsafe impl<O, T: ?Sized> Sync for OwningRefMut<O, T>
|
||||
where O: Sync, for<'a> (&'a mut T): Sync {}
|
||||
|
||||
impl Debug for Erased {
|
||||
impl Debug for dyn Erased {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "<Erased>",)
|
||||
}
|
||||
@ -1166,35 +1166,35 @@ pub type MutexGuardRefMut<'a, T, U = T> = OwningRefMut<MutexGuard<'a, T>, U>;
|
||||
pub type RwLockWriteGuardRefMut<'a, T, U = T> = OwningRef<RwLockWriteGuard<'a, T>, U>;
|
||||
|
||||
unsafe impl<'a, T: 'a> IntoErased<'a> for Box<T> {
|
||||
type Erased = Box<Erased + 'a>;
|
||||
type Erased = Box<dyn Erased + 'a>;
|
||||
fn into_erased(self) -> Self::Erased {
|
||||
self
|
||||
}
|
||||
}
|
||||
unsafe impl<'a, T: 'a> IntoErased<'a> for Rc<T> {
|
||||
type Erased = Rc<Erased + 'a>;
|
||||
type Erased = Rc<dyn Erased + 'a>;
|
||||
fn into_erased(self) -> Self::Erased {
|
||||
self
|
||||
}
|
||||
}
|
||||
unsafe impl<'a, T: 'a> IntoErased<'a> for Arc<T> {
|
||||
type Erased = Arc<Erased + 'a>;
|
||||
type Erased = Arc<dyn Erased + 'a>;
|
||||
fn into_erased(self) -> Self::Erased {
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
unsafe impl<'a, T: Send + 'a> IntoErasedSend<'a> for Box<T> {
|
||||
type Erased = Box<Erased + Send + 'a>;
|
||||
type Erased = Box<dyn Erased + Send + 'a>;
|
||||
fn into_erased_send(self) -> Self::Erased {
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
unsafe impl<'a, T: Send + 'a> IntoErasedSendSync<'a> for Box<T> {
|
||||
type Erased = Box<Erased + Sync + Send + 'a>;
|
||||
type Erased = Box<dyn Erased + Sync + Send + 'a>;
|
||||
fn into_erased_send_sync(self) -> Self::Erased {
|
||||
let result: Box<Erased + Send + 'a> = self;
|
||||
let result: Box<dyn Erased + Send + 'a> = self;
|
||||
// This is safe since Erased can always implement Sync
|
||||
// Only the destructor is available and it takes &mut self
|
||||
unsafe {
|
||||
@ -1204,21 +1204,21 @@ unsafe impl<'a, T: Send + 'a> IntoErasedSendSync<'a> for Box<T> {
|
||||
}
|
||||
|
||||
unsafe impl<'a, T: Send + Sync + 'a> IntoErasedSendSync<'a> for Arc<T> {
|
||||
type Erased = Arc<Erased + Send + Sync + 'a>;
|
||||
type Erased = Arc<dyn Erased + Send + Sync + 'a>;
|
||||
fn into_erased_send_sync(self) -> Self::Erased {
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
/// Typedef of a owning reference that uses an erased `Box` as the owner.
|
||||
pub type ErasedBoxRef<U> = OwningRef<Box<Erased>, U>;
|
||||
pub type ErasedBoxRef<U> = OwningRef<Box<dyn Erased>, U>;
|
||||
/// Typedef of a owning reference that uses an erased `Rc` as the owner.
|
||||
pub type ErasedRcRef<U> = OwningRef<Rc<Erased>, U>;
|
||||
pub type ErasedRcRef<U> = OwningRef<Rc<dyn Erased>, U>;
|
||||
/// Typedef of a owning reference that uses an erased `Arc` as the owner.
|
||||
pub type ErasedArcRef<U> = OwningRef<Arc<Erased>, U>;
|
||||
pub type ErasedArcRef<U> = OwningRef<Arc<dyn Erased>, U>;
|
||||
|
||||
/// Typedef of a mutable owning reference that uses an erased `Box` as the owner.
|
||||
pub type ErasedBoxRefMut<U> = OwningRefMut<Box<Erased>, U>;
|
||||
pub type ErasedBoxRefMut<U> = OwningRefMut<Box<dyn Erased>, U>;
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
|
@ -88,7 +88,7 @@ cfg_if! {
|
||||
t.into_iter()
|
||||
}
|
||||
|
||||
pub type MetadataRef = OwningRef<Box<Erased>, [u8]>;
|
||||
pub type MetadataRef = OwningRef<Box<dyn Erased>, [u8]>;
|
||||
|
||||
pub use std::rc::Rc as Lrc;
|
||||
pub use std::rc::Weak as Weak;
|
||||
|
Loading…
Reference in New Issue
Block a user