From nobody Thu Sep 24 13:39:03 2026 Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020120.outbound.protection.outlook.com [52.101.195.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 97CAB4219F2; Wed, 23 Sep 2026 18:20:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.120 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790187642; cv=fail; b=lFU/1LyWhVb4PHI585BraIkp6vABiD3nW2Cgnc5MDYHf8hjLsKKk6f8R3AIkj27GIaXpDIGWdp1VnJJ6nsIboX+WDXYxFASOO0KfuNo7jfDJH92pvnfoMaP3XvW0s/bnd6yUW9qE0dd2JKzv8hAEZCBYNn8mrt7QHv/J3g+Vmn0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790187642; c=relaxed/simple; bh=nQk3jpJS7eMH5f1YADWdfTUgEjq+wQ0mPHb6IMyjU6I=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=iiPHUq5gUTHjvf5YU15oCK/M+uXovb2KEzqU5/gGQdXrbPVMom2lE2N6x/n46nDJXb49z2LuAV6mAX22LlwNy51S5D1Do3qlAuyV6/zADojm3cAMt7gfGlCn+S+/744bR+4ud1QKRWzpFgL2FAGH4wOwOfyNDirINPukZoSH7pY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net; spf=pass smtp.mailfrom=garyguo.net; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b=baoZ8SqA; arc=fail smtp.client-ip=52.101.195.120 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garyguo.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b="baoZ8SqA" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=puqw/IZEVdgdbSjVMo8FXY3LH56wlpBmyWbs8flyKc709zUcEtsHiiLyzahN1DExuIQRRhd3hopWVMey5pcF/0macLQJgQ7DS6jKsh9MJLGo4Tgr9ep3JFWWJnVQqogX9tJJka6z44+AUq0FSC/RT/17U4AnlJq0dim78tGXEfXWZ0xQZJDvYlbSScRaP1+4VSuh/jZUtL8n2b6FxWsl87DX1IQqQA0l7NsVCOLyQ+VRwWJR8I9vxvBrJLCrQ2sm7uGwqG+Yp+6K/myqbAJpTZMTMKRflEkluqkNNHfY7awx3vgIzW+zhjh+YlLUuCABN/ZwOYfFLF5bw6+tgVz9kw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=EF00u9IrOQMvS3KFMLkZ3B78w/I/6SQVEAi601lDhb0=; b=slN+yccq+uSRTzy9sDlXAAmXJd6wFvNuNzkO8DIsbmyujtu4roXx70owJxR2Mb1zFIz2HV5QX4AZEu8ju8gno9RUGnTHTJt0CrLtIf5+r+sPNTauZzb8QQYgSh/RCmXwtdmmXoux7FpjTMI0HbsnKTxKR7jwBHfB+u9wlVWPMYlzRbppGfeURyhkXOLqabKEt9KWox926m6Bo70FYmWgn1utLNAyk76RC/Paflque3H4/j7/nuF2ekf6X4CXatGK2cw5Bbt+Wp6a+BzJZIaPr/882C0Uk5KtUpTRM/lipoNs+ihCnyqcsT8JUbzUgQJV1o4OLf9z1nKcLwh1xaLy+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EF00u9IrOQMvS3KFMLkZ3B78w/I/6SQVEAi601lDhb0=; b=baoZ8SqAWGOsM3RS3pCK5maHwzP7WylUIBbwYhRxoAB7uOMqZGCP7T6ltDnrJtmvbiNd63LT92dRizkoDhnmPhtx7Nov8QV3rV9Bur8V7/4nQ+ZIK1ERK3fk8N/wiSMaM3FRzN4vxMLPP5zoopZnEYTTM53w84lQAb84kWxvEMo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=garyguo.net; Received: from LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:4ab::19) by CWLP265MB6301.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:187::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.16; Wed, 23 Sep 2026 18:20:31 +0000 Received: from LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM ([fe80::f60b:1537:68d7:4fc1]) by LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM ([fe80::f60b:1537:68d7:4fc1%6]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 18:20:31 +0000 From: Gary Guo Date: Wed, 23 Sep 2026 19:20:14 +0100 Subject: [PATCH 1/5] rust: pin-init: internal: make `__init_data` and `__pin_data` safe Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260923-dev-pin-data-diag-v1-1-e4d7193569e5@garyguo.net> References: <20260923-dev-pin-data-diag-v1-0-e4d7193569e5@garyguo.net> In-Reply-To: <20260923-dev-pin-data-diag-v1-0-e4d7193569e5@garyguo.net> To: Benno Lossin , Miguel Ojeda , Boqun Feng , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Daniel Almeida , Tamir Duberstein , Alexandre Courbot , =?utf-8?q?Onur_=C3=96zkan?= Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Gary Guo X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1790187630; l=3276; i=gary@garyguo.net; s=20221204; h=from:subject:message-id; bh=nQk3jpJS7eMH5f1YADWdfTUgEjq+wQ0mPHb6IMyjU6I=; b=N3bPosS05ilpqQzFVxbqAUawgWNKtk1vpSuZEAwcu1cc1DXvc64jFha8Xr0D8x+MAAgMkettr gB5KJJfFqQQDsd2B6d+fvXNjMBY2MiQlSSspbIrLoc4kwY+/8Vc6r8X X-Developer-Key: i=gary@garyguo.net; a=ed25519; pk=vB3uIX95SM4eVrIqo1DWNWKDKD2xzB+yLLLr0yOPYMo= X-ClientProxiedBy: LO4P123CA0182.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a4::7) To LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:4ab::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LOAP265MB8560:EE_|CWLP265MB6301:EE_ X-MS-Office365-Filtering-Correlation-Id: 66efa7eb-8059-4a4d-99a4-08df199f59e8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|366016|7416014|376014|1800799024|10070799003|6133799003|18002099003|22082099003|921020|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: xFI0jiTQEdtPJlq93d3PRbc+xwg4aLv4AXT5NayPa2X89M5hoZgzhlYn88a8ZAkqGBAfWbrl7hSp5Fpt58KDF+Y1asrUIFe6wNwgA5m4WLWv9Hj7DrSiFvwHfMcFSfEjWV4qCfHuuuuttqmyrupgeyDlOhLEe0rGfhgaPpMg7qnBGHwUVaHvobJD3zXBoAjYjRMlHQ3AcJYVJw1xLO3J8u20DXAcTqHHNTG6NYeukT4mXPmEiyGSIVAD6jHv1tKNLBnkqYK4imhP5C1SE9UKadphD9wHkOxurlHi7dNcigFWKmooShIKKdDnB4GeTrjjawl/fbQyMU/nbkUJsSVAx6+2aP4EC+k8OM54K/LZg6oXjBZjLE0cW5cOX6LovX86+3Tb0Y1ktc17Hhp9gBkMkHuq2m7ijN7rAD02snL5JwtzcFL2/RoW4uo3lrP3VmQHGiELwUIqGwdW0fpsPWpBGxTbuGu10l7mwk/d2NsTh7bdu16oXyDsu1kmC062si2zQ6xKueETUKaL3s+9ZvpLOg0128jv4pm6qJ0jxyrkUUYZB7zNr3pe2l0uF14WnCEyUnoYt+zKQ2OTBoI/177DGfpYCJNnNuv41s76EBICFBmWZHPUd4GGsGvNx07pPzcHpuBOaByUd22chFHKsivtlRBo1c6+CEb1xR4aGUqmRMz3oW/f20NWdL66uXudTmBUcwUw9/5epSfNTZvFlp7CSA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(7416014)(376014)(1800799024)(10070799003)(6133799003)(18002099003)(22082099003)(921020)(56012099006)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?THcwRlJqWUY1b2JyL1JiMmQxdmFQaGpqUzU1WldoTkNBaS83YjB0Y2NTOUgx?= =?utf-8?B?S3lFTXdXaHFvVUt6VXZYRGF5R1BzRGtLRXBxZ0NyUVZsYVdXbFFqenp1TEY1?= =?utf-8?B?SjNGZG4zTm1WVzU4Qk9FQkZpZlA5RmZhZ1hPU3AwanlkRjFqUjU4cWtTTDJ4?= =?utf-8?B?SmE1SWFndmpqK0VoaDR2VysyeHYveUQvdS9uK0paN25RZFdLUEljb29ObGJj?= =?utf-8?B?cVloMFR6a1V0VDZXWlJiOE5hT1lIRW9LLzdHdlphdVlRaS9UVzhFTS91SDRz?= =?utf-8?B?MXZxVnpvOWpENS96Tnh3emlieEhQZ2V4RHZmZXBiODBvbk43WVFyQzVROVh6?= =?utf-8?B?V2dSSEwxdmZydVFlSW1qNUdacG5YUm94YVhZTkxYU2trKzZZRXRub0dhRXJw?= =?utf-8?B?VDNhTVlJa1ZiaDZNNVJoR1A2U3pUZTA5WXpZcXVzOCtFY0xXZXVQQSsxTW1D?= =?utf-8?B?anNtT0VvaGIrVlFIS0oza1dTTGJuQ3ZPMUdCZ3VneXk5OWdZR2RWNlZuRjRG?= =?utf-8?B?clQ1VCt4WnZoV2RweGhHdXlWMjUzUHpXcFUzNmhxL2hTR0dnT3JkZlFzNEoy?= =?utf-8?B?dzNIRlI5OWVRVmpPQkRRNUVzcHdqZTRlUFpMbEgyeEcyVXNkTHc1QmdiY1Rs?= =?utf-8?B?MHFtbGN2VEdobGQ2MmRMMTYwL3FobFBmUjhkV01YSjdmUHVqSGxPb2d5TjBa?= =?utf-8?B?Q2RCWUtBZmx1K1NZaTY3eFZEelRhMEkzSHhtYmt5N0RZejZxVEhWRFdEYUJ0?= =?utf-8?B?YW5uVm1POTRUMXlydzZkL2JPalZ1UmVidW1QdE5ESllVY3lndTk4OFlGZURP?= =?utf-8?B?TUcvOGI0OTc5OWFWS2lqNlpERExFd0gva0VCTnJQRFc3MDRMZTN6ak5zZHZO?= =?utf-8?B?Qlo3UjQ1Z0lhTTd3akMrLy9HczdBVTA3c1RmS29ZeHZNazBrd1dJSTcrL0lp?= =?utf-8?B?ZkdZWTRFeXpKTGt6MnltWk03REV0dTBhT3gvYWdrOUI0d0ZXNUdueWFCbStN?= =?utf-8?B?MWhsZDgveHAvYVJUZTFXanBDQko5cGxDZXRSNjlxTWtnMTFNdjFMbE5XZkN1?= =?utf-8?B?SVkvWlhnYXNrRUJvVEhKckZYQjhoZU0xVEl2TU1tSXgxMDlPTnhIMnRTWXFN?= =?utf-8?B?L3BDeHoxb25JWDNmbFZWSjN5dmpsV0YxWUZOYjlxS2VYL1UvMW85SHJQZXlk?= =?utf-8?B?RS9GbnlqYTFqOWFqOTJmZkN6aFRtSW04OTBhNUtEL0ROS0RSMWRzNDc5a0x2?= =?utf-8?B?WGRxN21KWGsxaU9iamovTitld29mNmRFZ0JaTDg3L0F4VWNadjdGWjhjaENj?= =?utf-8?B?N1dycnFyU2l6U1pkakFWT1FDYzVsVE51alJjazVPRzg0Tk92SkRCci83NTJR?= =?utf-8?B?WVJXRVk3SUl4WGwyK1g3Q205ZE50bVNjVzhxVlllM29NMHR4V1l2elVXTE45?= =?utf-8?B?K09VL2NqSDRqRXZMbXZzRWQ1UUdRSEx4QWlPSlJsNU5qQVFuc291NGErRXNY?= =?utf-8?B?dzEzZHY5TE1EcEJRQXNoYkZvMGVCMm5WT0Q0bldMaEJMRVFGUFliY3ZZZHow?= =?utf-8?B?aXRvSXFJNDF4Ym4wVVUySFdacHNmb3BGbEJ2VXJ3dUJId05Xa3R0WGtFeE03?= =?utf-8?B?L1VyZTBnZ2U2Z00xZE5VbTBIbGhINXdhR2NOdVIzQ0twTXhZMFpzWThCNjNn?= =?utf-8?B?VjQyeDRFY1EySUFaRWwzdjM1UnNUOWF5NnBodHlYeDhuMWFUb1NBVmk1TVhN?= =?utf-8?B?dEdQaXVFZEh1Vk5MWGhVWmJFSDE5M0J5MnZYQTh1VVRNN1hWblIrRGpaS2dD?= =?utf-8?B?dWwwLzRxaEcrSXZGOWNHOFlPNEFFZTRacjIydXEwM2dkRUQ1STRNd0lRWnA5?= =?utf-8?B?NEtyRFE5SGhsMzZERXZsRkxkaWhCUzZHRzhNVk5KZ1g4MzVCVmdrOUNWYzdz?= =?utf-8?B?REVvUFYxbFpjQng5dnNUbXVOVzVFd05DQ093VTBDYWthMC9Yc3l1aG5mNW14?= =?utf-8?B?WGJXUTJhK3VNVFB4dVJvMUdQRm5QckdMVUErb2JrS0VjSlRpWEtYZWhzVCth?= =?utf-8?B?NXRzZmJZOVprQ1FjbUl3OXhrQzM0SFdZU0RqRzBIRitIVUVZZVVuTlZ1U3o1?= =?utf-8?B?ZWkwWU0wanRtVWhUS0R2ZWo4bDlqc1VJeTFLNm1ucFRoUkk2bnFiTHF3bWxn?= =?utf-8?B?cm5Ed2lGRnlkckpsK2hsNWtwbXNJdXkzK3BoN0picWpVTXNoZ3kvRmQzM3BW?= =?utf-8?B?WEsyQzZ5R2dQZXpSQ2x2TE1XM0o4Yno0RlBlMXZmN3Jkc0wyVHBzT2hMOGoz?= =?utf-8?B?bnE4aHNNUHFLZXl0Z0x4QUNhWGNVaXlIR05UR2xUQ3Njb21UcVB1dz09?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: 66efa7eb-8059-4a4d-99a4-08df199f59e8 X-MS-Exchange-CrossTenant-AuthSource: LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 18:20:30.9447 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: blaT1TXfIAGlL8PsokgSdHD/gzNVV3iu2dfXjs4Qgidi8XNVkYa1kqK+yZ6seWKhY6Shs8/zcIyM0rNt5oBOLw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP265MB6301 Remove the unsafe markers of `__init_data` and `__pin_data`. These methods are for inference help and does not need to be unsafe. The `HasInitData` cannot be implemented outside pin-init, so the `unsafe trait` marker is not necessary. Signed-off-by: Gary Guo --- rust/pin-init/internal/src/init.rs | 3 +-- rust/pin-init/internal/src/pin_data.rs | 2 +- rust/pin-init/src/__internal.rs | 11 +++++------ 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/rust/pin-init/internal/src/init.rs b/rust/pin-init/internal/sr= c/init.rs index 1d2db93dd33d..1957be83a196 100644 --- a/rust/pin-init/internal/src/init.rs +++ b/rust/pin-init/internal/src/init.rs @@ -312,8 +312,7 @@ fn assert_zeroable(_: *mut T) let field_check =3D make_field_check(&fields, init_kind, &path); Ok(quote_spanned! { Span::mixed_site() =3D> { // Get the data about fields from the supplied type. - // SAFETY: TODO - let data =3D unsafe { + let data =3D { use ::pin_init::__internal::#has_data_trait; // Can't use `<#path as #has_data_trait>::#get_data`, since th= e user is able to omit // generics (which need to be present with that syntax). diff --git a/rust/pin-init/internal/src/pin_data.rs b/rust/pin-init/interna= l/src/pin_data.rs index 8cd9bf139567..30d9b8b54d8a 100644 --- a/rust/pin-init/internal/src/pin_data.rs +++ b/rust/pin-init/internal/src/pin_data.rs @@ -538,7 +538,7 @@ unsafe impl #impl_generics ::pin_init::__internal::HasP= inData for #struct_name # type PinData =3D __ThePinData #ty_generics; =20 #[inline] - unsafe fn __pin_data() -> Self::PinData { + fn __pin_data() -> Self::PinData { __ThePinData { __phantom: ::pin_init::__internal::PhantomI= nvariant::new() } } } diff --git a/rust/pin-init/src/__internal.rs b/rust/pin-init/src/__internal= .rs index 8e9fd18b993f..51f6b40daa9e 100644 --- a/rust/pin-init/src/__internal.rs +++ b/rust/pin-init/src/__internal.rs @@ -81,12 +81,12 @@ pub unsafe fn new() -> Self { /// /// # Safety /// -/// Only the `init` module is allowed to use this trait. +/// `pin-init` relies on the correctness of the helper functions defined o= n `PinData`. +/// Thus, only the `#[pin_data]` can implement this trait. pub unsafe trait HasPinData { type PinData; =20 - #[expect(clippy::missing_safety_doc)] - unsafe fn __pin_data() -> Self::PinData; + fn __pin_data() -> Self::PinData; } =20 /// This trait is automatically implemented for every type. It aims to pro= vide the same type @@ -98,8 +98,7 @@ pub unsafe trait HasPinData { pub unsafe trait HasInitData { type InitData; =20 - #[expect(clippy::missing_safety_doc)] - unsafe fn __init_data() -> Self::InitData; + fn __init_data() -> Self::InitData; } =20 pub struct AllData(PhantomInvariant); @@ -129,7 +128,7 @@ unsafe impl HasInitData for T { type InitData =3D AllData; =20 #[inline] - unsafe fn __init_data() -> Self::InitData { + fn __init_data() -> Self::InitData { AllData(PhantomInvariant::new()) } } --=20 2.54.0 From nobody Thu Sep 24 13:39:03 2026 Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020120.outbound.protection.outlook.com [52.101.195.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 885F352843C; Wed, 23 Sep 2026 18:20:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.120 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790187645; cv=fail; b=Gc906zm/W2drEVdhHGjwdB808exRlWxdILiHhBZCXCSeYUSdXzfm3KMJwCStJIXlcduzPFv/aDNZnP9rDsWPL9V5Fo/KNi9OOMkPxfbYShFlvSb4AxU4+/fb9gfS+nrc6hzXEOO3sDflaR8K/op0bLH4f/P10ry9EsX4/iKFzIc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790187645; c=relaxed/simple; bh=1eqZ/uzyj9yR0UoLHnh94cgdinYYXFKUD/IDj+Jr8aw=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=FM+rhOGjcR2xF6fzoYiALEbxhx6LyFJh5SMITs9fw5AuvMeQ3j6WN9FX8roxAsO3jMxHmtuVw3/d400gvtrsAim2FDYxI+ohyjSL03DT7Nwuny3UjyRWbYc8ljn8XowaO8+KDx+7kiMLGXOWDE7o6zpKpSjVr9lAQL6dtWlstKo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net; spf=pass smtp.mailfrom=garyguo.net; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b=jpSg05op; arc=fail smtp.client-ip=52.101.195.120 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garyguo.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b="jpSg05op" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ugh613cld6Duz5JX4GC+9DvVX3im8Gh4rvsqyrMXY8OU3CGZlF6ksf4HxrmNJ/ABUbOZpQe+AUuHesCmlK1FgMGgU4UhkbG7G+P/O/O8gnkLgeM0e6olNJ07lq2IRgzRAZPUX8FpdiWl+KLXdZ6zYL5HJQ0ahF+zKvidtfkrKpcMKyjH51j54y7HlwHtbZjPPQJXJphtySCG3yc64KkJeRMeK17dWGWwXJsQljz6pS7eHTRMo6ssfhfbhl+xkTjfPXS/OKIK0SWO7QcKAbCe7Dj3Oxnk7xfBgx7EBJQvO/r9XpN/F7w4q/myKol8epcLU8TLVtArIfbLk4mGFAL9lw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=YFjkXdbz7cWLH2DZn8Wtm4fgN347oeNWgMTjWS11cAo=; b=WdquYgiGwNOrLJC4yA6w+tWjRG53Q+HNo4xdr6F+gg170ax0tny3U1d7Ze0CCO0LD0PqoeDv5n18bF9PEdGiBg9eGpdqWBfYABGJ5k+fAadnljkrTiFq4q4MOjViq58shFxfx7S5TkKOLxGtmxlTXAsSp3sdvaqXiqlgNWGyHLt9zJugm7tLAE9Hd758pbiGCb/IiJ0mJ8tGCJeZeVJkd1tgkx2jp5YmSwHyostWLPDBxp9FIPwrkcM5IDNhruXM6zkpl4B+vAb0X5FPVrxPcTkVGed+8KTahict6mg8DV2Ft2am64ioI9oogO0d4W7qwDuBgLrQ/I6rph0C93PAmw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YFjkXdbz7cWLH2DZn8Wtm4fgN347oeNWgMTjWS11cAo=; b=jpSg05opWD6FWs+OWACT0HIqU9NjJz06+z9a0xjqAvnDg5y6l2AuIAX2WAnBixilfE1708YjqLAZAqOXCAEWf1G11cS0LwJjMnxuur9jprSCqsugDiIKzqgEXW2kvdoUA9aJPBlgUXQ5/1RDHlWUUW5FZxRku0pwQaghRYkDuQw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=garyguo.net; Received: from LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:4ab::19) by CWLP265MB6301.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:187::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.16; Wed, 23 Sep 2026 18:20:32 +0000 Received: from LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM ([fe80::f60b:1537:68d7:4fc1]) by LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM ([fe80::f60b:1537:68d7:4fc1%6]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 18:20:32 +0000 From: Gary Guo Date: Wed, 23 Sep 2026 19:20:15 +0100 Subject: [PATCH 2/5] rust: pin-init: internal: remove associated type of `HasInitData` Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260923-dev-pin-data-diag-v1-2-e4d7193569e5@garyguo.net> References: <20260923-dev-pin-data-diag-v1-0-e4d7193569e5@garyguo.net> In-Reply-To: <20260923-dev-pin-data-diag-v1-0-e4d7193569e5@garyguo.net> To: Benno Lossin , Miguel Ojeda , Boqun Feng , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Daniel Almeida , Tamir Duberstein , Alexandre Courbot , =?utf-8?q?Onur_=C3=96zkan?= Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Gary Guo X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1790187630; l=2455; i=gary@garyguo.net; s=20221204; h=from:subject:message-id; bh=1eqZ/uzyj9yR0UoLHnh94cgdinYYXFKUD/IDj+Jr8aw=; b=tFvgB+13/HJ0ZOeTMTd24ULjGYQVQkOIikFT1OpHUhA8ZirZnt5T5axEqEPZoPo+LXuA8Np0T ZgC9n2DxwSsBv3l60+v4qi2CjVnqcWXNgbh16ELFQXNMXwwAqyWQbPH X-Developer-Key: i=gary@garyguo.net; a=ed25519; pk=vB3uIX95SM4eVrIqo1DWNWKDKD2xzB+yLLLr0yOPYMo= X-ClientProxiedBy: LO4P123CA0182.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a4::7) To LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:4ab::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LOAP265MB8560:EE_|CWLP265MB6301:EE_ X-MS-Office365-Filtering-Correlation-Id: cb68b2cc-fda6-4a40-7ff9-08df199f5a28 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|366016|7416014|376014|1800799024|10070799003|6133799003|18002099003|22082099003|921020|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: u1qdgq5S6WtH+Q+PnKMfI5bLe2wt7+H7E48NeBqOYjQPfTvZphP7r3j7Wxu6cszVs6wjtU7TxJ8T5A+3gXj3ZTH8yL0cHzyI/kRKGf23wrFybo2UnhiZHfqS37bkCB6uqFOd2K+NjjmAQazuy+NuindhR7p0CDjP//+iPSoTW+/VPMMT5I3rGevYtVuKjLtMSe+YoC+hRQvoMTJ5xM1sUpdjXCo3uiUCb7D01s1i1EintzHpgukQpT9/sKusmYpB3FupkgOXZaj1Xj/61ZEw96DEDUYPJ5NoAfKH32851PK9NwB7GG90kMcPFYDOlMhRUeZykC2Vq5YQ83KoKkLmPxGdyJRXV/1qtGulPEXw4/RPvsUS5Pb/Jbi2kOBktItkhBTP50xMo0YNoa3rJtgml1M+z1IIAWwQW0HcGzvAtVp9pBxQdzdwslmgMpqNItT0nVQhmV+vA5OmYQkt1D2utkTUc/VM5jq/1AQwPbhzuoWl93LIQvccy/CE4nqSOmnRMogzQIB+63wIoJ1w+fi+gTVIzCuqbLqm+AIOyiR2cVw42PgmsC1ZGkrT0L/NZt85WYuA9+BXLnectiJHH3LAYH0G7h6RjuDiWQRf/LJDNX3MKK5NcdOsdH4f5aKY8qK5Fv3Jfv+pPxyUMfNstf7pR+0iNCAFPI7HHY//TqKh6XD39uHdcitNAwIJbz/anCpDHU2ayh9MfsojNav7Z7SEgQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(7416014)(376014)(1800799024)(10070799003)(6133799003)(18002099003)(22082099003)(921020)(56012099006)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MVEwclhZYXBqT2JwWDlCK0hVNmpveUtpY3RIUk1hdVAwekE1bU9WSWo5V3ND?= =?utf-8?B?NEphTzJ5Njl0ZFpabTVZRUVGeG02Z05kRnV2ZnU0c29vVEMxbkc1a0trTXQy?= =?utf-8?B?Q3JpTGUzanFmM0VUcUdRbytsS0pVQzRiTmMxYi9qN2tLcXNvWFpOcTBiSm9h?= =?utf-8?B?TWlWSmlkSzFPVUpFK25memxDVXRvdmdISjlqUHZCSVJ0dUdUMUFqbjY5US9H?= =?utf-8?B?ZEUzRUxzam4zVFU0alhQNFBwL1lrMDU5Y0xQcU1uOGpFVStYZmpaN3J1YjNI?= =?utf-8?B?YnBWMy9PL0NIODJVUzFGaGd5L2QzVnhPSCsvcG1mUlFXekhaYW9IT0VyS0Y2?= =?utf-8?B?YlRpVDZXaG1iMmY3NGJ3c2ZYUEZodVNwMmU1OTAwTXB3UDFJdXZOTG9Mb2Za?= =?utf-8?B?Vmc5c2U0U0pOQzJpYkRYSVZSdlpidVpOQ2NITWhFRUoxM1B5UmF3cmQ5RVVO?= =?utf-8?B?STJGeHplVzc3eVNqZVo5a1IxV20zZFNJMUlRQng2cVF2cVlkdVdNSGw2N2pB?= =?utf-8?B?ODhRYUlJQ3lJeFhLd1ExVlgxNVAzUXJVUlVKZW96WlpyS1A3WGk3cVMzSGpu?= =?utf-8?B?cnVibmk3RTh3ZlJxa0VBVnNkeFRZSFRQTEdIL05hbnlkOEJlWXIwYlpYUjli?= =?utf-8?B?TmZNZ0ZNVG5HM2l4TDNVZldicDMrOXBrcXJPWjk5Vit4QVJGcE1KaHNJRTFn?= =?utf-8?B?dFdFcnZrV1pYcVF0MmxmQXRDaE1GT21TM0ViUUFZUFJQbC9GZnZHaC9KM0Nm?= =?utf-8?B?VzVnSjcvZVJLd0FrTmlnVVpXRTU4amZ4eUVXZEtiRWMrUlNEQkIyNHRqR25a?= =?utf-8?B?S3pWeURkcUxRb3VUVFdpK0FhN2hPZEk4cXlsSk16MU5jcFcxdFZQd3ozdWFU?= =?utf-8?B?eUc5TFNPeGhxcjdXRnVvWXg4UnVteXRJSkNncWxZdUNlN0YrbU1ZMEoycjl2?= =?utf-8?B?OXlnUlR1Q3BlQS9zZEZBRlJ5YmlZKzJIak1YZmRNZFFlcFZMRDZBZEZuUWdn?= =?utf-8?B?ZXFQSGFDcFFXTEhqWDRjRzdNOVlOT2Jmc3ZBM1JETkZjd0p3MTlQRERsTUJH?= =?utf-8?B?L3crQjJZcy9hekgzbGxRMUV5ZEUwVFlDWXFLQmxIU3FTWFowU2wvOGZ3NFJy?= =?utf-8?B?eEZhL2ExMDhVREhEYkhYSUJDeVlKQXpqWUU0b3RKK09YMmhVMURiWnF5U0sz?= =?utf-8?B?NXBrS2lPaG91bUNoTFhjZEVtQk90N2pRYlBiZTFSNm84a2tITExaMm1GcVVy?= =?utf-8?B?RlBnUWgwZFJnNnEzcTVJdXhJRU5QeFIwMitYZ1ZuaUtiUExyT1JrOGpNUVJ1?= =?utf-8?B?WnV4OWN3UEZSOVBQNXB1L3pkamZjQUlRWi9OZmw1UGYxMlZHMDhYTGJZUlZ6?= =?utf-8?B?UnF1RVpxamRXN1QyK2FCMVpiSExsMEx5d0xIUFAyeFVlRXZ5NUVvWTIyNjV5?= =?utf-8?B?RGZrKzFEUE40UUJDaGFCMEc4NE4wRUU1MjBaUWJJWnR2ZHNDcVFCKzhra1pO?= =?utf-8?B?b1JQdTBhRnFldEQzcFBjZXNYSXRhZ1JWVmxJaWIvY0ZkMy8wQ2NkcXp2c3BJ?= =?utf-8?B?T2VlR0h0VWdaUVFndjVpdHFQcm9QdHBCK3RvaDBNUzJPZERVeXhxZ1luTXBN?= =?utf-8?B?R2VKT3BWbjZ5cjBxckJiWWVvNmZRa2Vhd1dCekN2dkphY3UzZGFSVEFEZSsx?= =?utf-8?B?eHNNcEFRaWt4YUo0YU15L2FzMklBWFVBVG9JNU5vSGlQN0xMMWRvaFhOblBq?= =?utf-8?B?V3dycHVmenB0MFNjOUtGRVdOSDZOelNUaEI4c1lZc0hEWlFUTWFDdExDUzRQ?= =?utf-8?B?dEZZVDVmc2RWV0Iyc0FqdkdxenJHbzYrcGdRQ0xRNkdNVGh1ckJYbGl2ZjZu?= =?utf-8?B?SHlwUTRNbkliUFVsbDVwK0J1K0lYcW5KMVl5SEdIb2pISElPUEt4Y21CZWN2?= =?utf-8?B?enlwL25wcnZ1ZzJMZjA3cENCTmVRalNoWTNUanFvak4zbHNnMTVzcTJKa00v?= =?utf-8?B?b1lTU3YzNjNoK2txUHJOTlo3cC9OSzYzL1FMYm9pYVdwQlNvRDFDTlhxU0tP?= =?utf-8?B?UjFld1Rlam5DRXU1VFQzakRSZGFUVU9hTVI5WmZPRUNrYW0reGJ1dE9JMDlO?= =?utf-8?B?bnpPZzdjYitwR0F0M01OOTAxemF5STlJU01WWFFhN3dCS0hneWx3cjJxSUtI?= =?utf-8?B?NVMyTU92UTdtUWd5T0taN2NEWFY5TnpxUU44WXo2akpTdStFNXRyWmpEbmEy?= =?utf-8?B?SHdwTzRNT2RMN0JRTmF6QjlvUk0reHRtUDkvNit1S3U3VU0yeTNMK25YZlB1?= =?utf-8?B?QjE0ZVRyU1RNUzUyWGdrK01YM0lVRlFYSVV4aEpCUXo3Q28vVzJYQT09?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: cb68b2cc-fda6-4a40-7ff9-08df199f5a28 X-MS-Exchange-CrossTenant-AuthSource: LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 18:20:31.3651 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: RbbBwnaUfqIw1x4pRO+xXaUA0aZpJGpTj36tPWnPcKXvUyJwBXgEAdiO93mj9bhz9TNtRAzAumH9+A/V/ACBuA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP265MB6301 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. Signed-off-by: Gary Guo --- rust/pin-init/src/__internal.rs | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/rust/pin-init/src/__internal.rs b/rust/pin-init/src/__internal= .rs index 51f6b40daa9e..15eca4869bc3 100644 --- a/rust/pin-init/src/__internal.rs +++ b/rust/pin-init/src/__internal.rs @@ -89,30 +89,31 @@ pub unsafe trait HasPinData { fn __pin_data() -> Self::PinData; } =20 -/// This trait is automatically implemented for every type. It aims to pro= vide 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()` is would= be able to retrieve an +/// instance of `InitData>` without having to mention the g= enerics explicitly. +pub trait HasInitData { + #[inline] + fn __init_data() -> InitData { + InitData(PhantomInvariant::new()) + } } =20 -pub struct AllData(PhantomInvariant); +impl HasInitData for T {} + +pub struct InitData(PhantomInvariant); =20 -impl Clone for AllData { +impl Clone for InitData { #[inline] fn clone(&self) -> Self { *self } } =20 -impl Copy for AllData {} +impl Copy for InitData {} =20 -impl AllData { +impl InitData { /// Type inference helper function. #[inline(always)] pub fn __make_closure(self, f: F) -> F @@ -123,16 +124,6 @@ pub fn __make_closure(self, f: F) -> F } } =20 -// SAFETY: TODO. -unsafe impl HasInitData for T { - type InitData =3D AllData; - - #[inline] - fn __init_data() -> Self::InitData { - AllData(PhantomInvariant::new()) - } -} - /// Stack initializer helper type. Use [`stack_pin_init`] instead of this = primitive. /// /// # Invariants --=20 2.54.0 From nobody Thu Sep 24 13:39:03 2026 Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020120.outbound.protection.outlook.com [52.101.195.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2A5A7440A0D; Wed, 23 Sep 2026 18:20:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.120 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790187649; cv=fail; b=JX9uPzmXPlJPxwPt/NbjYGHvcsrq8KYpRmJDX5UN/b0xk42u3TG9ovidT5BZv7sWsnYnVpKl63CHvGeLFMuhutFz87cNcSOG6tYzaq/39hzXR360eVOV/l3CtJ/II4Xi/axef4batR8x+gYDZR0dXd1Cp0WNMRIvoShe9CobRto= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790187649; c=relaxed/simple; bh=XBtIXC0M1dFD265oUX37BthhCp4tgf4WqOpUNB+x+Dc=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Dij52KSO0mWUoqSu3md/r0+8roKl8ceReqDYV/S/AXu0i/q4nt9NxZI3jX023G9g6x/6SoWPFIj8wDD543bECJoIsVtZm0ksmBEjuXoIitWZxaBS+oIWZai8lug9VKOSmprKeCkwINotLRjTbHfkHm+FZAQHTSe0gaEEa1GCnk0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net; spf=pass smtp.mailfrom=garyguo.net; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b=ywbWwgpN; arc=fail smtp.client-ip=52.101.195.120 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garyguo.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b="ywbWwgpN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=irOn6YlrvsyFm/WQRGQ+oWmq5ZoDD0kncs3KDVBd908s+pAifGaIMLccvb35wFd+lfQFX0MtY93wfFr2DTfJ4pufBMQmKPixMDRR6IQD0wXouXs4WEgOtxiCV8v+gharrl+tsSxivSD8Uwt6BvOiJU/94gfDVAnhWvDYDwGpVoEgh1z/goApFaf4S00EAV6auvNjKXa2DTCLnQXOnmm2jzFerHQjBy+RkyXAcjSe3tFhvs9FloWPIb/YidTIGFi/qBgK2XnymiCMCfysgZ0RzqittDqu+D4u4d4ehwDgHmi5543G48sdJpEi2pXm3dJ+x2l4h69DUGkpvVWbtZVhOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ig74jBLf4exwIbUiNoo0NMqworQNGKyMXUY6p0euWJ4=; b=hgzvoGCpxSJsBc96lI6uP53C01nV8k5dMlO8FXmdowGEE1Z/bXttyLYZB34ouPD9jpv1fGkvrfw2mwWYFNeqy0A+hNt8coChYUGKO5GkyPw/p9Y1IXcc+2Ew2D9tisWWNZL+mWWPPQQxUMh4YUS9kgJHdzvkAReWEyM9SBZxVYj1otW+oRvfFVgvE7+5jgVkFsilHO+vzmB6hjry1VsvgJJDQamWeu3pBpL7K/6TqFyLMLq7CRZEzehzYocKR59EIpD11KQf195sdDYxpaa1At4axLyQ6StEWldVzKv1evD3y8mQr2bNUmSZk1EH5+GAOr2jwCX/J9fnD52YS3jXdg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ig74jBLf4exwIbUiNoo0NMqworQNGKyMXUY6p0euWJ4=; b=ywbWwgpN9SUj2bX+IEb8u0+QqKbDKXi7A7LDb3bWqm7QzqpyZd4+BqrYiBBu513MJEdXc0VUwGPM9bNwB+XLei6NPypMCB3WkQ4mPwNaTNjUOKHU2s3Suco4Ousri/mHM8vDtCjOBEKKE+XhCcVTW4vV9cb0OuHZVdQUA3Ii4Ms= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=garyguo.net; Received: from LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:4ab::19) by CWLP265MB6301.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:187::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.16; Wed, 23 Sep 2026 18:20:33 +0000 Received: from LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM ([fe80::f60b:1537:68d7:4fc1]) by LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM ([fe80::f60b:1537:68d7:4fc1%6]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 18:20:32 +0000 From: Gary Guo Date: Wed, 23 Sep 2026 19:20:16 +0100 Subject: [PATCH 3/5] rust: pin-init: internal: use `HasInitData` to provide inference help only Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260923-dev-pin-data-diag-v1-3-e4d7193569e5@garyguo.net> References: <20260923-dev-pin-data-diag-v1-0-e4d7193569e5@garyguo.net> In-Reply-To: <20260923-dev-pin-data-diag-v1-0-e4d7193569e5@garyguo.net> To: Benno Lossin , Miguel Ojeda , Boqun Feng , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Daniel Almeida , Tamir Duberstein , Alexandre Courbot , =?utf-8?q?Onur_=C3=96zkan?= Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Gary Guo X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1790187630; l=6175; i=gary@garyguo.net; s=20221204; h=from:subject:message-id; bh=XBtIXC0M1dFD265oUX37BthhCp4tgf4WqOpUNB+x+Dc=; b=odXrfX27yKHDWly874CndI5qVIAwOmrng0LbrV9jFuH56vs98UfRKMByH7PlWeJVaYtCLzXhS P2SWAyHuP/eA0WPl4Vg4Tv84zd+ZXYOZOMOH7xqc+LxtW1Io9HjN7xk X-Developer-Key: i=gary@garyguo.net; a=ed25519; pk=vB3uIX95SM4eVrIqo1DWNWKDKD2xzB+yLLLr0yOPYMo= X-ClientProxiedBy: LO4P123CA0182.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a4::7) To LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:4ab::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LOAP265MB8560:EE_|CWLP265MB6301:EE_ X-MS-Office365-Filtering-Correlation-Id: f5c23128-28cd-4deb-3a13-08df199f5a6b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|366016|7416014|376014|1800799024|10070799003|6133799003|18002099003|22082099003|921020|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: gAd8LjaK5CRWZpV4MEJ8eVDsus0X2JiegFGv1jj2D/14j9OkgUkrKPvEV6ISMlsZW0W61Xg92uZyZrjcXmXksBPa9i78caMuWGiEdG1A4hML0rxDqmGjfDxb46tkdUc5HwdzRUmF9EiQtgn4Fw4l9xqz/aSseV9bilGjRv5jLxQexS+CvJTMqtiI/CxR45Iz3ANY1AXK1vnPRZplmi4OZblkaLYf9OrZq+kcpybc7EzzeyndQf5YYkWpeMHiB33Y1SfDmfdI/lHV05cvb2omHhiyb/l2DosqpRo25pXpxsD/79pUNLHIpPyQ0qwyftu2drvKcMRbo7qfAbuMNZHAW05nH/sebdpF8iN2HzzDRNGNKUgn30y5njVSxdHj5l+7kxzBNTY5og/FwruXHKEivnWQecec9oW3YUn5fqG9uNbR3P1lgYzvvfPRy9YaOwUL389z/loqkeiR1p2nnP/ELuWnVS5i+SEoUk960+qN7/iy1XEm/SxgnmGagpxBjA7K9J59pdMbMgZTHfUW6MjUwFV53/FXbFQYyyVKEpfhFPaOnfEX26HXZWT5lm/1IxdLxYaOPpqvHe3g5nIbmvyXeDOE0ZBrd9qJudtU16eDLDTVOB2Vrm/gbvjtL3unJFfirgBBXQNJ9QtIjYqmvUvktirxigyE18GJc7HDXSzYRLCUY0IpuL3aF/HeY7/veHb7 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(366016)(7416014)(376014)(1800799024)(10070799003)(6133799003)(18002099003)(22082099003)(921020)(56012099006)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aTdCeHc1eTdyY0lQV2JQcHZLT25GR3IzZmg0bFRPbVc2RllmRzNYZ2N2ZjJm?= =?utf-8?B?ZUV5ZVFCQmxlQWFqaXcxL1E2Z0VoSkxtV2ptUzZ5dXBkazdsNVVkYUJFWVZ0?= =?utf-8?B?dC9Yc3RtRFM4MzQ1WElYbjNLUHlRcGUxZXcrVGE2d0JzMUJQZy83NW1wZW5t?= =?utf-8?B?UXQzYkxPRWo5RFY4bGUxK0Jla09BOHNmKzRMV1FuTTNwOExYWk94czVUUXRQ?= =?utf-8?B?M1RDWGIrdTN5eEVjQklJR0JDNVA4Sm1INU5pVHg1Mm9lZUFRck01UGNoRHlz?= =?utf-8?B?dTR0STFXcUtreTd3UmxJU3E5UWlONGNvaVZaVXRqaC9RRndJT2hFY0VpVWxz?= =?utf-8?B?ZGxldWQrNWV6ZXVIUFBmUytJdHZKRW9hNXFWSFl2QkhYTmlrQlFZdDZmd3pa?= =?utf-8?B?UVdwejRCZndBcFEzbHYrc2JJdHRBVDF5eGtJSjcxdU1DOThXMmJ6UjYrdGdk?= =?utf-8?B?VUdIMHhObnh1TFRhdXNWdVcxOFdHWkZFN0N2MXZjSHNqUXFpMk5ZbnJmRDBG?= =?utf-8?B?UVJxSUlnd2xmTTBRS3NFWmJUWjEyM2VPMHBYak1WcFIwWTJBTmloSmx3TG1a?= =?utf-8?B?dnJkMmIvbWxYeDRLT2NuYVVlOEMrZXF6ZEUrYnlDZWNoMEpwSFVqWUtLaDR2?= =?utf-8?B?K1BpU3ZkNEFxclozMDF5T202ZnViUGlqQmxXMDJsd09idkV4ek1vVzVuZ1Bp?= =?utf-8?B?d0VrY08xTmwyYm5vTzdCUnA4WkJzRXQ5MTdpQldyTkxRb0lqb256b01uNjY2?= =?utf-8?B?aThnb0d6a0xkV1Q0c3A1eTI0clpIdUNMZG84Znhzc1AzUWlFT0dnRkxDWjBB?= =?utf-8?B?ZjAyVFpBV3pzSDBrSlpncXZYeFNMVWRKN2JtMkhRdnNtSCtrQjZnaEhCK3k3?= =?utf-8?B?a0VUSmZwOFFRQnJaUHk5SjlPdkNMNElrdS9XZ0pTQ2M0bzNiS0t2NzIrNmxD?= =?utf-8?B?d2h6ZmJuQjRNS1ZYTThwZEpLREFyWFhTNEovR1RzVW1qdDZFcVVkUDA2aGg4?= =?utf-8?B?alB6TzZVNEdxdzF3eDhaVXQwdjBYSHdCUUs5TVJKaHRnVkFCZ29DWkQ5bjgx?= =?utf-8?B?U01kSy9OUEt5ODV5YVdLd3ppeDRHeFdnRDcxUG15dFBib214NFJtMjUvRU5I?= =?utf-8?B?S2MyMDkxcUtSYTBVamFkZmcwdS9xL0czQStxeWFtZlRDVUVCc3B5ZDdrSkdq?= =?utf-8?B?MlNPd2crdUYzSlNzanhaUC85MCtQVDM4WVRMYkc3bDhFM0xVeHVyY3lDOTRR?= =?utf-8?B?WjZ3SGJmeVlsbGpxV3NpUXdWamtWS0F2SDdTUGNucDMydm1ZT0RxQWVaa0Y4?= =?utf-8?B?ZmNKK2d0MWViSWdsSEZaR2FtbEV0cWFXUmhnbG5xblMrQmpoSkJweGp6a3Bo?= =?utf-8?B?RmRwZThOUTN5Nmg1ODRoT0UxdjFIdlArSU9rWUxpdUFWbzFiaGtaOEk2VFRG?= =?utf-8?B?WlJsV2U2aUFEeVU5ek55ZGxBOS9rdFcvNk5ZM3NpSVJrY2NieXIvZXoyeFZV?= =?utf-8?B?VGlHQ2tSVGlqY0dIODZ2eTFjNWdHcUhyZE8vOHgyZlRiVXlTSTQ0Q1kvbEQy?= =?utf-8?B?VFRHL3JSNStick91Q3pEeksxbGFWRm0zZEpybkFDZFhvc1MrcS92cjh2Z3hC?= =?utf-8?B?bmtBUDZjT1BoUTNGVmYySmV3MU1PVHR5U3NZM296RmduYmgrRGs0VmdLUk4x?= =?utf-8?B?UUxWSG5jVCsvRXJLV1B5WDRXSEs5R21PSHlPY2FVMU0zL0xOZGhOOXYzZm8y?= =?utf-8?B?L2JlSjdKMGxsckdaYytFcllaVkNmMDlPZE52dzFCa0dUQnRtcGRsSThna2xx?= =?utf-8?B?QlBoNHZxN2JKSXRnOVlsSXRYRHFtc0VuWFRzUC9hSnVRYUNHU29scnFZYVNq?= =?utf-8?B?TjIvWFdUYWJISFREWS9mM1dLNEJhVis0bFYvM3M0OHNXcU9qWnFWYlYvclBu?= =?utf-8?B?MVVLN01JQ2JOUzJkUERGcVNoWldRQXB3czQ0NnV2RWMvOUJrZFZlYUhUZlM2?= =?utf-8?B?bDQyU2ZxMTdHZHBzWk1oV20xY2ZKcmpQMWc2cWs4akZocXQ4TVVLRnREWHVH?= =?utf-8?B?MnBoWjhwUkVCTUdNbnZkNFNDck5Xd2lxQjVUNWRLNEp1d1lTbURNOUZ3TytK?= =?utf-8?B?UldURUhwbXhHNXp6bkNEcGF4RzQyb21UOXI3akl0UlJMVks3TlUzMXJ5Myt5?= =?utf-8?B?ZittUjY5anV5QWIxbyt1b2RDRi9oOXY4bE5ITzlJVnNoMXloSFR1bkE4U0RQ?= =?utf-8?B?emwwYW5EckdtdmJXREIxU0ZIVmdNNTFKcElBVXZKQVp0eiswNklmc2MxN1Vi?= =?utf-8?B?MHZtdUUvS0haUktBbWNHd2RGb0dKWk5YN1RlZTdYMndiTFBXSTdyUT09?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: f5c23128-28cd-4deb-3a13-08df199f5a6b X-MS-Exchange-CrossTenant-AuthSource: LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 18:20:31.8063 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: DtS7csiYXFlBuIlZZN0oyv0w2UafYBQAKGiO10YFA9UPSoXy7rCGqSkkvPcJgQNqOKZ9aRONVdz8a4MZEyDehg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CWLP265MB6301 Currently, type inference of the initialized type is done by use the function calling syntax `PATH::__pin_data` or `PATH::__init_data` to obtain the required init data type, without needing the user to explicitly mention all generics. Switch to always use `HasInitData::__init_data` to provide that inference, which will not produce method-not-found errors as it is always available. Change `__pin_data` to take `InitData` as the receiver, so for types that require `HasPinData`, `HasPinData::__pin_data(data)` can be used to obtain the needed type without having to mention the user-provided path again. The expanded code also uses the span of the type, so diagnostics will hint to user that the type is causing the issue. With this change, the error message when `HasPinData` is not implemented changes from error[E0599]: no associated function or constant named `__pin_data` fou= nd for struct `Foo` in the current scope --> tests/ui/compile-fail/init/missing_pin_data.rs:9:9 | 3 | struct Foo { | ---------- associated function or constant `__pin_data` not found f= or this struct ... 9 | pin_init!(Self { a: 42 }) | ^^^^^^^^^^^^^^^^^^^^^^^^^ associated function or constant n= ot found in `Foo` | =3D help: items from traits can only be used if the trait is implemen= ted and in scope =3D note: the following trait defines an item `__pin_data`, perhaps y= ou need to implement it: candidate #1: `pin_init::__internal::HasPinData` to error[E0277]: the trait bound `Foo: pin_init::__internal::HasPinData` i= s not satisfied --> tests/ui/compile-fail/init/missing_pin_data.rs:9:19 | 9 | pin_init!(Self { a: 42 }) | ^^^^ unsatisfied trait bound | help: the trait `pin_init::__internal::HasPinData` is not implemented f= or `Foo` --> tests/ui/compile-fail/init/missing_pin_data.rs:3:1 | 3 | struct Foo { | ^^^^^^^^^^ Signed-off-by: Gary Guo --- rust/pin-init/internal/src/init.rs | 22 ++++++++++++---------- rust/pin-init/internal/src/pin_data.rs | 2 +- rust/pin-init/src/__internal.rs | 2 +- rust/pin-init/src/lib.rs | 3 ++- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/rust/pin-init/internal/src/init.rs b/rust/pin-init/internal/sr= c/init.rs index 1957be83a196..e98182c65447 100644 --- a/rust/pin-init/internal/src/init.rs +++ b/rust/pin-init/internal/src/init.rs @@ -269,18 +269,17 @@ fn expand( }, |(_, err)| Box::new(err), ); - let (has_data_trait, get_data, init_from_closure) =3D if pinned { + let (get_pin_data, init_from_closure) =3D if pinned { ( - format_ident!("HasPinData"), - format_ident!("__pin_data"), + Some( + quote_spanned! { path.span().resolved_at(Span::mixed_site(= )) =3D> + let data =3D ::pin_init::__internal::HasPinData::__pin= _data(data); + }, + ), format_ident!("pin_init_from_closure"), ) } else { - ( - format_ident!("HasInitData"), - format_ident!("__init_data"), - format_ident!("init_from_closure"), - ) + (None, format_ident!("init_from_closure")) }; let init_kind =3D get_init_kind(rest, dcx); let zeroable_check =3D match init_kind { @@ -313,11 +312,14 @@ fn assert_zeroable(_: *mut= T) Ok(quote_spanned! { Span::mixed_site() =3D> { // Get the data about fields from the supplied type. let data =3D { - use ::pin_init::__internal::#has_data_trait; + use ::pin_init::__internal::HasInitData; // Can't use `<#path as #has_data_trait>::#get_data`, since th= e user is able to omit // generics (which need to be present with that syntax). - #path::#get_data() + #path::__init_data() }; + + #get_pin_data + // Ensure that `data` really is of type `data` and help with type = inference: let init =3D data.__make_closure::<_, #error>( move |slot| { diff --git a/rust/pin-init/internal/src/pin_data.rs b/rust/pin-init/interna= l/src/pin_data.rs index 30d9b8b54d8a..a12e5a44a512 100644 --- a/rust/pin-init/internal/src/pin_data.rs +++ b/rust/pin-init/internal/src/pin_data.rs @@ -538,7 +538,7 @@ unsafe impl #impl_generics ::pin_init::__internal::HasP= inData for #struct_name # type PinData =3D __ThePinData #ty_generics; =20 #[inline] - fn __pin_data() -> Self::PinData { + fn __pin_data(_: ::pin_init::__internal::InitData) -> Se= lf::PinData { __ThePinData { __phantom: ::pin_init::__internal::PhantomI= nvariant::new() } } } diff --git a/rust/pin-init/src/__internal.rs b/rust/pin-init/src/__internal= .rs index 15eca4869bc3..f236db47d18b 100644 --- a/rust/pin-init/src/__internal.rs +++ b/rust/pin-init/src/__internal.rs @@ -86,7 +86,7 @@ pub unsafe fn new() -> Self { pub unsafe trait HasPinData { type PinData; =20 - fn __pin_data() -> Self::PinData; + fn __pin_data(_: InitData) -> Self::PinData; } =20 /// This trait is automatically implemented for every type. diff --git a/rust/pin-init/src/lib.rs b/rust/pin-init/src/lib.rs index 4110590348c6..319485dc18ce 100644 --- a/rust/pin-init/src/lib.rs +++ b/rust/pin-init/src/lib.rs @@ -920,7 +920,8 @@ macro_rules! assert_pinned { ($ty:ty, $field:ident, $field_ty:ty, inline) =3D> { // SAFETY: This code is unreachable. let _ =3D move |ptr: *mut $ty| unsafe { - let data =3D <$ty as $crate::__internal::HasPinData>::__pin_da= ta(); + let data =3D <$ty as $crate::__internal::HasInitData>::__init_= data(); + let data =3D $crate::__internal::HasPinData::__pin_data(data); _ =3D data .$field(ptr) .init($crate::__internal::AlwaysFail::<$field_ty>::new()); --=20 2.54.0 From nobody Thu Sep 24 13:39:03 2026 Received: from CWXP265CU009.outbound.protection.outlook.com (mail-ukwestazon11021138.outbound.protection.outlook.com [52.101.100.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 702E718A93F; Wed, 23 Sep 2026 18:20:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.100.138 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790187640; cv=fail; b=j9HRax/GVQLKNlIwmd7HJAuNZoZSAyYllZd2eU/ImlkV99/FKCO/JxBYo8+7BghIoZz/0HPgieg6rTDZZA6q3By42ia1/TAKJH8IBdKqsfkP9WgPfE32ODGEKHBMB2CByxMY5IL395yhXtLoqd2ulkN2N2Q8ZCP52NRZ9/9AkQc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790187640; c=relaxed/simple; bh=5R7NAa5HXecKYEaNTGP8SYZyncqt4Ip+CDV6K+KM3m8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=eSYJhgKqYYITx2ChUdyNuWtwQv5MDZPrs3VREC3IdaIc5NxEL/pAPyEAPlSFhhmCpjynrsFKz6MtD9kUj/1Nh0Vx3xX/aKV7mD7QY3vrMMfj9lrzLlCwWSEXqEAvb5dp8Mi0vqkpbIxAR/GXGJHaA9fukbeY0J9AMHpGgstPPQ0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net; spf=pass smtp.mailfrom=garyguo.net; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b=mEkVJoAG; arc=fail smtp.client-ip=52.101.100.138 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garyguo.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b="mEkVJoAG" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gZi2Oq24iIkK06bCbPuPlKL9QCjclVw2J2296szfKmJBmOraBx1Dh5ScIPaNHxehjfGwnJk7pw3MRHj9YccvdAGbALY43fDKr+zQbRKlK+tLHyNx9JDiPOAgFRUR/e5GiwW/NG5ty1lVBNAbhqg7Zhv7vx2fSCStg5MBOr9UgQ6bnGgGrS3HxLFWYyuPCdGIni83ioLNh0iMZK55fGqroXks/7OtcZJKhtX+bVSOmTP6mf+dPiUN97G7Jwx0dpZgrGUre2GliPy3ejCeTU8zDNn9pu6gl/ZmpdP2RwHGdUPZyQc4zqfz+cKqLlQ/2Xh6m8YOvexLIxov+kqc5TGcWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=8+4CsaKzRYfZ+WYl2rqOKVh+Whgs35scNlNJtEgG2Z4=; b=BDibz9eZcDJaCR17+k8ESmeb3OWyNbwqvi75+hN6B4m+B1/hn8NSqHohB458vg7x1iuxJCdnfukblxwTOlN0RJuxFVXRNvW4hdNVF5fVGbUoiEnpQw5T323A6WltY1K2nppxdIY2jzDC9ezTnbooDq0QEOoOsi1fJ46iBl8uaiB0wb7/00iyPMTXjPqc33BquTQU3BHthLvQ9FqlJREEyFfTqza4q0x6WCW4BYTwX2JnAodmA9DZJhOWpVOOndPC7kV/4CVyOjh+nm0szNFy5LnXUfg0KmNRFzyBoH3yuudlwrHPOhcR2MymEQoDiRtoaMeEdDlbYDplr+Hi5dBN0w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8+4CsaKzRYfZ+WYl2rqOKVh+Whgs35scNlNJtEgG2Z4=; b=mEkVJoAG0ST8nxQB5CS15sXB+j+cMokVzDqBtvMlpKeNU5JfJnODYXK6zSNYBM1+SPnRgqiOlCb0ztjKdhWTeKiQai4Ps7O5iu7dyLGQB0Njce6ys8zaptPdWZef7cAaLGwwZ/ru+4N3+EXjdj+hrB1KU2z2nRv47pXLAP6hdro= Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=garyguo.net; Received: from LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:4ab::19) by LO4P265MB6382.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2e4::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.17; Wed, 23 Sep 2026 18:20:33 +0000 Received: from LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM ([fe80::f60b:1537:68d7:4fc1]) by LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM ([fe80::f60b:1537:68d7:4fc1%6]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 18:20:33 +0000 From: Gary Guo Date: Wed, 23 Sep 2026 19:20:17 +0100 Subject: [PATCH 4/5] rust: pin-init: internal: add custom diagnostic when `#[pin_data]` is not implemented Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260923-dev-pin-data-diag-v1-4-e4d7193569e5@garyguo.net> References: <20260923-dev-pin-data-diag-v1-0-e4d7193569e5@garyguo.net> In-Reply-To: <20260923-dev-pin-data-diag-v1-0-e4d7193569e5@garyguo.net> To: Benno Lossin , Miguel Ojeda , Boqun Feng , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Daniel Almeida , Tamir Duberstein , Alexandre Courbot , =?utf-8?q?Onur_=C3=96zkan?= Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Gary Guo X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1790187630; l=1880; i=gary@garyguo.net; s=20221204; h=from:subject:message-id; bh=5R7NAa5HXecKYEaNTGP8SYZyncqt4Ip+CDV6K+KM3m8=; b=6uOgF5Mox6XMfpKivU84yIVdQXsb+qx+1SAHt1s/Gtu6oi7ZRNowh5MAnNWnZpskkvxkAxQwg Eg66cop9ceFA6YwAlyxqtRbchghAsY0Nyrdcuj/T3esL1/1yfd88Y2I X-Developer-Key: i=gary@garyguo.net; a=ed25519; pk=vB3uIX95SM4eVrIqo1DWNWKDKD2xzB+yLLLr0yOPYMo= X-ClientProxiedBy: LO4P123CA0182.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a4::7) To LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:4ab::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LOAP265MB8560:EE_|LO4P265MB6382:EE_ X-MS-Office365-Filtering-Correlation-Id: 846b4d34-4dc3-467e-0d91-08df199f5ab6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|23010399003|10070799003|921020|6133799003|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: AIO2aFgFy52f2vtCQpY1XhLCkIAgMeGIwV1fKfW+/r4HTN6V2iDw4dSjfoWKyP5lmDdoUv42Ixc+58GgSUujl93OXKV4wqIOISJosdM3oqc5UVX6W1p9SKV9P7q/sz4phwY8JbEOnIp/iqhz5cCZnl2++0EclHN0EU2h7TSvucswGiQ81FqthHvnLHJRvpRvYjwqeHElaADx/YLFJ4ufFTqrP7qoQGox+0vBbCE5wOU7VVhG1zdtAZGgYT11hsmTBDYWtVcaP7LTpUZDUoqKk5gUl/fOadZRzkIGNAq7xiVplsVxo/rTLPbJR8E+cWwm2auMfakREejTUmvy9dYgH1+3dGTJaoJpWmhZ3okPDs5oYtpWgK4ZEHjMdmv9X2RqiPklbnnBEisb5ULombL+dA4QRzcpEPuo5nR1/56ui4Rqh0f9I+uko0J2oRgp/GspqunmKWwq3+21fC8nPfXbrv1nCj7N8VZe3/VMixZL77XVegkAb/Dth9J2EJKe2+ZY+UXYOPG2nx7NqgSgC0eVuXZbmGMRoxkGpE0ysuUjEx49FGXr5/4CIwqzeHi5UQW2/XHnae+mQVd7wZ1IpuCDl8MBVdiLkol3pRWuiL0obw9xZBRXpD6rrNHDhPE/MYlDUdwoyUNVqE1EpiU/XVBj0hOPL+8uyXhXdtY+I2tqj+QagLo+liTCLM45x3uP5OWXw8LWMyM6VqJWNM6XOQJBpw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(23010399003)(10070799003)(921020)(6133799003)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?STRJWnl2OGlhRTZNZUJHRE00cEY1eDZHMTFBVWxLUDVxRFVyeXl1Uks4anB2?= =?utf-8?B?RVBTTllqZVFlQTJ3U09VRUYyMStod2tPUWRnMksvamtlSzR6OS9Nejl0M0Z2?= =?utf-8?B?aEhGc0ZEQ2hma3pocy9yWVNXRG5aeVJVUHpaTi8zQkJreitZK3JGcklrcmQ5?= =?utf-8?B?TW5BWHR5OGdDd0ZTcmtnU3RueTRTMXBOTFJia3VHZXZRZ3VzeUZ2ZVFibzNn?= =?utf-8?B?ay9OZ0JPd3l4T21kMEF4TXNYQ1NRNzVLUnlBOUlkU1ZyQmtEV3dwRHh6ejdV?= =?utf-8?B?NVU2SGdjdXRnbEVFRjEvV2U4bGJLTkQrUGVwQTd2NDhPeDlVcklxaTl0eTB4?= =?utf-8?B?THQrQVB6c1g1TnRZNkNnUDlUSGtvbVhxN0J1VEZqM1QxTVRwVm5rajRmM2dJ?= =?utf-8?B?MG01ZnBtcEdqcDlOMkFrZ0xKV3hEVllSQU10Uk4vTWgzQ24vVmRqSDFoVnZo?= =?utf-8?B?WnJseXQ4dFk1K2ZMb0VMSHNCdTRMRmxYR1VkcTEvenQvSXI2RFg5K281L0NC?= =?utf-8?B?RTgwMUJ6dnBKd3ovM2lITTQrWmkrOUJGSFgzOG1wZ2k5QnhRRjQxMXQrSk9M?= =?utf-8?B?UmVQNHM1aGk5T3pKVnZuYW9OV0ZtRE9kMUxteG9wMFNKajVhVitHQnRJUWFR?= =?utf-8?B?cTA3KzVFU09zWFVNZC9INVJpdVd1cDNzcjBhNU9ML3ROZ0tlNCsvM085TW5H?= =?utf-8?B?L0ZLbmVEc0JhT3JvUSttSFB5VEtnbEN1R3lYQjdIQ21mVlZFMHdYNjJDYW4x?= =?utf-8?B?OVRMTkRjaDl1R0thSVJ4QkIxZFJqcEk4SnExRmo2anlZT0lYSkhPVTNMMW9x?= =?utf-8?B?NngzL2lrWlNTaHczMFkvdkh5Z0NRaGFiR1RsOXo1ZDFwVnFqck9ScVhuMG43?= =?utf-8?B?MTJzdkF2cVBZVnIyNUdFSlk5aWRFdVludzd1STZTSnhsWGFoY0Erc1pyYlNi?= =?utf-8?B?KzJRQXBiOFllVXpSZHFWN1VsejBIM0VhTVNiL1JOVFdJTG1KTSthdGpLNWxy?= =?utf-8?B?R1RuTlhvbnhBTTkrTHhjUDZmdUkzampVbkplaUExRC9wNzV4Q2Ftb2lGNmE4?= =?utf-8?B?QWMwMEFXZUxBWVlJQ3EyTmpXVmp1aVZoOEZxMXZqdFVrUkpIbnk4YUg3aGFS?= =?utf-8?B?eVdrajcrYzBYY0RwNnVVZURFeHltUUpkVVJubVJwMThGSWZtNXhWR1ZBZ2Yz?= =?utf-8?B?blMweDB6NlJNaWNTNUdkTlN4cnk5Q3huSUZTZ2dydTJUWDJNY0lmSXZNb2dk?= =?utf-8?B?VGdtZDM5SXNIa0pkczFjMCtMRmtBNGdJRzBhMzQrekNPY0s1Yng4WUhKY2tV?= =?utf-8?B?Q2wrdytqaDR5VDB6QktCOGRSK2hVT29JTVA3eG82S1NPTUpXc2lqczdndmJR?= =?utf-8?B?MHBFK1l5SzQ0aGErYzc4RlNFdHFXNmtNeklBR3dWVmh4OW1tdFBIVnlkK1lC?= =?utf-8?B?TFNmZDN6dE1GTEhTRjZWL2MzZVJ6d05sV1lITWRwZXk3bnpOZkc3MDFpcVJU?= =?utf-8?B?eXFNek1hMEtSTHl4K3RMRmxQNTZLQlF2T1BQenlRSDcxOFlSVnVjMUxVTGxt?= =?utf-8?B?RTRlLzZJZEpMSkpuRE5XQTJjQ1UwMk91eG0wT1ZkQzUwaWRRVDNEOVVkV3NV?= =?utf-8?B?ZFlRNWFQOWVRQWkzdHFuaFNBRXhSY040SHZONXg1U0piQlBmcGNUWXgzSFZX?= =?utf-8?B?WURrbjJVWFF1S1FKbTF0d3YzZU5GQXVaMGZBZ0o0Q2RBVjhWbDBMWFhNQ29R?= =?utf-8?B?Z3VicHhZaU1oM0wyZnlDa3dNNWtQU0MzV21yWWxleFUvR1hLRWVYL1MyMith?= =?utf-8?B?LzFvTzB0a1I1WUF4Y2tiYi9mQWxoYkNDSWZnNjhYN3dWV0czMTdtM2podWhm?= =?utf-8?B?QmxnWUMyT1NqUFFrRm94blVqc0lnWWZFWEo1YjdsZUUwb3pKbDVLd2RRRldt?= =?utf-8?B?cDN2UTNCM1NWNVgrakZpZWdJU1BBYzVvNFpseDZSOTNXYUpsVnFqc04yTjZa?= =?utf-8?B?ZUtVQUJ2SFlFKzdLOWcxK09zbUw2UGRFYXVLMG0xRklhcys5ZFlLdGg4MktM?= =?utf-8?B?WTBab1NvYlRWbHV6NTdrTkRUWDlGWGlLbzNHSW9FS3RTSEw2Y3BjMXZwbkQw?= =?utf-8?B?ZnNZdmtObHFNSzIrMjZOSkxjRHVISEt6azhFR2JITnpiblVqSFFrUjBvbUhL?= =?utf-8?B?U0h2S2svVDJhNDZOSGozMXFDV3RLbVJEa3pwWnhFVFlKSFF2N2U1UGZwT1k3?= =?utf-8?B?MmJndDM5cVkzTUh3dVNJdlVlNjY0c2VzekdYUjV3bVIxa1UvMzRJQUduRjJZ?= =?utf-8?B?ZExFTjRRSFVad1FjNS9seW12azBvakRlcjgwVkNFRGZiQTBnRVp4QT09?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: 846b4d34-4dc3-467e-0d91-08df199f5ab6 X-MS-Exchange-CrossTenant-AuthSource: LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 18:20:32.3707 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: RVfXeNU1icSR6br5KVbTDU6/pG2SWa2d3R7peYzdmKpKd7hDP6MfZsxWCBXBQOKiu/xHDxkAZZkg8QhfOoK4uQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO4P265MB6382 Produce a more helpful error message when `#[pin_data]` is omitted. The error message changes from error[E0277]: the trait bound `Foo: pin_init::__internal::HasPinData` i= s not satisfied --> tests/ui/compile-fail/init/missing_pin_data.rs:9:19 | 9 | pin_init!(Self { a: 42 }) | ^^^^ unsatisfied trait bound | help: the trait `pin_init::__internal::HasPinData` is not implemented f= or `Foo` --> tests/ui/compile-fail/init/missing_pin_data.rs:3:1 | 3 | struct Foo { | ^^^^^^^^^^ to error[E0277]: `Foo` cannot be used with `pin_init!` macro --> tests/ui/compile-fail/init/missing_pin_data.rs:9:19 | 9 | pin_init!(Self { a: 42 }) | ^^^^ unsatisfied trait bound | help: the trait `pin_init::__internal::HasPinData` is not implemented f= or `Foo` --> tests/ui/compile-fail/init/missing_pin_data.rs:3:1 | 3 | struct Foo { | ^^^^^^^^^^ =3D note: did you forget to add `#[pin_data]` attribute to the struct? Signed-off-by: Gary Guo --- rust/pin-init/src/__internal.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rust/pin-init/src/__internal.rs b/rust/pin-init/src/__internal= .rs index f236db47d18b..cb7a0c3066b6 100644 --- a/rust/pin-init/src/__internal.rs +++ b/rust/pin-init/src/__internal.rs @@ -83,6 +83,10 @@ pub unsafe fn new() -> Self { /// /// `pin-init` relies on the correctness of the helper functions defined o= n `PinData`. /// Thus, only the `#[pin_data]` can implement this trait. +#[diagnostic::on_unimplemented( + message =3D "`{Self}` cannot be used with `pin_init!` macro", + note =3D "did you forget to add `#[pin_data]` attribute to the struct?" +)] pub unsafe trait HasPinData { type PinData; =20 --=20 2.54.0 From nobody Thu Sep 24 13:39:03 2026 Received: from CWXP265CU009.outbound.protection.outlook.com (mail-ukwestazon11021138.outbound.protection.outlook.com [52.101.100.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E724E420465; Wed, 23 Sep 2026 18:20:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.100.138 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790187643; cv=fail; b=qadOv0YJ1bsHkNN8ASpQXy1ralyUwlbee+SY8cHpMP2dkf3v/qmCFCV4ZgRgRGgWZhvdnGbkWRG7Z9ym2HhpGo+zgiRsy3qAvuqj/621mDrnI2u9nR7XFGS21o3s10FliwyqHnKYxMvJD8H8n+lZo9bLP+iVox6BoAnqf7ZdIu8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790187643; c=relaxed/simple; bh=YvZfdNwUOwsQs5UFHn7sZEmhY6YcE48I0OYS7o9T4zY=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=UxiPkhOrkBQ9KHJwY4HDgnri8eZD+m5k2kaqaxLFhba5X4wVDk6+ynU4HGbWBcovrqun+mgoQ23BuP8lVTnVZoUKnYPoZKwF+duprIbwAFHrzkaRqg09JBQKbOktpw570zfqJhezH/9hJFhvjvt7617+bYVHPdpzkrxMsL7YMc4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net; spf=pass smtp.mailfrom=garyguo.net; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b=hzvkNrcQ; arc=fail smtp.client-ip=52.101.100.138 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garyguo.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b="hzvkNrcQ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yPpkUw4FV66LGZv1lHdeBuLUBYSFqxoDaf2Rb/D3wv7zzIyuoHXrKND/c2pK3vb4EzPpg0ORfdgm/cz8ztDnvsr9NSkn75bdzLlAOHBzoksNplOWMDoCg4RI+VpSCly2j3CK3VuEU7567PDuONPeKfVnf4vjrFmt+rEDbbmB4WAGPJTGez5Otb6k3dxmFYMxaJeTVBlr9u7Jb9gcK4rMexPSZHOCe0fDNldYqrU/q5UPEa95VPyE3EN7UcCyWLaIOAY34h3Grnm5qId+IG5YQxXRWR8QHadcy5Yd4zvR+L11FrOCTXuH0aQPw5FrCSvDrfio2DcNrFBnVZdjGBDUfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rUsp1/YjtYQF+4ZL5P0BMlccI5QrFymNSJEjTkLK2U0=; b=ZORsoBe66XhuRbhrXQcT2CzjDs0RJ254l/UGzxw7SQig/44JxQGhOztW3CAPcGiG5lcbyqw1Vjf+OtKzhq/9kuXsV19FmF672Up3Oi2DpuBNbK/bw/UuLNFmxG64NG5bIc5ZrnoUb9LKKR8s+8CFqHNm4JPpCAvmQ1BZp/hmc85deYXOVsEMpxpYLGxIwWbJ8o/+bI+OIosLN+2kdMp4qUOUxWKyIw/dvd/ZosO5nmrxf56uKMR+cS8m0ixlww/1WCPm1wVuQO5G3UekDOtRN8jcptmssDKSxejTvikqef5Rmucq9GQaCL92mIXoRK3nyxFcw6k0ytojYVrr340auQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rUsp1/YjtYQF+4ZL5P0BMlccI5QrFymNSJEjTkLK2U0=; b=hzvkNrcQhsGnUiPA4xgrO5++j1W+LBRHc64wXRpWrQQISo9xASh+MOCeJxySqTWF7o4evjvA9qZWEpEKOEPDzp85hv8nJoij9VR3XPTYyYM9KOLc9eloK6S4Q6F26aoQM+JpqpQ5LnMRhi8d53+aSdRjCX9RWA5DCXKiBfqrU+8= Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=garyguo.net; Received: from LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:4ab::19) by LO4P265MB6382.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2e4::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.17; Wed, 23 Sep 2026 18:20:33 +0000 Received: from LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM ([fe80::f60b:1537:68d7:4fc1]) by LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM ([fe80::f60b:1537:68d7:4fc1%6]) with mapi id 15.21.0451.014; Wed, 23 Sep 2026 18:20:33 +0000 From: Gary Guo Date: Wed, 23 Sep 2026 19:20:18 +0100 Subject: [PATCH 5/5] rust: pin-init: add diagnostic attribute for `PinInit` and `Init` Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260923-dev-pin-data-diag-v1-5-e4d7193569e5@garyguo.net> References: <20260923-dev-pin-data-diag-v1-0-e4d7193569e5@garyguo.net> In-Reply-To: <20260923-dev-pin-data-diag-v1-0-e4d7193569e5@garyguo.net> To: Benno Lossin , Miguel Ojeda , Boqun Feng , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Daniel Almeida , Tamir Duberstein , Alexandre Courbot , =?utf-8?q?Onur_=C3=96zkan?= Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Gary Guo X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1790187630; l=3057; i=gary@garyguo.net; s=20221204; h=from:subject:message-id; bh=YvZfdNwUOwsQs5UFHn7sZEmhY6YcE48I0OYS7o9T4zY=; b=nebaay/Aev9X6j6FlgjvZBv4tCRq5gWm16SeEMHEO3wJf0ADVSz8SCz/Gpmgvxmt9O333eb/f ZIqhLC3Ve65CipLCOM9vWQGJ6qmnY6EvWh0iSrERfX7NLkklyaefb+H X-Developer-Key: i=gary@garyguo.net; a=ed25519; pk=vB3uIX95SM4eVrIqo1DWNWKDKD2xzB+yLLLr0yOPYMo= X-ClientProxiedBy: LO4P123CA0182.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a4::7) To LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:4ab::19) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LOAP265MB8560:EE_|LO4P265MB6382:EE_ X-MS-Office365-Filtering-Correlation-Id: b7dbb0c2-91cf-4f2e-2684-08df199f5b04 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|1800799024|366016|23010399003|10070799003|921020|10067099003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: aoxBAzWe/4p6zFC/wWfNzzUBbFShVDdCWIhICrx01dulAhba9+X8ERNW8xfiFf2iFEJxbXdBQ/ynEf38zhfsn6H4FqVPoUgGqblNW7Q8VZaYWqltssHV6myx6G9GkmuH5r9J/4s4JKSMF2nlsazLCCSFiHTMj+W/dEuPS5bQtfW44zDcgTvuk0FJGwDaZqh9WD5+eBqJiJZBP+VVkDNQF6t8iRIRgphvz1Nwb/hwXyCQ0mNS3/4F4J1Q6OYaI+49TQgwkpfH1EBuqSyACkoMtGY4cwvFtcqlHocthZE/paMQgXb7+hupszvgl8FbfWhzhAkTP1TyzrUQmc4sfMRgoOOX6uOd1zqpS0D8zvXKbkkGdFDsPkkwJDlAzMp1JJIgpKBnvEl8ztiHkXAviDCUTD+3DTXWFU9DCBELjq1DBkVR7AgSVs+va7d/0vMlJQCYBYXUrZsGbgE5Z/WpYa4vTIt2t8mu5T0drNyJpfr9N/prL/wL8J6Ay0PKtp3d8JHRurcT+LDj0fRFGpG7SUVuIgve64YMTLqDmpRpKSyuUpI3asUh1NYko8TR3UBMbEvVQwqnfouRdQuGSITaHE3MZ0OjlCSmh9ey8dZ5WUKNhz6QSvVuPMLGX7PJVo2Isld/cMs02uyMhz5Uq4WLqAMY2s6dv+e27oxdx1hfyw2DRx+oKRbpDGPbCOLtujeWRSLtoRWdxdKt2INIMiVJhZ2xAw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(1800799024)(366016)(23010399003)(10070799003)(921020)(10067099003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NXgreCswN3Y2U0lIOFVGdXZFRVJUN3hpazgvaDBjYlhjZ1pEWmxZNEhVa01z?= =?utf-8?B?em9pUUVCRUNqdkN1cnR5MDJyNFNNUHpCNmt4TU9iUi9TcGZWNTdjMFBhN0k3?= =?utf-8?B?dkd4RlYzQ2pYREZqVVZoVzN0Uzc2WnVQWXQ5NTU4cWE3WHZrdTNVdlBGNWwz?= =?utf-8?B?Q1lIdnFNRUJvUExWSUVMZWhYZ2tDMzZwcFZjVHlwVERHOUtXekhrcWNlWmhq?= =?utf-8?B?V0d3dTRVWWFWNGxGM2FiUG1iMzA1bVlCZ0REbnlUWGtiTTRKTE9IZlVwMFJV?= =?utf-8?B?T3RteFNaYUxLQUg3Nm0zRmxXRlZzMUhKckc1bDdNUGl3dk5ZSmJHQ1lZdUF2?= =?utf-8?B?NnR6aFZpZFZWVTlreisvOEUvaXhJeG4rRmI3dlM5MUdRY29ndUc1T2plOVdl?= =?utf-8?B?RUh0czlaSW1TVlVKeUlMRTVGN0o1emdyZkQ3Nm43NGY3NjkxakxVdmE4MDBE?= =?utf-8?B?cE1FWUxLYjEvbmo1KzdYbzJsR0hDV3VRVm4zQ3VZdGU3Vk5JQld4L3VWL29w?= =?utf-8?B?SXpYRXpia1o2b2dJWFNCRDVxdGpFVkM5S1dGVjE1di8yTUFXaTkzQk9iRXEy?= =?utf-8?B?QyswaytIMDc0SjhQNUNlSjZva2wvVU8xdjU2TkVtSFUyN0lYcjNseGU5OENP?= =?utf-8?B?bE51TGxJZ0NwUlNJNmU5bE82b1lxWHJ6ZC9tSTlCRVBNN0ZCK3VSRG1XYVlE?= =?utf-8?B?eWJvK09qQlQrRS9kOE4xeEMwbE10Uzc4akZ6MnJUb3ROWEl5MTI0aXpDODd5?= =?utf-8?B?SWlWNEhDNVpkUVpid3FqS0JPREZ2bG1sNHR0V3JFV3BmajFFOTRJMGc2c0tS?= =?utf-8?B?VHV6MkNWMElOWXNuMVAyT05qM3RMRm1COFFVNzNrTmx0b2Y2L1A1ZmRXSmtL?= =?utf-8?B?RWxiRm9HK3RhcXFGeFBKcnJKUEltNk5rT3gxMlRlSmxGTUtrdlVuZHdDYUlC?= =?utf-8?B?emZCYThobXliQXdzbGFIbUkzMVRocDd0WEdwdzFXNjJsZjFxS1RVZUxVbXpx?= =?utf-8?B?Q2NkRXJ0RmJaczJmZXB4WlFzbjJBdC96SDducUtQZEpOVUthbGdNaUZ4Qm05?= =?utf-8?B?djBKSU1Wbm84S0V5YXJBcVdxbCs2RWJwcTJRRkhhTzBuTFdPTmVJdVlJNWFW?= =?utf-8?B?VlBpU3dkaThYSGxOMmhWMGd5THVKeTRDRnZzUWFIcFpoTHVyb2hrWGZSUU1X?= =?utf-8?B?TEF5SG5WaEwxbmluS2JMWi9CNXd6NWxUN0U1NTM3ZFZQZlI2ZmtXYXE1b1FQ?= =?utf-8?B?ZElxaktKRDhtcmZObFJ1RTlxY1BPOHd6cDhPUWpvdnRqd0p6QkJNVGdxalRX?= =?utf-8?B?b3AvQjU0MGc4ODIxaWQ4NHNYTkw0S25vT09pdkhYMlVGUndJelFzc2dWK2dm?= =?utf-8?B?cnhrU3JZV1AxZm91cGdtcUh1WmJVQzZaZWJQOEdodytGSldieU05alJ4REtP?= =?utf-8?B?Y0N4OTVtWDFvRi9NcnFLZGIzN0J5Mk9vTHQxcHZLT3lOaUhzYXFCVHJvdHBt?= =?utf-8?B?dXJkYVFRSzc4NElSMm4waVBuVEpvOG04QVh4ZzVXb0tGM21MVFBJa0Zna1FG?= =?utf-8?B?YmE1b01qd2I1NWd1QXBnamxBeTZmem9MSitET3JnSWwrYXdVSUx5bjd5VzhT?= =?utf-8?B?UTgxeG5DZmFxdERRRkVOS2NaZEdLY2taN0hOMm14eEpOZjkvbEo0K21WbzVk?= =?utf-8?B?K2w0S243N1dzZ3d4T3lrNUhoUmNSVC8yZHhyQ21Hak5uZmZXdVFobUxTVlVY?= =?utf-8?B?bVY5MndOTk5HV2xHR1VjK0Zwb0hHNElBL2lXN0pveHp1SEdZeGlObW5ia0NV?= =?utf-8?B?Zk1iZTV0Wld0enh6aHljaXQ0UWlaODZoRzBMNVhEdDlVd1hEdFNibXZ6RjA3?= =?utf-8?B?Sjl1OUxSL1BWMzN2cFJQb2lUdkdNVHk0NGVHTUh4UmlPQThwbkNlTnpjNUVv?= =?utf-8?B?MFVQcTdJUktteERWR3dFMytnUitJV0t0Zk8za0JodElpNXRXa1NRdFBjUFBn?= =?utf-8?B?TmpBU1YxOW9pc0c2NnVlRW1hN2dQaDZrMGhvSktLanRxeDFKN0FMYkxBdEtu?= =?utf-8?B?RlZSWDUwTEU5QkNFR3R2dlk2bzd2QXJUYUlYS2hFdXlUMWI1allqSTc3aWFq?= =?utf-8?B?d29rZE5JdjV5blpnc3pZajVsOFIwV2FneFoxVHV2eFBIMGZaWkRVbC9uZVpj?= =?utf-8?B?REwxYm1sM1VvWGRPZ0ZiZnFIdE1BMGwyZDR0T2tQekcxTkl0c0UrbEdkcnlU?= =?utf-8?B?MllhSSt2WUR0S09hYkpHQWtvU2ZCRHRuN2tEQkx2Rm0xYlNFRUdoc09acVdE?= =?utf-8?B?dHZQajBPR01lZVIyM3NwYUVUMHhKYnBKQ3lDVzZGLy8zdVpkdXhzQT09?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: b7dbb0c2-91cf-4f2e-2684-08df199f5b04 X-MS-Exchange-CrossTenant-AuthSource: LOAP265MB8560.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Sep 2026 18:20:32.7995 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: YX1BmGHLA25VwEoAoWt2rWeYB2lI/cEv4VWZtUvFd+wz67m4l4lS/kRGqs4I/I7cYOx2fQbW2IsqBpliHeIx5A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO4P265MB6382 Give a slightly more useful error message when these traits are not implemented. Before this change: error[E0277]: the trait bound `impl pin_init::PinInit: Init` is not satisfied --> tests/ui/compile-fail/init/invalid_init.rs:19:16 | 19 | bar <- Bar::new(), | -------^^^^^^^^^^ | | | | | the trait `Init` is not implemented for `im= pl pin_init::PinInit` | required by a bound introduced by this call After this change: error[E0277]: `impl pin_init::PinInit` cannot be used to movably i= nitialize `Bar` with error `_` --> tests/ui/compile-fail/init/invalid_init.rs:19:16 | 19 | bar <- Bar::new(), | -------^^^^^^^^^^ | | | | | the trait `Init` is not implemented for `im= pl pin_init::PinInit` | required by a bound introduced by this call | =3D note: if your type implements `PinInit` but not `Init`, you migh= t be forgetting a `#[pin]` annotation on fields Ideally, we would generate differnet message when `PinInit` is implemented but not `Init`; that is not feasible with today's `diagnostics::on_unimplemented` attribute. However, the added note is worth it because in `init!()` is more rarely used compared to `pin_init!()`; in most cases `Init` being unimplemented is the result of missing `#[pin]`. Signed-off-by: Gary Guo --- rust/pin-init/src/lib.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rust/pin-init/src/lib.rs b/rust/pin-init/src/lib.rs index 319485dc18ce..d1ed0561bb27 100644 --- a/rust/pin-init/src/lib.rs +++ b/rust/pin-init/src/lib.rs @@ -966,6 +966,9 @@ macro_rules! assert_pinned { #[cfg_attr(not(kernel), doc =3D "[`Arc`]: alloc::alloc::sync::Arc")] #[cfg_attr(not(kernel), doc =3D "[`Box`]: alloc::alloc::boxed::Box")] #[must_use =3D "An initializer must be used in order to create its value."] +#[diagnostic::on_unimplemented( + message =3D "`{Self}` cannot be used to initialize `{T}` with error `{= E}`" +)] pub unsafe trait PinInit: Sized { /// Alias of [`PinInit::__init`]. /// @@ -1100,6 +1103,11 @@ unsafe fn __init(self, slot: *mut T) -> Result<(), E= > { #[cfg_attr(not(kernel), doc =3D "[`Arc`]: alloc::alloc::sync::Arc")] #[cfg_attr(not(kernel), doc =3D "[`Box`]: alloc::alloc::boxed::Box")] #[must_use =3D "An initializer must be used in order to create its value."] +#[diagnostic::on_unimplemented( + message =3D "`{Self}` cannot be used to movably initialize `{T}` with = error `{E}`", + note =3D "if your type implements `PinInit` but not `Init`, \ + you might be forgetting a `#[pin]` annotation on fields" +)] pub unsafe trait Init: PinInit { /// First initializes the value using `self` then calls the function `= f` with the initialized /// value. --=20 2.54.0