mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
rust: pin-init: internal: remove associated type of HasInitData
There is only a single implementation, the associated type is not necessary. Remove it, and rename `AllData` to `InitData` to be a more meaningful name. The single implementation also means that "unsafe" is redundant, so remove it as well. Link: https://patch.msgid.link/20260923-dev-pin-data-diag-v1-2-e4d7193569e5@garyguo.net Signed-off-by: Gary Guo <gary@garyguo.net>
This commit is contained in:
parent
ad5545276a
commit
c0243b93d0
|
|
@ -73,30 +73,31 @@ pub unsafe trait HasPinData {
|
|||
fn __pin_data() -> Self::PinData;
|
||||
}
|
||||
|
||||
/// This trait is automatically implemented for every type. It aims to provide the same type
|
||||
/// inference help as `HasPinData`.
|
||||
/// This trait is automatically implemented for every type.
|
||||
///
|
||||
/// # Safety
|
||||
///
|
||||
/// Only the `init` module is allowed to use this trait.
|
||||
pub unsafe trait HasInitData {
|
||||
type InitData;
|
||||
|
||||
fn __init_data() -> Self::InitData;
|
||||
/// It aims to provide type inference help; `PATH::__init_data()` would be able to retrieve an
|
||||
/// instance of `InitData<PATH<Generics>>` without having to mention the generics explicitly.
|
||||
pub trait HasInitData {
|
||||
#[inline]
|
||||
fn __init_data() -> InitData<Self> {
|
||||
InitData(PhantomInvariant::new())
|
||||
}
|
||||
}
|
||||
|
||||
pub struct AllData<T: ?Sized>(PhantomInvariant<T>);
|
||||
impl<T: ?Sized> HasInitData for T {}
|
||||
|
||||
impl<T: ?Sized> Clone for AllData<T> {
|
||||
pub struct InitData<T: ?Sized>(PhantomInvariant<T>);
|
||||
|
||||
impl<T: ?Sized> Clone for InitData<T> {
|
||||
#[inline]
|
||||
fn clone(&self) -> Self {
|
||||
*self
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: ?Sized> Copy for AllData<T> {}
|
||||
impl<T: ?Sized> Copy for InitData<T> {}
|
||||
|
||||
impl<T: ?Sized> AllData<T> {
|
||||
impl<T: ?Sized> InitData<T> {
|
||||
/// Type inference helper function.
|
||||
#[inline(always)]
|
||||
pub fn __make_closure<F, E>(self, f: F) -> F
|
||||
|
|
@ -107,16 +108,6 @@ pub fn __make_closure<F, E>(self, f: F) -> F
|
|||
}
|
||||
}
|
||||
|
||||
// SAFETY: TODO.
|
||||
unsafe impl<T: ?Sized> HasInitData for T {
|
||||
type InitData = AllData<T>;
|
||||
|
||||
#[inline]
|
||||
fn __init_data() -> Self::InitData {
|
||||
AllData(PhantomInvariant::new())
|
||||
}
|
||||
}
|
||||
|
||||
/// Stack initializer helper type. Use [`stack_pin_init`] instead of this primitive.
|
||||
///
|
||||
/// # Invariants
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user