diff options
| author | David Wood <david.wood2@arm.com> | 2025-02-10 14:18:20 +0000 |
|---|---|---|
| committer | David Wood <david.wood2@arm.com> | 2025-06-16 23:04:33 +0000 |
| commit | 884d0e031a046af894b43180032c1803bb6d0834 (patch) | |
| tree | ba91549781031a904380e0e4052e1bc4faa632cd /compiler/rustc_data_structures/src/aligned.rs | |
| parent | 322cc315040da14c12f84d74fd5761c5d064e50e (diff) | |
| download | rust-884d0e031a046af894b43180032c1803bb6d0834.tar.gz rust-884d0e031a046af894b43180032c1803bb6d0834.zip | |
library/compiler: add `PointeeSized` bounds
As core uses an extern type (`ptr::VTable`), the default `?Sized` to `MetaSized` migration isn't sufficient, and some code that previously accepted `VTable` needs relaxed to continue to accept extern types. Similarly, the compiler uses many extern types in `rustc_codegen_llvm` and in the `rustc_middle::ty::List` implementation (`OpaqueListContents`) some bounds must be relaxed to continue to accept these types. Unfortunately, due to the current inability to relax `Deref::Target`, some of the bounds in the standard library are forced to be stricter than they ideally would be.
Diffstat (limited to 'compiler/rustc_data_structures/src/aligned.rs')
| -rw-r--r-- | compiler/rustc_data_structures/src/aligned.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/rustc_data_structures/src/aligned.rs b/compiler/rustc_data_structures/src/aligned.rs index a636d09fcae..111740e5509 100644 --- a/compiler/rustc_data_structures/src/aligned.rs +++ b/compiler/rustc_data_structures/src/aligned.rs @@ -1,5 +1,7 @@ use std::ptr::Alignment; +use rustc_serialize::PointeeSized; + /// Returns the ABI-required minimum alignment of a type in bytes. /// /// This is equivalent to [`align_of`], but also works for some unsized @@ -17,7 +19,7 @@ pub const fn align_of<T: ?Sized + Aligned>() -> Alignment { /// example `[T]` has alignment of `T`. /// /// [`align_of::<Self>()`]: align_of -pub unsafe trait Aligned { +pub unsafe trait Aligned: PointeeSized { /// Alignment of `Self`. const ALIGN: Alignment; } |
