mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-30 20:44:34 +00:00 
			
		
		
		
	 38fad984c6
			
		
	
	
		38fad984c6
		
	
	
	
	
		
			
			Use `std::mem::{size_of, size_of_val, align_of, align_of_val}` from the
prelude instead of importing or qualifying them.
These functions were added to all preludes in Rust 1.80.
		
	
			
		
			
				
	
	
		
			32 lines
		
	
	
		
			854 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			854 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use std::ptr::Alignment;
 | |
| 
 | |
| /// Returns the ABI-required minimum alignment of a type in bytes.
 | |
| ///
 | |
| /// This is equivalent to [`align_of`], but also works for some unsized
 | |
| /// types (e.g. slices or rustc's `List`s).
 | |
| pub const fn align_of<T: ?Sized + Aligned>() -> Alignment {
 | |
|     T::ALIGN
 | |
| }
 | |
| 
 | |
| /// A type with a statically known alignment.
 | |
| ///
 | |
| /// # Safety
 | |
| ///
 | |
| /// `Self::ALIGN` must be equal to the alignment of `Self`. For sized types it
 | |
| /// is [`align_of::<Self>()`], for unsized types it depends on the type, for
 | |
| /// example `[T]` has alignment of `T`.
 | |
| ///
 | |
| /// [`align_of::<Self>()`]: align_of
 | |
| pub unsafe trait Aligned {
 | |
|     /// Alignment of `Self`.
 | |
|     const ALIGN: Alignment;
 | |
| }
 | |
| 
 | |
| unsafe impl<T> Aligned for T {
 | |
|     const ALIGN: Alignment = Alignment::of::<Self>();
 | |
| }
 | |
| 
 | |
| unsafe impl<T> Aligned for [T] {
 | |
|     const ALIGN: Alignment = Alignment::of::<T>();
 | |
| }
 |