From nobody Fri Oct 10 02:41:51 2025 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2076.outbound.protection.outlook.com [40.107.94.76]) (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 2514222612; Mon, 16 Jun 2025 03:34:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.76 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044891; cv=fail; b=CC5v5ehKWIAVg9PWtIDfQZqeB0siB/gNoEfB9yXO5pSV22CPW/0HQTh+ZvH3z52YAG2DEyfwUfW6DyxhLLUQpP68EDBRfABPcTjpOifbh4egzPOa8TVpd59HMC3Att1w6X90GBXVAGyAw6D0gFpIc6TCb68Hu/Tt94g3XkUhpfE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044891; c=relaxed/simple; bh=WDcpR4ZwJjVdC2XK5Ed8TS4GKU9D29JYROZuKIysv2c=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=JsFHnD4RhJJyAVkmy2Mbm5zVOjQSUi6KnTqQmIjob6Td3rEtl4rQMdk8Y5dz+rxuLv3O5XEbplClmfkZ3IcLakgKoig/XnKrPxRkxlrkxjx0CbnGgCNjMDVDgcxcllNhPscPFFyLKnCRK/U7kdgpzxQ4AfBdOiH//XeKZdN8d1I= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=LetJ1JNQ; arc=fail smtp.client-ip=40.107.94.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="LetJ1JNQ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TaoN/HU+/JvpuHUswuKu2O/IXUVggX69W9RlP6i0CD9Nfk4Yol8CfNJpN0alnHS2+xYLxuhdOzWgH0VUVLeFvffeAXBigCxXy1JIy4zOZ0p3VfUnvUB8q8ioscDjTdd9A3vS+QK9MEDZ1j+QxjgjbNlOINbcWQK9EfkW+4D1aQ0f6sab58SyNhbS3ipYAqKmrmjDgp/O2WYZLRigZ+gZjI56bFcI+M+fyR4v8DXZ9XBzFMTOgbxUT4wSjPy3oyMbapqC9FFTPPqYTxPxTy79juaPkOwQkg+vfAvK9VqbfozrF228ZvyjjA/Pw5HHIjQgC7OpOiUJOVttRp9oOT7rQA== 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=RIhls/BR0R6ehXYIYaODrSn0lhyRniHGrWGiHhpsseA=; b=wMPFGb4VZ/6n+G7bo3xtlOqMNZB53gcgQQ4FDmHqsSeqKOlQYHgwUmN1NqsX9z/4DEBl+fspE8+DGx7/Tg2AeKcXWML238l/TeQE+Z5kO7aF2N9+4b2baiaDXcfTNrD6Aqq6fubsF/AFBYqPohhaDEqPbPMDE3LKPMuvi6ZSAAw6rKk3s98HXfSTpcBd1kuxiE9Xo6QH7KQUYkpHy4IOc6xjpObZDxDVBhL1cGAwObrNJNsIKMMJDN9pSd7alcHtPmxl7bda79U6ri0WwyufAu80sYO2ijzElnp8GIWCU+MuMx7rBuSVd5C/qyfOv/hP3xruNBAsYpggaN3X5EmRhQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RIhls/BR0R6ehXYIYaODrSn0lhyRniHGrWGiHhpsseA=; b=LetJ1JNQVa6mHyvpGHxbbtR6BWDkQif1rzPCHyfxW9JGI0aiZ1YtixOZZyz59Ybzv6uStpInGWjdHNnhxxqK3dIGo+MlFNpD0wcy/5g1R67vV2myN+jnJrTL86zCVweorzcazxNeYQgJiPOZ+hjLK5e0YnAmMP0PbOZitoZBlG/76sTURXBf3nOe98AlwKwL5Ye/zX4MB5QWLgcsyQEsvahv521g39TzICkJqT24qq+6AP8ZDZH2iN7V8giWDt+BxXWmhKBl+t7s+ZRUjwbpuNC3NfSPNJOUl66aaE6RzkhZqKpOcCTJKd8urr25/ZStOqS5oUCDRQWY0RQFN7suNw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CH3PR12MB9027.namprd12.prod.outlook.com (2603:10b6:610:120::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.28; Mon, 16 Jun 2025 03:34:48 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8835.027; Mon, 16 Jun 2025 03:34:48 +0000 From: Alexandre Courbot Date: Mon, 16 Jun 2025 12:34:05 +0900 Subject: [PATCH v4 1/7] rust: alloc: implement `Borrow` and `BorrowMut` for `Vec` Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250616-borrow_impls-v4-1-36f9beb3fe6a@nvidia.com> References: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> In-Reply-To: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> To: Danilo Krummrich , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYAPR03CA0010.apcprd03.prod.outlook.com (2603:1096:404:14::22) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CH3PR12MB9027:EE_ X-MS-Office365-Filtering-Correlation-Id: 6f876054-7b8d-4ff2-b943-08ddac86bec0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|10070799003|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RTVIWHRZTDl1cjgxUXM3Zm5kbUhiQ2tzL1J2blZTUk03M1VOOW4rcnY5NG9y?= =?utf-8?B?anNWSUhTTHpwR1A1M1RuL1VhbVhaaFMyUk9NOGp2UXdtd0NhUWhuUktCT2Rn?= =?utf-8?B?dkp1b1hHNVVBOUEwRjlNRTZvTWlncm12T0ZRRjUwR0FpaEZLMFFsR09PNEJq?= =?utf-8?B?djBvUzJJdXJQd2NCZ3VRcDRrbjg3VDZ4Yk9GeXZWQmt0LzMrZFplbDRHM3lU?= =?utf-8?B?Z0M1MmZsRDdSNmh3MGcxdVVJd0NzWnZqdC9pNUp3V1RmdVpKTFlQcVBiMEJo?= =?utf-8?B?aUhpQWdUdGd6TWo5a1hKM2o0eXFwMXBqU1QzdFFTTFhIWHh6MDlQSnFIZmVj?= =?utf-8?B?T0MyTXV5eE1NYVVsa2V2dmZSaEVYSkZnTGY0enp5VFhBbHEwNUcvcjJwSGZM?= =?utf-8?B?aHEyeFZrNUdxM2xwbzNWamcrZWczUTI2TG1uaU92UEc0VGN1d0k1NkllZFZH?= =?utf-8?B?RHJ0bUNWem1Ec0E4cWJjQkN4ZzdFMTdqOTZLWmRCeGFRTUJINzFsdS9ZTFdl?= =?utf-8?B?aFRQTXo5T1dXNkNwMFRtTHRnZEpBVlJMYVhOSFRNdm9ZNk5pTFJ4QjRIZDRt?= =?utf-8?B?aTlhSGdDSlVOM3A1SW5tYVdWRzJ5c2swZHo5SVJjYnRNTmhNS0EvK3VudEdK?= =?utf-8?B?VzFLU1B4R2FIc1JSbHVGaXFvbUoxeVBGQ2xRUVJ3UUZINnpuS21pbUdsZzFm?= =?utf-8?B?QWNXV2VBZlA3c1VTWDNlQ3czUE4xWjIrd1ZoeDhsWE8vajBLallsMU8yOGh5?= =?utf-8?B?U05ObDE2c3l6SFB5d3oxOTUxZzFaZGs0Z2c3YVp3aUp2U0t5Z1NCRkZLV3p0?= =?utf-8?B?Yk5JdGpOakZHb3VrT0NyZnVHcUVFV2RqZ0tTaEFYQ0NoelRyK0hvWTRaN0Y5?= =?utf-8?B?b05nQitjZmpDWXFaWE80anM0TnJ6TzhkYU5mZ2IvdUVOTzZBTTBPODJyM3ln?= =?utf-8?B?NkhzejVRYzNTdEEydXRDSXJxQ09xL0cwZFNFc3dMQXBXQXd0NmxoYTBFdEsr?= =?utf-8?B?WkxOS2ZCRHNTdE1OUnFmajUxYkZXbFRLZUJXMWYwRi9RRkt6ODA1M3FveGVi?= =?utf-8?B?YlZTTmpNL1hCOWF3VSt5cVJncnpucVJQWUxBNU94RkJ2cDRsRGZSZ0t0MHNP?= =?utf-8?B?TitHb1JZUTl3T3lyRWJlRUtkZFhtUmYrQTRVQ3E4MEVIZStuN0FkQWhISk1Q?= =?utf-8?B?Y2EzK2lqRC9mN0ZvYWlsRDZPckNhcWN2WjhRS2l3N203NFhBYVpEVUJhN2VO?= =?utf-8?B?ZUFtRlQwbHFKSGM4YWsyMGtIazVWa0dlVytsZ0FLeWlVbEJtcGRTQkhoNjVo?= =?utf-8?B?a3pnMjR0MTViUUw0bjNNd0d2K21VdDRpZjIwK2JlRTQ0bVIzYVJ5MGpGZnZq?= =?utf-8?B?UFJXTml5WGUyNEptTUp3Wm1pdXFBOVl1cENCaWZOdjNsWXFLa2JJZFoxRzEw?= =?utf-8?B?RlZHVFQxQUxEd3FpTXlBMVVQUHVQa0UzRFN3T0RERXJUQ3BuNjJpVGRsOVV1?= =?utf-8?B?WW40WDE5V015eGhVUTRHMFQva0I5aFJXZEo5L0hxZGVncDgxczV1SHhiMHla?= =?utf-8?B?UlRVTGJxMXd5Qm9aYS9NbDdhN2lRZS84RUJPTmpSNGpaM1dVWXBJdlRDd3d5?= =?utf-8?B?OW5IeWtHRlBpQVo4OURldjExQ3JGYkdSNWZxd3VBRVQyTDNYZno3SHRUMlJv?= =?utf-8?B?dG14RWVia3hFZWNob1hwMVA0eHR4b2c0NitYa1pwWDg3dCtrb085TjdGMjZX?= =?utf-8?B?d0pFVjJ0Rk9qZEI1bFRkeHZTRDdDYklLYkUzTjcwRUxBTUhnY3kwLyttQmRQ?= =?utf-8?B?VHpZU1VpY2kvYXlwR2hURVQxZit2VFJtZEpxTDRuVVpXUTY1M2YwWjhTK1FI?= =?utf-8?B?ZFFrdTJ3MzF3SGVCMzAyUC9QeFFQYjljZzJhSnZ4Zy9HalJlMG5PTUxOUkp3?= =?utf-8?B?ZjErZ3MvRWFWNUJGUk9vTVpqWVEwVDAzMHZ1RmYxdXJQOW5mdzRmN1BLbFBi?= =?utf-8?B?VVFpeDBwd2VRPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(10070799003)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?K1k0S29lRktpeGVUdUlmSm9nTjhxUjh5NTRBOU1OQW15TEpqeFE5My9ZRTlv?= =?utf-8?B?U3FEY25qOE4vd0ZOdmtjcC9TbEgrbmRjMGE3dkY3L0NhWmNwZVpZdnBnQkJI?= =?utf-8?B?RG9zQk81L01YVG5UMmJwRWdkWHJ5Z3lxRmJFWHAzb0RFakdkYU14TGdtaTV3?= =?utf-8?B?aUt1OGZqNVlxSEJUUTE5RDM3RHlmQ1pLUVo0Lzc0QVh5VlA0SWw2M3lic0Qv?= =?utf-8?B?VjhGYlZxQXU1ak1OREhsbWxaTGdpcXJBYU9DSG14WkxKY04vT1ZGYzFRallu?= =?utf-8?B?MS9aQ0tBWHJVaHVnTzY3cjFFcnk0N2VzZFVDZlE5d0ljV2FjMTBkbVBwRXl5?= =?utf-8?B?b1ArRFJ0TWlyU3F6bHpHY0lQRWxsWVBJNmtUNkV0dW1yci8rL21iVHZrZXBX?= =?utf-8?B?NHVlNTVqK29LczZxWVp4cmE5RUZPcWJtcXR3Vk53Q3hNcjVuZWltQi93QUZB?= =?utf-8?B?M1NDN290dG4yUTBxOHhEdU5zMFlVZlNsNEowMHB0ekxlRGVlRlZDZjlmeW5o?= =?utf-8?B?Mm5KaXNjWVJla25nbFNqa3g4YlVqV0IyMk5pOW4ya25RMDk1VDRWYXdOekpW?= =?utf-8?B?eEgwVUxKNUVFNm9YWGEwYUpaMy9oWHQ4ZW1XNTJ2T0kzM1hSc2RIK3dXK2Rj?= =?utf-8?B?R09HQnR6Qk1tbjVQSkFJWFBzLzVvQkkzLzBveC9GUWhMcGorSFplbFFybmFt?= =?utf-8?B?YlFndFp4SXoyTUkzRjJ5V3lOZUZwNnIvbUliajcwenZZLzFuYWdkNTd3L0Fv?= =?utf-8?B?ZjBueTZNZkkxalZyRHM0ak83cUo1QnZkbzRlOFJKVHo4bFZMV2p6RUdpRWJt?= =?utf-8?B?VDZOU2l3M0w3bmRjeUIzZGlzSXQ4N2lJVXltcUUwbW5FTmhuU2xhZ3p6aUtn?= =?utf-8?B?MEhDaGdsWFI4U3N4azg5ZytzMCszZUZpNndHSzlZdzdoYlRrbzd4aFFZYWI4?= =?utf-8?B?dlMrYUplbWFKcjQ2d3dRamdSTi8wNmpyTXQwekhEVXpCUTk0OHY0dUlCSi9k?= =?utf-8?B?SGczSmp5RlNyR3FCeFdyVC9NUzhaVlZyNmtSK3BkWnZFa01ORGlUSnc2V3FS?= =?utf-8?B?WGwwd1lGNjU3UnF3VnNsRW5VbmxCblY3M2FSNjdZSTQrVCtvWmFwSnpuYXhR?= =?utf-8?B?TFVWMy95dXhoSDQ0TGdPdzUrNU8vV3NHakxVSzlhd0RvZEQrdE5BaE9QL3Zi?= =?utf-8?B?WWlKdkhlYmlxSHJaeXUrTHhSME9VendaenZOWUNhWjBsdVBGekJKQkpoK0p3?= =?utf-8?B?bSsrVHdNcE11cXdvL2w2d2hsNkhpc3o5MTFPV0pTb0VTeWhBRGVERW5aYzNQ?= =?utf-8?B?OTlJUEZySUFmSXMrTSs5NDJncThHNDc1VFNOR0pld3liczRlS3YyblkwZkRo?= =?utf-8?B?eEdDMmNma1NrNHVFQVVVYVpTajVuOHVHeEpPSTlBb2ppVFF5dWpwWGdOR2VG?= =?utf-8?B?UDkxUlhkUFJWVjJ3NWlMaGVDRERZK2VGTjNLYUdlTVlXZHcycGpjOHhiMHp0?= =?utf-8?B?alFETVQzMTBralp4S2hoVGM4Mk9oK0NqTXlJdnJ3Wk5xTkZWTElmYUNVSnJD?= =?utf-8?B?KzFaVmYydEF2UnlyZnNMWFF5d2x2Yy84clRBOFh0cjgyUTRtMzlnZTdNalQz?= =?utf-8?B?Q21NSmtFcEw4b2wrZ0N4VTF0c29ScTZ1WUxpdEd6Um8xMTlteVZDWjBJNkh6?= =?utf-8?B?WW0yOFIrL2tSdmk1bnNtUURXaXBuaHFiZnpPUGw2eURLSEZ6QWZCeXIxb2tz?= =?utf-8?B?OWkxVkxrUFZTUzhTaUk1dVJISG5Vc1I2QklRcmY5d1JyZzFReE9QRENDVjZO?= =?utf-8?B?U1M3MHkvSG5lYW9sdjY2bVZZVUVzWjV3SDhUNlZxdDJOZ2tQM0prR0M4M25X?= =?utf-8?B?NjF6c3lqNjJqUXNFV0tTRkxxalpvdngrck4yblM1TndESjQvWFdxcmhDNWdF?= =?utf-8?B?VzFwRFo4RWt1S01JTkNPSnZ5QkY1WFhrUlpiNllvS2xBYUdOL0d4UDE1N0Ru?= =?utf-8?B?UEtteGtyK25iZUcva1pORzhZOGc1bmg1b2ZJeTgrS29xeStCeTdCVkNiSE1a?= =?utf-8?B?VXlaNWJTMS9MQlBLOHJXaFdzVVNqaElheVYvRm5FSHdvY1lQK1BmdEU1NlMr?= =?utf-8?B?aW9XSE4xa1VaeXplbSs1RlVtcjRreE9mL1BLZzBFR1h0aG4yOG1mbEtobUl5?= =?utf-8?Q?oij/GuCcLYy+eoj6IKsMhY8Rrx8qA/YjTWunyGIUozBC?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6f876054-7b8d-4ff2-b943-08ddac86bec0 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2025 03:34:48.3338 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: r06KZwHOqeAyQSMtRzD6/YTlH5rMug2WHy4NMwwIA/naEbz1ONb5cdaX58vdYII+lUapSCkW4CwV/vzRoVKWJA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9027 Implement `Borrow<[T]>` and `BorrowMut<[T]>` for `Vec`. This allows `Vec` to be used in generic APIs asking for types implementing those traits. `[T; N]` and `&mut [T]` also implement those traits allowing users to use either owned, borrowed and heap-owned values. The implementation leverages `as_slice` and `as_mut_slice`. Reviewed-by: Alice Ryhl Reviewed-by: Benno Lossin Signed-off-by: Alexandre Courbot --- rust/kernel/alloc/kvec.rs | 53 +++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 53 insertions(+) diff --git a/rust/kernel/alloc/kvec.rs b/rust/kernel/alloc/kvec.rs index 1a0dd852a468ccda6ea1b521bc1e7dbc8d7fc79c..b121cb39de85575f4487208ad5d= eee3c3ac06111 100644 --- a/rust/kernel/alloc/kvec.rs +++ b/rust/kernel/alloc/kvec.rs @@ -8,6 +8,7 @@ AllocError, Allocator, Box, Flags, }; use core::{ + borrow::{Borrow, BorrowMut}, fmt, marker::PhantomData, mem::{ManuallyDrop, MaybeUninit}, @@ -890,6 +891,58 @@ fn deref_mut(&mut self) -> &mut [T] { } } =20 +/// # Examples +/// +/// ``` +/// # use core::borrow::Borrow; +/// struct Foo>(B); +/// +/// // Owned array. +/// let owned_array =3D Foo([1, 2, 3]); +/// +/// // Owned vector. +/// let owned_vec =3D Foo(KVec::from_elem(0, 3, GFP_KERNEL)?); +/// +/// let arr =3D [1, 2, 3]; +/// // Borrowed slice from `arr`. +/// let borrowed_slice =3D Foo(&arr[..]); +/// # Ok::<(), Error>(()) +/// ``` +impl Borrow<[T]> for Vec +where + A: Allocator, +{ + fn borrow(&self) -> &[T] { + self.as_slice() + } +} + +/// # Examples +/// +/// ``` +/// # use core::borrow::BorrowMut; +/// struct Foo>(B); +/// +/// // Owned array. +/// let owned_array =3D Foo([1, 2, 3]); +/// +/// // Owned vector. +/// let owned_vec =3D Foo(KVec::from_elem(0, 3, GFP_KERNEL)?); +/// +/// let mut arr =3D [1, 2, 3]; +/// // Borrowed slice from `arr`. +/// let borrowed_slice =3D Foo(&mut arr[..]); +/// # Ok::<(), Error>(()) +/// ``` +impl BorrowMut<[T]> for Vec +where + A: Allocator, +{ + fn borrow_mut(&mut self) -> &mut [T] { + self.as_mut_slice() + } +} + impl Eq for Vec where A: Allocator {} =20 impl, A> Index for Vec --=20 2.49.0 From nobody Fri Oct 10 02:41:51 2025 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2076.outbound.protection.outlook.com [40.107.93.76]) (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 1A61A1A0BF1; Mon, 16 Jun 2025 03:34:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.76 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044895; cv=fail; b=D4iXgWUr6x4qzvl+sO5qVaX6eKv7VZuLYv0rXPZlZ0lP+45kryEu7y36Vh0/OzjG8B5Js9htGDmEyoBCFLGDs+ijid2MbvVyJQ8rmk49ZzAOTQ5VtiINgnEKsOnkdNxEt2kSJvYG9woXOw2l2OXOsGxyCdeqkMmcVR95HEBLOjQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044895; c=relaxed/simple; bh=Cluk1Vhjjvr9bC1rTDi6Qi4ez1Wu2L/1YN4vJS8kIeI=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=oVkgWTDCZ0Ic4prbira+hG+XaK4i0n94D9sV0WbiUtI1EpCs0ddgxS53Yz3fw4k+PuvFQ61v48qRP3fXXKlD2f7SUcS7jljfqmOYhz/WiGc+eDg4DaI0QnOR+ZEKpoFNTtITpeWAHVjxF0Pn7R22IURk31o7aiSmo3ztFflWGdg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=d+Vu1jRd; arc=fail smtp.client-ip=40.107.93.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="d+Vu1jRd" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ko6ZmCHoZSEWgmNRoYIx/BF81uH9nYRYRlEV17nsnzUWIsuPkH67Qvcxl4NS1WGoUjXLJQabxkEcxdK7iC+U0YCdTiU0qpmXZbx1HsGi2pt4IsOCqV7HUu8gXTOCMVAp629gbKAZPmdcxKyafTOAzZFbynL+mQUzt7pnMd7kceYSDygr64OzIZNxJ2PiTtK4GMlOM5mJFPrW+mWVWq/ZoUr262GkxhO+a/P+jaDWsMiSKgjXDNYRsmPFv8O3Rzz1gOQLFmkWE5Z/tveMjwvnYb3+KDcHucmmXlhh+Ey/dqrA0F33U1d7rSbj58j/OTA1IxLlh0IcuKYyLDuDyu+i7w== 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=z4HO+hHHowXcP2TzFszJvChfqZkfDrnM/iWbwWesEKM=; b=VV5+mFpdH5CAxU2XLdcBwrS4PYAqPKe5ptrrT3eEyqcu8oy/WRl81hzNJsDAHs/GYPR3tawNIxFqYUwNJBG1hhpFRRcjKJawby0JwXGBDF9iW+gGs5OSbgO/LnWVV5BK3kV7wpwfdDKrnfm8B0dPQLrz5xcMDKs7U/qa4/krKg4xEZBNijAYmd6oR5UZmnq+NK07GN2weUSCkPouKeTUMEe+8UT4XkP5uPy7DuxiWg7FUilY930geaYA5L8H2VI1ruOYvAuy/PAjWsZ48ABLP7x6oEvu63e9QkSO1sMS2nIwKXG5PJuh9vc3akQ27k8ysnEJJaZS18M9wHAyTijRRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=z4HO+hHHowXcP2TzFszJvChfqZkfDrnM/iWbwWesEKM=; b=d+Vu1jRdi4QCX+4SFC2iAvY8MFlWLBm8lwPWkTyab9pz1j6IBwpvmIYzq0QVOnFvmMTDI3X6Yx78FK65g8E7hjksvAN/N977zf4s0YlCthHbZW+MTMHsWVO42iMfQcqnLX8Krn0tiedt2FZybONH+t/GpHKCNWDDl43/Fj3TnyNkLfEyxffs16Ae7nnPwMg9ssx7LIkjrcFr0ZjIlOV8cBdLr0qRnH7YLcolESIyeK4lE0ZrgIYQnrcakC34p3wXRxP0L4OsBJQQ6Hv+yvwY6jvyDVaLf31Afci6JKHIfvj/u8emeTSEik3JG1rPEsDLVfZZE8gR1tjxHX9Um40N8Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CH3PR12MB9027.namprd12.prod.outlook.com (2603:10b6:610:120::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.28; Mon, 16 Jun 2025 03:34:51 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8835.027; Mon, 16 Jun 2025 03:34:51 +0000 From: Alexandre Courbot Date: Mon, 16 Jun 2025 12:34:06 +0900 Subject: [PATCH v4 2/7] rust: sync: implement `Borrow` and `BorrowMut` for `Arc` types Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250616-borrow_impls-v4-2-36f9beb3fe6a@nvidia.com> References: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> In-Reply-To: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> To: Danilo Krummrich , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYCP301CA0081.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:7b::18) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CH3PR12MB9027:EE_ X-MS-Office365-Filtering-Correlation-Id: 11304472-097e-49a4-ee65-08ddac86c0b3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|10070799003|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?dk5vR3pTTlhhWTc5bTlETm5nbzRYV21Ocm5jMmJIOEpiQUFsbDhFd21lK3RT?= =?utf-8?B?Vm5LVnlmVncydlk4MGtrM1haRVRRQlgxcGR4K2hqMHQwblJKS2laRmU2L0xP?= =?utf-8?B?YXhvQWo2cWNtZEpxelRIdGc5WjNBc3RrKzl2Ymw3akhUN2tsd0J6VXkwQlV1?= =?utf-8?B?TGNrMFlVYlVrcDQ5emV5eTZodHc0RENWbXZOSEpaWG1NTGhDL0RkN1VyWEx6?= =?utf-8?B?eUEyaFF1U2Zicm8wcTFRNkxDa0xvMUJEQUtWMjU5UHBGQW1STDVzdC92UGh4?= =?utf-8?B?R3JTUm1sTTIzaTkwczVyTkZmcnZBMThlb0pnWEJSdmpFcHdLVFgvQThDV1lC?= =?utf-8?B?bkpEc3NRUml2YWQ3anlxT3BKZ2ROeUJvb2xwd3JsRGdpcERRZnU5TWtmdUNR?= =?utf-8?B?RTFUMjdibTlCME5waU00aEJERUJneGJWem5VUjZDSCt3bTlHTk03OGlBYXI0?= =?utf-8?B?OXVUYnlkekc4RGUzN3Z1TmIrZi8ySmx2Qi82OGxUd1hMbSswK2pJeGZOdUZL?= =?utf-8?B?Zm4wQy9PSmhsQVpINk1pMG1sc0tYMHlScGozU0hWZlZpRm92ekFIWno3K2Qz?= =?utf-8?B?Z2dXZ1RZcmRVSkZlcUllYnpYM2VKaUhxOEdSZUJrYW9KVG8ySkV4VGRXT1hR?= =?utf-8?B?bmgxNnZjbUQ1RGE1Tm51bmY0SHB3ZlQyUjB4SXlFcnBzRGJHdEJ4NXFrdTJ3?= =?utf-8?B?STRJQUEvejR5TWJ2cGZxUmhDTHBSODQ0VUdjMVBKVUUzTU5NU0k5bzR6cGpB?= =?utf-8?B?eVZaNExiMVo5QzRjKzA3RzBVSVQyWFd4Q0pFSWxCTUppWEgyR1NBWkVVS2xZ?= =?utf-8?B?K3d1Zk1ld2NHenhOOEEydVlFWFhncXdlZC9SaTZIeFo4dUNLR2dwU1NVMmpv?= =?utf-8?B?V3BNaFZjMUlncjNrYlY2dXMzVnJOQVhYSCt0QkZ5ZFBGS01OS2R2dzlnN3Fa?= =?utf-8?B?aWRuV1NTWjNsbHU1OUlmTmFXcGVxTExMWjltQm4xSDJWQm5lcmh2Vm9BeGZy?= =?utf-8?B?eWxuTVdCMXcrU3QxM09rTnhIY09kVXBMSit6NzRTVmk4cC9XR25YbHh1cmh3?= =?utf-8?B?b0ZkVUgraXRSVVVDU01IOW5PSTIyd1NqUE5talBCTDBTeDNtbHd4WGhmWWps?= =?utf-8?B?ZDhIMDFpTUlwOHQzZURZdWZZY1ZzR21WaG05NXNKeS9MUld2Wncrdmw0Qjls?= =?utf-8?B?ZEVTWmpCS3o2ZnVqZDM5aVlrcVkySUdwbkRFTlRPdEV2R3hFQkdnNDhvU0o0?= =?utf-8?B?dnRaK0NnK2x2OGs0TW1wOW5WekRBbkVaNytObjBpT0lqc3VZZmhWSjM2SUo3?= =?utf-8?B?VGh5K0F6anRlNG8ydmI1VEJPc2hxaFl5OUhOeEl4VUhMYlBWZ04xMURZM0Qx?= =?utf-8?B?djdDMlRENFMrdERRZkIzRElaRFJiMFpPQjBicjhZRlhFM2g5Nit2Vzd5RU9o?= =?utf-8?B?TVE0N2FmOExhT2k5bm5BV2h4TUdiRGdUUTlJWTgweWd6SnNQL01TbHBYdk50?= =?utf-8?B?cVJZMFBOdS91cWhkdFNQa0xHTDBiUUlFNkw4b3pHZVRLOUFrNlQ5czNobE9Z?= =?utf-8?B?VlVUMTc1VFd2d202eHJXVE5leDd2MG1XQVN6VVM4a3ErNzcyYnJYSHJ3dk1Y?= =?utf-8?B?RTZKSFR4cU8xTnZJQXlKOW1lUElwYlc3N0dZZFVTelJjWXRhNkhrV1lFOHNW?= =?utf-8?B?UFBYV0JVUTIzVXR5aUUwYVhoWXpGQWJBdXJYbm5UNkJxb1Z6TFNnb3FnekJV?= =?utf-8?B?UDI5VE5ydGE1V041ZDd2OFFTbHVIeVd2WGoyN2J2VVBrVXBjY3pIRlNMcmI3?= =?utf-8?B?UVhtUkFBOWJ6eXNvRVdOOE03NlB5SW5OZ202VWkxS3NCcHFCQnQzdVFYOE4y?= =?utf-8?B?Mi90am5adUpjTkp1Z0cxNlBwaHVyM3U4eDFRbU92Ry9KMWhGM3k1T2NqWlFJ?= =?utf-8?B?TXZKY1lrOHBhRlE3RDlGaDJudEtnZHJ4U1Z2aUpReUpoaVFaNXNDc082Y0Rp?= =?utf-8?B?KzBJUmYrd1FRPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(10070799003)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Rk5mOVVTUi8wbUxMY3dEQUlQODNWZk0wdUdMUmY5VlI5MzlaT1p0eEZSRHRu?= =?utf-8?B?OTlwL0RUaXhvaGd5L2REWmZRT21KS1NKc1F4WGdOK0lLT3NuQzRUeGlXZzZr?= =?utf-8?B?NGxhVE40U01ENWhIQitwcjZxdWtkeW81M3lScStRbFBlK1BrbE9qV3JLRjY4?= =?utf-8?B?QTdGMEh5MlhhY25WbDVZMmtFa3FBaElYZ1JoRnZrWXA3VjhyR2NYcGF5b1Jz?= =?utf-8?B?dVQxbkF6SUdvbmhreVo4RDh1d1k3SGJGanRFSzlIWGpNMXo2a0tXN3htSklm?= =?utf-8?B?OXJqcjFTc1dONWJIL0pvZUN1UVNReFptSUdmVm5kdFhuMGsvSFU4ZVkyMDBl?= =?utf-8?B?WE93VGFrblJNWXNGaWZuT2ZFSzhMYVNQdi9CeTc3MWtyVThHS01wOHVBUHhp?= =?utf-8?B?YkpEV3FCcXBtTmphYkhwTUNtSGNVb0VsWHl4V2I4OHlYVDhTZnd5NFJiaFZt?= =?utf-8?B?M2JiVnlEUDdiNnVXYnF3OUV0bVh4MWFqaXdZM1lwb3AyRHlWTlg3MFVrWWJQ?= =?utf-8?B?ZTBaYTY5NHhDekVrZUpuRm1wNTFCcnVGZ0NJWkRTSGJsZE1iYWFtRm16QjRZ?= =?utf-8?B?YWZ6Q2xpWWI1QjZQTnZ4Vlo0dkMzRzI2Z1JjS2Z2QXZRWkcvSWVUeG5ra3Ex?= =?utf-8?B?d2E1NlFYRytOL1Z0NmRGWVlGZm9yVnJhbUxzeFFtc2NWbGV3dDBIWWZncXg4?= =?utf-8?B?eFJpYlNqcnVqM21iazZvTGRDZUJ2bzd2Ui91cVFLWVVJZUVPY3p6NGw1UlZw?= =?utf-8?B?ckhmaU51VEcxVDh6aXNiejczSnFYU1VXQkE2RG9jemZ4UWRBbUJYaHBmVnJB?= =?utf-8?B?RUZGU0VFS2RZU3N2UXQyeWUyOVhQTVV3RjkybkJhVXFURnlPQlUxejFRQ01Z?= =?utf-8?B?VXZwd1Fib1JNS0NPNXdxNzRrVG9zM21SYmZxWjhVOXU3dFNpcGJwSGkvTVp1?= =?utf-8?B?bTlIZWRuRVZSZ3EyTDJHMkJuVGFGaUpmdmc3T2lLNHBFNDFpZ1gyZFZWV3J0?= =?utf-8?B?RCttem5KUEZOcktpQk1jQU4rdjFLaUNrbXJITEdpWmp5TFZLSDFiblBRNHln?= =?utf-8?B?TG16WnZaS1dOcmt4RjV6bE83RU5uc05jZWdGR1NlRHhMNlo5cGxYZjFycWZD?= =?utf-8?B?SnZ2dDFDc1dadkt0OElqQzB1K2czVURaVXl0RDYxQmxIbG5HTzFyWmtlcG9L?= =?utf-8?B?YkNsa0J1TllzcUI1NC9xbWlER0RaRDBUR3lrSlVlQmdhcGN6bnhSd0pwRlhh?= =?utf-8?B?R25odEJ6ejRyQ1FjQjhVTndGZGlBdTEySEJjV0VxM3NpTmk3OFJTa2JvbUJC?= =?utf-8?B?QWVJTzNKSVVNUGRmT0hsQVFURHZnZWRhNWRyMitobGV6Zm5ia2JPYzU4akNn?= =?utf-8?B?ZEVBRzRrcWF1TDVjRUlFbGluU0dGZWY3clFENjJpektuc0hHVlk3SDFLd0lr?= =?utf-8?B?Yklncy9yV3lGUmJHODQ4b3NSZy92OXllb21sTGYwWTVMZEhzcjZ5TWpPZ29S?= =?utf-8?B?NDZCM1REUDE2U1B3Ny9QeWhkV3d4YVhuZ1c5bkdVN3E5ZmQ5Z3dBc2l3am9L?= =?utf-8?B?aituSlArZlllVzB3Wm5jOC9lUlh1SWVJMmVJQ2hUSVZROU93THRqcDRGL3A1?= =?utf-8?B?bk1xdDNQT25XdGhhMVF1YlpRaUtEeWJBVkpTTUhBY05QMFh2Y2taOTJ2NDZ6?= =?utf-8?B?aFdSWnE1R1doM2cwRHdWK09EL2dyOStaQmp6SFFGKy9yY3NYR3hKOFBUVTBW?= =?utf-8?B?T3FVODJ2Uk9LMlJmK3pZaEV6clc3bWVHRVE3ZFpEdkhoenVQVXBCbFJzdHdM?= =?utf-8?B?WG55dmtnZ05Ma282TnE5VGpuTm1uaXlUdnBNbmpEdUMxTS9ETDAwRXNTSnpM?= =?utf-8?B?Mmh6N0VvMzdFQW9aSklYNXBzbThieFVtT3hoQzgzZ1pWUTd3cWxGLzVKU1VR?= =?utf-8?B?NURXalo0QUpOMHZ3VTJOaGEwL1N2eUZPbGFSekVONzNsUW9kZ2lGczFaczVF?= =?utf-8?B?QmE4elRBc3NKS0dMc3RKdVZqYWFVVUNFRDliQjdlck9qN3pwdTNQbHlPY3A1?= =?utf-8?B?ZXlxWjRJdk9TdjNIaGNmaXdXTXNuZmJiakJaeFZBMUpJajc3NkMyb29FSnV1?= =?utf-8?B?Uk1RTkJGbmRRT1JQS2dYa0g1U3ZLQkRrM2dueUcyWFJmT3dCMFd6TTFsckVN?= =?utf-8?Q?cQiYLYOFUly9LIsVnRPhDhmQHv7CimNebkI4oKpCbn/0?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 11304472-097e-49a4-ee65-08ddac86c0b3 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2025 03:34:51.6097 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QkdCR5gbeBoJPFdanJGaSew9Gx7LSM2hgO1J7rn2itAxeyX2FjFafHevAXx1Ubl9Jh0eMcd/hgZDMFfrlXB9Mw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9027 Implement `Borrow` and `BorrowMut` for `UniqueArc`, and `Borrow` for `Arc`. This allows these containers to be used in generic APIs asking for types implementing those traits. `T` and `&mut T` also implement those traits allowing users to use either owned, shared or borrowed values. `ForeignOwnable` makes a call to its own `borrow` method which must be disambiguated. Reviewed-by: Alice Ryhl Reviewed-by: Benno Lossin Signed-off-by: Alexandre Courbot --- rust/kernel/sync/arc.rs | 78 +++++++++++++++++++++++++++++++++++++++++++++= +++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/rust/kernel/sync/arc.rs b/rust/kernel/sync/arc.rs index c7af0aa48a0a049bfeeba3a81080355f4d381738..499175f637a78f15d522007f2eb= bbee9c4eb6c91 100644 --- a/rust/kernel/sync/arc.rs +++ b/rust/kernel/sync/arc.rs @@ -25,6 +25,7 @@ }; use core::{ alloc::Layout, + borrow::{Borrow, BorrowMut}, fmt, marker::PhantomData, mem::{ManuallyDrop, MaybeUninit}, @@ -406,7 +407,7 @@ unsafe fn borrow<'a>(ptr: *mut Self::PointedTo) -> ArcB= orrow<'a, T> { unsafe fn borrow_mut<'a>(ptr: *mut Self::PointedTo) -> ArcBorrow<'a, T= > { // SAFETY: The safety requirements for `borrow_mut` are a superset= of the safety // requirements for `borrow`. - unsafe { Self::borrow(ptr) } + unsafe { ::borrow(ptr) } } } =20 @@ -426,6 +427,31 @@ fn as_ref(&self) -> &T { } } =20 +/// # Examples +/// +/// ``` +/// # use core::borrow::Borrow; +/// # use kernel::sync::Arc; +/// struct Foo>(B); +/// +/// // Owned instance. +/// let owned =3D Foo(1); +/// +/// // Shared instance. +/// let arc =3D Arc::new(1, GFP_KERNEL)?; +/// let shared =3D Foo(arc.clone()); +/// +/// let i =3D 1; +/// // Borrowed from `i`. +/// let borrowed =3D Foo(&i); +/// # Ok::<(), Error>(()) +/// ``` +impl Borrow for Arc { + fn borrow(&self) -> &T { + self.deref() + } +} + impl Clone for Arc { fn clone(&self) -> Self { // SAFETY: By the type invariant, there is necessarily a reference= to the object, so it is @@ -834,6 +860,56 @@ fn deref_mut(&mut self) -> &mut Self::Target { } } =20 +/// # Examples +/// +/// ``` +/// # use core::borrow::Borrow; +/// # use kernel::sync::UniqueArc; +/// struct Foo>(B); +/// +/// // Owned instance. +/// let owned =3D Foo(1); +/// +/// // Owned instance using `UniqueArc`. +/// let arc =3D UniqueArc::new(1, GFP_KERNEL)?; +/// let shared =3D Foo(arc); +/// +/// let i =3D 1; +/// // Borrowed from `i`. +/// let borrowed =3D Foo(&i); +/// # Ok::<(), Error>(()) +/// ``` +impl Borrow for UniqueArc { + fn borrow(&self) -> &T { + self.deref() + } +} + +/// # Examples +/// +/// ``` +/// # use core::borrow::BorrowMut; +/// # use kernel::sync::UniqueArc; +/// struct Foo>(B); +/// +/// // Owned instance. +/// let owned =3D Foo(1); +/// +/// // Owned instance using `UniqueArc`. +/// let arc =3D UniqueArc::new(1, GFP_KERNEL)?; +/// let shared =3D Foo(arc); +/// +/// let mut i =3D 1; +/// // Borrowed from `i`. +/// let borrowed =3D Foo(&mut i); +/// # Ok::<(), Error>(()) +/// ``` +impl BorrowMut for UniqueArc { + fn borrow_mut(&mut self) -> &mut T { + self.deref_mut() + } +} + impl fmt::Display for UniqueArc { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fmt::Display::fmt(self.deref(), f) --=20 2.49.0 From nobody Fri Oct 10 02:41:51 2025 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2076.outbound.protection.outlook.com [40.107.93.76]) (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 D3F5E1A5BA0; Mon, 16 Jun 2025 03:34:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.76 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044897; cv=fail; b=YAljsEQqDiJwyEb2IRXTykl01+/v7Visol6n5YSPjtjJ2StoQ+ITbCg1KGW0ELlEC/p7PQZGM065bsR32TfLSFkHVEJmLHL2tmgJqsSQWBanqsd0R/9F2ttWaiBlwChGq9Cj1V8RgczXMtr6Wcx2ewcduJ2NEkvgJwe/r4rdrcI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044897; c=relaxed/simple; bh=U1c3QsKWqTzaddcmjThfMUbVYmGW5bWrwbhzQAtbaKk=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=u2jSebVfFloQ4oQld8LATXM/ltANKeB7UwIR2Nw+P8Ql9neXIssWH5n9HtHLc0Adv6CYgdWn/2RLbBBrEy6ivAsMBSwFwylzNxxN/tJRn+cB6ztvpNZOcuvw52xqqe1U5wo5SX0L8BRz/SbH8ikLwzg74xdgyZl9KIYyJbJplxE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=cVzPvn5k; arc=fail smtp.client-ip=40.107.93.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="cVzPvn5k" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xaOOBOBl0COgttMxf4x9vtyK2Iu9s+rCKZXkF77cv6GAHysg5vSx5l0eBdRU+A5Bmxi/Xjq7TSA0R+JX6vhUttEW5VyIiAyXpxBG3JqDymuNgjo/5Vz35eZoVxuXBAKBstRPnwi9jwVKEdmPIkRxJ8kJ3cudLpWZYkXOuKFrZmDSlfrpHSuCp4OkvP5tJ1ol3sXhJYmDYM9YEK3PhJEdNY9AlA1RxGnIqxrVkUba8XQzaBwY0crkJXvapNOVwDhVaUnhbeWlQKBRWJzyHyL4wAfGCpXADCze0lt4dRFljLmBeOgxzPlwy37qENwfexHbms4o6CcbVbZ+dQM9vj2v4w== 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=9ifdDfCMD6wdSX1Kc+7ULZPbVdnOs9E8/H4d/l4FI/k=; b=CqI2c5k7D0nPb77OtLx3a6tEsu4GcWpGtxO5Gvi8IX4z64Six5+TWomaDk4tv/5l1OilG+dvCkJZzTtZ7otVu2qkm2VsnHywaHyY8r13DzKjPUqza+2zYrMNQeFn5NvFv9/3fVVSRul/7e07oPCFHMkx7cFV26xsSwdDvZhy6qeUSVX7x5m0IgXuhRu8uBdCBhU+3caZALbgLpF7GPlOTuLg1u1YidrqwWxT0gQJKYPvyXN060MwDLzIM+K2uZ5xSghdwn0ueB/0H2I92Z1Y8H6nmq/7JAP8wqzYGZCVxfFxyQO5H7aKogPwH3hNWPdlOy0IZAHdxVtkiIuq20AULw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9ifdDfCMD6wdSX1Kc+7ULZPbVdnOs9E8/H4d/l4FI/k=; b=cVzPvn5kj7+Mhh80r2+fxyY3zSkoV3dIbvJinnKnWUyNev+ZXQj1CJUY8b+m2N7/DT0MwF43UblkhJpbM8LVP9xSaIcYdxvVJUKZ8bi8QJvPLcBK96nrO9rxJduagtw+ToOgklmHFD3RwufoYi9USATNDueJYRNmFuB3Ck7/RuhNyBBIwwBq2iTNyBt08alH+Dcm8swbITZvFzQmIh8BcRBtQMIKnPSq2YrwX5cT0PrjBrKuJmfO53dUspaMmjeG9LCj3HwIPovEozDEFW0S5NzmzDrfmfPAEFacsiJX8W4MSe6/sHNkNZrNW51krWZOYOWt9jdDOtjcLxP7KpAbyg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CH3PR12MB9027.namprd12.prod.outlook.com (2603:10b6:610:120::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.28; Mon, 16 Jun 2025 03:34:54 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8835.027; Mon, 16 Jun 2025 03:34:54 +0000 From: Alexandre Courbot Date: Mon, 16 Jun 2025 12:34:07 +0900 Subject: [PATCH v4 3/7] rust: alloc: implement `Borrow` and `BorrowMut` for `KBox` Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250616-borrow_impls-v4-3-36f9beb3fe6a@nvidia.com> References: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> In-Reply-To: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> To: Danilo Krummrich , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TY4P301CA0032.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:2be::10) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CH3PR12MB9027:EE_ X-MS-Office365-Filtering-Correlation-Id: ea391d4b-01be-4e8e-0275-08ddac86c268 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|10070799003|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?WS9ucFZ3eG56a2JqMWhGYk1UemRDSHR2TWRBVDZSM0tuMWdWOUoyN1NYR1Uv?= =?utf-8?B?UGFTOHBRaUJvcjhaYjFHQUhsMXpTK3IvVHhmbWpwY2NQblNvdUdxcHhHbmZP?= =?utf-8?B?WkRuSlRpWnN3WUhMVkwyNTZ2QjFnTVIwOVBuWS8xZnBFUkoyWUNvL3lOTUtv?= =?utf-8?B?bmVKc3pSWVNtN0dia1plQVQ4WmRZcWV4c0ZXTVJmblRkWWVPZDBrMXljSXVx?= =?utf-8?B?ZFpyYVFGS1BGYUg3MXpNTm56YW82WTdiQlJCMUQzSENwTHNMYkZKaTRGM3hP?= =?utf-8?B?c2sxWmxRQnZiQzBtUW1PQWN5Z0w4T0kvb1A1QStLQkRuN0p6c0tjZmhSakFR?= =?utf-8?B?WXpvNkIwZ2RER1pZQ1RhYmJkOWZVNWdoRE51WXhkOGpra2QyWU96YVNHNUto?= =?utf-8?B?WHdCWko4RVJpL25lNnRadWN6V2VzeE9INEM3VDdLL0w3TW9JcWo2a3E2WFoz?= =?utf-8?B?bHdCL0NXUUE0cXp6YXl2OEpGcit0WTRHMzlYUFplOWp3bWxZaVhWRGdBVStx?= =?utf-8?B?WGdISkkvRCtic2dPbkRDaURWMWpSWUU2REhvdGdaQ0NISHlmN2pUQk5zNTk4?= =?utf-8?B?dUtiQkdYK2hCdERMNUNKcDdrS1BzMm5NVlk1QXI4cjhTb0NucWRMTnpKZnZv?= =?utf-8?B?dFhWVEZYSWV5S2d3MDJtV1FjNFZ6UlR3blRuZjVqbXlJN2M2emUzRkFzajVz?= =?utf-8?B?WFB4MzRZbkFwQUI0TE5wM296bDJvaU5yNnh6elZQNlVDeklpYXBiQlBFR3Bp?= =?utf-8?B?cFdHSW8yZmdROWoxOExCb25xcmFnRGUvQ25JM0g0dy8rQThrZkVib2ovQVoy?= =?utf-8?B?Nkp5Q09hK0tKUWlabjdwbXFaMk5DMnhUd0dxZ21tR3VrNWZMakZsYjFyMmdm?= =?utf-8?B?NlJTNlFVc00zem9sVU5YTXliekRITkV0MGdnTktUamFaMndVS0xhUWZNRy9u?= =?utf-8?B?VmRySjMzL2lkaCtUYnJwZ0FOYzEySVluY0RLcW8ydWlxMVA5L09vSWpFUFNC?= =?utf-8?B?QXk0L1ZlZFFaZTk0d0JOSEZuUEJyaGJmQVhqcU5YVS9JbXhXTnU2cE5LaFRE?= =?utf-8?B?MmFmTFE1dTdCNmVQdjZVTEswcUJmK0VNM0xjVk5heHVsNC9hRnF0YmdWakZH?= =?utf-8?B?dzN1WUlmWWp2Y2hZTldpdGFKUlRYc0FYRjd0V0dTc01KR2pPbVpNYVYwRHZE?= =?utf-8?B?ZUt0TTBpWFM0M20wSW5uamRKSDZhSFRxYTdlQjRBNDkyZ1c0TDVIK2VPRGNw?= =?utf-8?B?azY0bGM1NVZUTjN0blBxcUo5S0dEcmRjL2pydDBaK0lRZkFYQm1XTXNBQnF1?= =?utf-8?B?VFUyQXBBa1dGWWs1TGNLTStaRFpZY1BtQ1ViZ0EzRHhBWndhQ0U2eWZ5VlZz?= =?utf-8?B?YkRXVEpnaFhrRFlrQWNNVlVHeWtTdld3QlNFMlRoYU9QUXFCak13dGFIYVBE?= =?utf-8?B?MCt4cFpna0FyZWtKbEYwUmhVZzZreDFmNmZNb0tPbXpWam1WQnRRZTRLbkxV?= =?utf-8?B?MDltR2pzcUxnU1VjVnJuVng3TWFzbU9DbkdMdU9XVytSUUdlVjNMWEI4Mlpx?= =?utf-8?B?ajBxK0FCV3ErOVZEVWVaM2tVMkhlRGFFY2Q5b3BiQjFXNnpzS0FGRU1XU3ZQ?= =?utf-8?B?TjI5ZGh0R0p6Z2hqMmpWQ0hhWDFOS2lUY2dLM3BZZ1dlYU9uRUpYUmlOZFhu?= =?utf-8?B?bExRekUxZy9nL1hqRUpOcmFINS9YNHlUV1k5SmxtWmlWRG9GK3BKLzJwTUR0?= =?utf-8?B?Z2Zza3dabS9HUU1PMWxEK2J3TGNWQjdmT3FnTWFqbXArUmo2SW5QNVM0TUF6?= =?utf-8?B?QnBuZkNTQW9wdlloN1dReXgwWk5UbHV6NDFRT0FKRnh3UldFVU5UR2REeCti?= =?utf-8?B?d1Z4bENob3VHdis5Vk9LZEJHWXFsNjI0RElCUmtvbjBEK1RoVUlQMGh6WXBG?= =?utf-8?B?M3FwWmRhUkZZQkRIVE9WSXZVM09pZFcrVFVyRlhlQWN4akd6ZHBmdExqeUpI?= =?utf-8?B?WUd1T2JVait3PT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(10070799003)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YnRJV291R0hiYlRpT0xFSVVFUU1Gb25EblM2L2VsQi9LeUFBQ0lNSkdNRUly?= =?utf-8?B?TnlWRGVJNEdYUklYS3ZBN0lXcTNDeGxnYXpkR20zTy9obzFjM1Y5ZDM0NHpu?= =?utf-8?B?Q3BxSGhJZENKN0h5VE02MmVpcU9wazVqKy9xWHlLTXlqSi9DMWVvKzl4MVVL?= =?utf-8?B?VmZzWDRoN3YxUVBZbmVjK0F0RGJsRzhsTUg2YStOcmNNcm5pK3Z3c1lhMDVO?= =?utf-8?B?NXU0R1o5SXJJVTVGQ1daaEVVUFBiYWVqeUVleTZxbVIwZ2lkaHNjRENUdnUv?= =?utf-8?B?dmtxZVVMQ215WVBHSVN5bjBLck1UenRRQmNobnZOZFN3c1lhRU8rVUVTYjQ4?= =?utf-8?B?aVp6eUR5YVRiK0xqUmo4WFhhQlNPejVjZ0JDNE8wREpkOFRlSXlBajNtdjgy?= =?utf-8?B?M1JFbUdHbEMxRGx6YU5wMEYrd0dhNytDMGJyM0tFZEtRckEzclZQdW5hSkVD?= =?utf-8?B?YUtpSmZrT0EzYzZCdXYxWTRiazNVczQ0MGpmME02Q1hpL04wSzErWnBQS0dk?= =?utf-8?B?blJuYkN5OVZEbnpQSmpqK2RjYWl0QWM4TTdoNnN6WDVyU2U5bFFtUHI4MXFz?= =?utf-8?B?bysxNlFVTjRDY0Z0WnkvU3A5aU14VHVhUW1SZUlweGhPeWR0Q01KZ3k5QXpF?= =?utf-8?B?M2lWeXNYTWZWbjFWa3oxRHJkRGtieW1BNDEwUko3QTVJOHFtbmplTERPU08r?= =?utf-8?B?U3UzZUtlK0EzVGVlVmJUTktmWFMySC96Mmg3R3BtSTJqNlBFcG9ScTArL0dx?= =?utf-8?B?TlpwY3ZidXBMSFFQSzhOM3M1SEtIN2ZUdjJnY0tsY3Zxa0RzUlBZbzlMZS92?= =?utf-8?B?MHhRUFR1YnQwRkVJVnJGdGxPbmxRekhvYS9adWtpVSsvcmpBb3NxT1A4SEtr?= =?utf-8?B?NHJOT1FRS1RuR056b2lrNkp4K1FuTW8zSzRZTjE5VWdXYXVrV1dma0QrcVRV?= =?utf-8?B?OFZFZFV2Y0xlZTdBVGlqUHcrbTZoaU1IRlAySk1iR0FzTDZIT0pBRlhtaUdn?= =?utf-8?B?THJDL2prNFhqdG1MbmYraFVQdEFDSmNwT3NhVFB6VTl1OXd6Q3BxMGUya3pT?= =?utf-8?B?aUdrNDRrNGE3TkJ1UGhQOTdGTGZKYWNxcndXMndQelFwSzJ3N1htVWx3bTM5?= =?utf-8?B?ZFR6LzA3ZDUvZnlDVDJlcGVSZTNWS1NITXZiMEFrZkRWdzFrc29pNkF6UWlQ?= =?utf-8?B?T1lWQlFjbEc2UnhqblRrTEg4T3NqWHFLRmcreVlaekZmbDZMS0VVbVc0WXhI?= =?utf-8?B?OEZNczhQcmM2MUxYclpMM2VKaEN4SHRJQ3BUUzZEZk1BdXBVVHJxWEN3Rlo5?= =?utf-8?B?WHk2eXJqK2RtWUd6WTdPVnNVcXpRa1N4RE8xYlZ0NGxaTVhKYm0zTUFSTjk1?= =?utf-8?B?cFJwZEIrb0VVc0NUcTRTc1ZxMGl0eHdKUkFHMmRQL3FPRlBKVFBKR1VHUnJt?= =?utf-8?B?YkxQZ2p2UCs5bDJodm52MlBqbzFBcVl2c2JLK3BGWGxiZ1Q1ZHYxbzFtaDJo?= =?utf-8?B?TEJMc1k2ZmtkMitETEVMYWFhdzR2R0t1cHA5dm9JRDBKWDBYdFoxZ0VMODJL?= =?utf-8?B?blhENEdzRmJqcC81Wk5GcHJsT3N1dGd4N0NVRzBOZmtIZlhSaFJrd0VLSytj?= =?utf-8?B?bUI2eUh6UWlNbGh1alF1WlJOd0RWZnhEeWEveGRlbGYrZEMzaXFXL1hXZytU?= =?utf-8?B?T2w3ekllUWNIbFJzeGUweVFRN2hITko4Wnd4YVoyQ1ZjTkhwYjMrNyttcytU?= =?utf-8?B?dzlGME1Mci8vdTAwa2xENWJtNTZzUk44ODNHRzl5OFFUUFVaUVUxVHBrU0Mx?= =?utf-8?B?WnRmcXlJdVBTRVM0MzNKeE5veEd0NFNEWHJTWFBmV0IyWEJmUXZIWGVLOU95?= =?utf-8?B?cnpaZWllZisrbnE0d1J2dEtSZHJvWGM3OUlZWHJRWTgwVHl2OGpKR1FjNGkx?= =?utf-8?B?RUl3VG91RFFSbWJFRjBqUFpQQmlpeVY5QzFIL2ZrYnFsUlIvSXVyOHgrQUxa?= =?utf-8?B?blNkMkJTRHZVcWw1bndNTFYzWjlydzhIczNsOUNhSFhDQ1hpNlBEL2x0TTdu?= =?utf-8?B?cDBXdmRheHdsdGswbFlORzJuaksyYVMyQVlrOHErWjNhSE9xNVBhazI3WkNQ?= =?utf-8?B?QUJ5d1c0akJGSy9rRFkwMWZEYnhYamw3WXFCR2lNQnZ3aVBDRlZnTS9BWUFI?= =?utf-8?Q?C/ZlZtxsIF1iTCcRMHBOivmCFhkyEoERYcwe51CmkrKp?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea391d4b-01be-4e8e-0275-08ddac86c268 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2025 03:34:54.4965 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: X33YZfXkcxNY+zNwu2MvDf+OPSKTGQJq4VZ2PEbc4WW6eCKvfzzFx4/Itn98DZhglaF1MSTbQUosQlOVxgEK/Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9027 Implement `Borrow` and `BorrowMut` for `KBox`. This allows `KBox` to be used in generic APIs asking for types implementing those traits. `T` and `&mut T` also implement those traits allowing users to use either owned, borrowed and heap-owned values. Reviewed-by: Alice Ryhl Reviewed-by: Benno Lossin Signed-off-by: Alexandre Courbot --- rust/kernel/alloc/kbox.rs | 57 +++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 57 insertions(+) diff --git a/rust/kernel/alloc/kbox.rs b/rust/kernel/alloc/kbox.rs index c386ff771d506a2eb4c211a93ea9b59bc04c93f5..ccf1df7da96cf9e879330385fa6= f744d6f60c972 100644 --- a/rust/kernel/alloc/kbox.rs +++ b/rust/kernel/alloc/kbox.rs @@ -6,6 +6,7 @@ use super::allocator::{KVmalloc, Kmalloc, Vmalloc}; use super::{AllocError, Allocator, Flags}; use core::alloc::Layout; +use core::borrow::{Borrow, BorrowMut}; use core::fmt; use core::marker::PhantomData; use core::mem::ManuallyDrop; @@ -499,6 +500,62 @@ fn deref_mut(&mut self) -> &mut T { } } =20 +/// # Examples +/// +/// ``` +/// # use core::borrow::Borrow; +/// # use kernel::alloc::KBox; +/// struct Foo>(B); +/// +/// // Owned instance. +/// let owned =3D Foo(1); +/// +/// // Owned instance using `KBox`. +/// let owned_kbox =3D Foo(KBox::new(1, GFP_KERNEL)?); +/// +/// let i =3D 1; +/// // Borrowed from `i`. +/// let borrowed =3D Foo(&i); +/// # Ok::<(), Error>(()) +/// ``` +impl Borrow for Box +where + T: ?Sized, + A: Allocator, +{ + fn borrow(&self) -> &T { + self.deref() + } +} + +/// # Examples +/// +/// ``` +/// # use core::borrow::BorrowMut; +/// # use kernel::alloc::KBox; +/// struct Foo>(B); +/// +/// // Owned instance. +/// let owned =3D Foo(1); +/// +/// // Owned instance using `KBox`. +/// let owned_kbox =3D Foo(KBox::new(1, GFP_KERNEL)?); +/// +/// let mut i =3D 1; +/// // Borrowed from `i`. +/// let borrowed =3D Foo(&mut i); +/// # Ok::<(), Error>(()) +/// ``` +impl BorrowMut for Box +where + T: ?Sized, + A: Allocator, +{ + fn borrow_mut(&mut self) -> &mut T { + self.deref_mut() + } +} + impl fmt::Display for Box where T: ?Sized + fmt::Display, --=20 2.49.0 From nobody Fri Oct 10 02:41:51 2025 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2056.outbound.protection.outlook.com [40.107.93.56]) (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 A70851C5F23; Mon, 16 Jun 2025 03:35:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.56 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044902; cv=fail; b=LT6CH2vtK8kgaLchQ1O8eLSjPoS7hrV4OuA6BRBycTXtvKvYXX/9qxasBOLL70KPx4Vbgpa0JROXyERCo0Haxwk+sJ5DReC/iLzOVJ8LzfVt1HsPqtZFI6WjlMGePEkcmx77KSjAXS23KRHSc3uIVMH+Z/f6eR3mVCy09Cy3K1U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044902; c=relaxed/simple; bh=9OdpaRKq1B0TWyM6aCOJgZ277WGgs2qsxz8ETElQWOw=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=C+JQYVye8kL15axrsXoChTThezgLx1osH3elQKxJk0WWNXmD86aKXCJNFCQ128ggosaHXTiSqGLn38x7BX05NnlD9XTtQR62MO+bWa66+xQQwihKeypMXITZyIwG5J6GkwF9IafiS+1969EnPDJOlrk4P97AMyKJ27xJQAmfgvM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=krBCKKyH; arc=fail smtp.client-ip=40.107.93.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="krBCKKyH" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HEevabzYDYgq3FdbJodpnk55c/KR0dPS7uJua+MLD6i4GkLg5hphchWX/nyAHs1Y12hXavxL1VE7NwfGpNhUkaepiKh2Gg6fs7EIze4MdEogfEsojYkTJX8q8ZPwH/Ocs87f47uRcO7+MQacEuwU1xDUmsPSZ3DTZKhsYv8hAlSZlVT4Lvw+bsmMcsY1qWaQc1hw51iQllOBRMVfEzGMeQ4P3b7m5ETGukApirgBRvYu2tyRLF+Z0S+5RGz2uXFhlqKHgKLsXBlLa4+04IE9Eo8l2m15VPuxp/OSaU1QI/h5RWJa4IY3TXqTxqakPj3mDWUZtlBEYDV0PZ+F30VeHg== 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=4X/D42Sczp1pqLRYFutk5NxwbBI/ifY+AW6JHkRbLNI=; b=ksVRMlbKsnTLZYaGqRbhtlKED9Ez7VqWE7CD8Oi+OJcIRHlgESR9HEUuAm3SLZuPuFw2QkUVlC3xOSJE93XdRiu+Oxnf+30D/DYVmlFv5+ijcaO5WmT0d/AEpZRA7L4SJj6K/EoGRapwET0s7zDLDHIUx7CggzQjq8GUc6DZ5PBa7saWYbK3h119xWtH+jmiUgqC4X3JNAt3NhRgeyV69UNrWuYZrMl2ZlggXF26inHrtjIgwTYImvSJ1r4064c2bWjgiuGCK++1w5/1QPVVFg5Rsa/swsZk83AppEAonPNKS8Mf/0w4viKtlV+dCF9zIyibjC65qb6HiiH+O0xHCg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4X/D42Sczp1pqLRYFutk5NxwbBI/ifY+AW6JHkRbLNI=; b=krBCKKyH24Ww13z9/QqX8tetl3CfFG5Rq0w9znDu/U1B8UM/EMl3pRLxgCy7YFFyHr3Qw8N9Idv7MBFXhTVMATrJ6XK4D2ONHUCpGOmKJA/KHNievsxet7L2+Js/LNprQHoSFxZjULOWSCc0B/fnvz++AbVd4aqgc9zykYqOw+g+a7qsqzbbq/iE1ljlXY5TXFdlNr9kgnR59xFQpRx1GQU/VV7UO/aDdJcFeMtHwYdQCKB373LEabfkD/l4E3t0hYeCAmt4K803IHAcQ0ojiHOl2iWkFpbMw2l4MMYs/o3OK73EGfwtC7weE7TIKHZRtNKPz4wkDbHJpqx35nKefg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CH3PR12MB9027.namprd12.prod.outlook.com (2603:10b6:610:120::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.28; Mon, 16 Jun 2025 03:34:57 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8835.027; Mon, 16 Jun 2025 03:34:57 +0000 From: Alexandre Courbot Date: Mon, 16 Jun 2025 12:34:08 +0900 Subject: [PATCH v4 4/7] rust: str: make `from_bytes_with_nul_unchecked_mut` const Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250616-borrow_impls-v4-4-36f9beb3fe6a@nvidia.com> References: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> In-Reply-To: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> To: Danilo Krummrich , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYCP301CA0085.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:7b::7) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CH3PR12MB9027:EE_ X-MS-Office365-Filtering-Correlation-Id: d19c2493-91be-4a22-3304-08ddac86c447 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|10070799003|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SWlIN2F0bWY1Smp2SVBObncyTHNOWDJKNEdCcG85SUF5UXR2UnVoaEFTd2FG?= =?utf-8?B?MG56RGNQK1dsOTdndTJ4OVd6ZFdmVUd4Z2diL0d5QWw3NWVvNmVWMCtOY2F1?= =?utf-8?B?RDNrSDhtK2VoeWNsRmpMOUxZelE5d214Q2ZXWVlpU09VMHRpVEVUTU1Ldjds?= =?utf-8?B?Z2syczl4YVJTZnZqYnFtOHJjWmI3cG1vTjYvQVpncmJuS2dtNnArRWorSkty?= =?utf-8?B?bkZXRC82Q2l4MjhpczRwbjFIT3B6QUhlV0k1VFlCclpzSmFwRHNScjhNK0t2?= =?utf-8?B?bERiY1RMREd5cDJVVFFwYzl3SWU0Uy81WXdxZHM3YlEvTThjSzNUa3RjVWVP?= =?utf-8?B?NnVHODJkU2hvQThuMjRaM1Y4WUFNZTYydHZJR3o2SDVzN3lMRkJpb3h2TFZQ?= =?utf-8?B?RllHcWR6NzNrbHFjaUJUYXU4dUhkemxVd1JMSUtHQmtvQUpFS2diSm1SVXRM?= =?utf-8?B?cmt4VVdtaWRTaUFFVkE0MlVUYmJuV2Q3YlovSzEvYWdzQzJiaHRXNFlKMXow?= =?utf-8?B?ZkU2Smc0MlRVWVZkcG9VMktDUVpPUGhUTUtEZ0ZydmhHaVROaGVCZGFWTWl1?= =?utf-8?B?TGppbE5Gdk9Tck1NdFdER0NmRWxha0R2NWIwaDY0L3c0UzhUZFhIUUVuS2JE?= =?utf-8?B?MFFWNzE4dVNtdEhrYkdVYkx0cmNoV3NZR1ptZ1ZHeXY0OHZhQjZER2N4SE1U?= =?utf-8?B?ZlBYU0ozazJXMDI0c09TQTJKZE96TnVQUmlGMDBlODAvYjJKT09za2Vid0x4?= =?utf-8?B?SGQ3SXA3RUNhenVXekJ1aXdCalBQUWFrMGJSS0QyZExEVlVybnNXR0xwT212?= =?utf-8?B?MHVCVHVOVVlESm10QXF5S3ZUMnBYZ0U2aTBGTERRdmIzZ1Ewb1d3VGQ2d2p2?= =?utf-8?B?dnNxL2x2Tm52Wm93bTcyR0V5YU43Njc3VHIxMHVOcytxVTV2MEprQW4rc1dt?= =?utf-8?B?VGJkeWZ2TzRmWUkwRzFtTHlwWlJ3RU9FbTdYT0c4NGx3OXZIZDZ3Y05Qa01O?= =?utf-8?B?eE10Z1FNU2dpdmpKZFJxNlppNkVpODBSSnpPMmovck1EdzdkdzFnMWZHYUp6?= =?utf-8?B?ZkY1Mnd1R3gxZU9FSi9BR29PL2FZWHBNdzFZQ3BaQUkyLzY1TEN1N21VNFFa?= =?utf-8?B?ZUhmaUFSN2FibU9CWGJyYmVnbmh5TjU4a2lSWjFnNnhiRTNzeVZJK2FFVGJy?= =?utf-8?B?byt6c2lmdDcyZ1dJRFFUMEpUcEl6SGdkQkY4RzFJc1Jnam5xZ1ZMdW5EV2lt?= =?utf-8?B?UXhQVGxyWndHUkhHSUdTcnlHVkQyZm5ieXFUQmZDSE55Ti9YRklpdkNsYlZq?= =?utf-8?B?OHVscmQrZ3dIeCt2ZE14aEczOHB1RjRsYkVTbFNZeTRkejM0a2FyUWszelhT?= =?utf-8?B?bml3TVRIcXJETThSRjRSSUlDVW85SXdybWh1WUNIRkNzS20yV2tMSHZSdi9Q?= =?utf-8?B?V3FTSjZDMC9YRWhnSHhGTGhEbjRGMFhrVXl3RXd1OWNpLzhrZFlyeTNBcENU?= =?utf-8?B?NFJyU3R0QTVlTnlzd1NIQzVEcTR3YTBLYWVkbzBLT1F2QmJIeklPc3l4ekNy?= =?utf-8?B?a3pmdVlOd3RwQ1FuSmthWUFUcjNJNC9ja1VaeDlPTDBxaFNDUmJLbTB3eWxw?= =?utf-8?B?UEowN1lZNHlVWXdMNGtJNkxkdFRJcmJHR2pwL2hIcXRWZ0pGZEdzUDJBOVkw?= =?utf-8?B?cStLQnB6QW1qOXkyQ3dIVC93T1BlaUVsTS9zUnJYMDBmdlZuR1VqQ3JGWDcx?= =?utf-8?B?TlUxZnI3OVp3TnlEcmR4NXJ6ejFlYmJvY2VqS2J6R1MxeDZUZ0kxcFE2dnlY?= =?utf-8?B?L2lQVmRCMUNiR2ZZdUZwSGdDSFZjSDJGbmZXRnR1TnZIejNMdklTbGlWQkJu?= =?utf-8?B?OHhVaStRQVhhQWQ2ZU1nRUpKUEMwQmdKaXI2K3AydWh4K2VyZHZVVHE3SUxn?= =?utf-8?B?M01ocFBpV3hMTlNkRTJCdllYOGlNcFphOVFCQkRNQjBHTG4vKzdtMWdpUzZj?= =?utf-8?B?VkRiejBPd0xnPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(10070799003)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?anduY3c1SzNkU0pRRVFGcHJNMHJXY0lWRWhLVFlFcXdvVkRZclRZKzRFdE9Y?= =?utf-8?B?a1YwTHM5Rkk5VTVncjdjUnhRcjI0eE8xN012TUVFbW1OYmNkZjA0VVh0SmJN?= =?utf-8?B?a2p6bVovcjFwRENMWlNGWnZCWm4vUmluNXJ4R3F4VWp1bjBIK1hXYVgzSDk0?= =?utf-8?B?dWs4bEtld1BBT3I3d0hnVTkva2c4N1JlejFoTldaTUpGM2FnSzMzbTRCQ0VO?= =?utf-8?B?Z3k5WUM2K0VpNVM0NVhWSVN6WFk4TGh1UUZVdmF2SE9Bb0Q0MmFzRTNXRUdh?= =?utf-8?B?QWR5bS9QYXFkN3RJL1FhMjVwWkJ4c3dmME93N2tlOFp6M0xPQmlIUW8zYXpO?= =?utf-8?B?OTh4ZVBQdDVvT0EzRnRZU2tzRlh1dkFqVU5na1NWcW1uTWpGd2VqMXdObFls?= =?utf-8?B?T1Z3OVBpZnltcWRwU3dJRnU4R1prcmJ4NTFoenhISE9Ock93YkdYb25KOGZl?= =?utf-8?B?QUxyTE02UTVsbWxWNEl2OS91QjA0RVdnRkdZL1U2U3VSMTJuM1R1aVFLazdL?= =?utf-8?B?YzUxclFnc3hvbHVHcWxmaG5KYU5ZdWk5bkRYYm5wb1FRWXIyTXlqY1dCSzBs?= =?utf-8?B?TGtPdEFkYTRzNEpDVFllVmxOcTBtaHBRbUUwcUpLNmw1a0laR1dyZ09ZdjZL?= =?utf-8?B?Z01RTUJucStMMDE4UU9iY3ozWVJpNEdBZHRJL1FJTUlkcytEYWp1MzNFcjBo?= =?utf-8?B?K0dMS1Z4b1loL1ZSOW1ET3huaEZlRDgxQ1RQSGhXNjNtT3hQUDAvOWx4VVJ6?= =?utf-8?B?NE5zblVZc0RQWm9DOUZScFluYnZLb0lVb2VBM2NqYmc1QmlPZlpRUmR1eGxZ?= =?utf-8?B?SUtWNHpBVGNlcVVaMEl1SXdIUFQySmpyM3JrMnN6dWc4WkJzTFJFNW8ydi8v?= =?utf-8?B?d1JBcEtGeUxuSUI4ZGlhVUNqVXFFZ2RoQnVNN1Fac29oQVMyekkvUyt3Si8z?= =?utf-8?B?QUs5YkZNV0krTE80UTNhcTZrVldpZ1F2ODA1bW1XajRoZ2xrM1Nkc2xCN0VF?= =?utf-8?B?cXcvUkROdW40dnlLRDJKUHVGZE16Q1ZObGNYNTZwbGFHWDI2dEpueFpUTWtv?= =?utf-8?B?UjJjd1lISFlTeC9vVVFJYmMzdWkrZy9sOWpHaVFEYVBHc0FBdEhDb0I3RTFI?= =?utf-8?B?OUtScEFsTldyVmE1bngxTHhUYnV6RHVsVGpEZjJzVFdvYktnN3hNVGMwK2NS?= =?utf-8?B?VE5Ea2lkc29pTExTZXIxVXRDbGlrSHowcmVYamlRTFNGUVg4VW5MOUpUQmNk?= =?utf-8?B?b3NJSFBwS0RhRnk1NE4yYzlPbGU3enRUaVpqZW1xd3AzK2ttUG1TT015NGdz?= =?utf-8?B?cGVzZjNSQTF1eHN1S1dMWGtJUnhHR24wa09MMU00L0QyeWRuK0hOZEIvOHJY?= =?utf-8?B?emFCOG14MnZkV1k1NWVLS2h4TkM0ZWZwMXp2cTRCNGJhKzQzQndJMlNKMTRZ?= =?utf-8?B?VmFzMHAvVWhMSjA4a0d0WFB6ZnE1TGRaT0pWSWhWb2IxdTNDdzNkdDE5L3ps?= =?utf-8?B?T0hNcnNXR3lJd0N1aG9uWkJpdWtqLzdCenJ5V0RyQmxnRHJVM0t1alhRY0w4?= =?utf-8?B?S3F1emM5QUh1a2N3dUIvdDFrSFpyaFBTYTY1N3M5eFBHYWtza1FHQk5pQ1dF?= =?utf-8?B?YjhUdWpVYnVybUtjTHJ3NTh5bTdpQmEvZTgvcUhNQzBnSlRMM3FPZjAvQ1B2?= =?utf-8?B?L3FJazhDc2g4aHFqb3pVQ2R2NmpLWTYwOEtVNVNMWU42YU1KOEhKYzBYczlS?= =?utf-8?B?OTNxNW9tNTlvUXlVbTVkQVRmZVpDYllDNDk1clBBVG5WVkd5eGIyQjZKNmhz?= =?utf-8?B?ZStDdmhTSVNObkJKMUtWV0ZYMVh0c2JTMGp5T3FlQ0JmSUp5VDBYQlRkMU91?= =?utf-8?B?SE0zelZLMGhxUVoyUVVMRjE2RytxcHNENjZVODYwc0ZiRVVoYTBHRkRza2VL?= =?utf-8?B?RWFVUjdyZXNkYlZpb0hYNXJ4ZngzNHdVVVdBTW5OZ1RKdHIyUDVnZ0VBcmpB?= =?utf-8?B?aUlKZy95OUNHVWtWUGJlRHlNbU9kRnY4NTlORUpyRzJ1TFpUck5yOHJtWSt2?= =?utf-8?B?TlVnQnhCMEdwN1NGSXRFdUtyQ3BkTVRweUdpNzY0ZTNNcFNRQW54Nm1teGh5?= =?utf-8?B?bTJZeThLaGVpeHF5TGhKZ3VaUzNpaVZ6b3BTODFOa01scGluemJ4L0lYejdn?= =?utf-8?Q?wNeAR08nTkagTdsfrJ1l1kB0Snjx3R4LqgTIt8CGyvN1?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d19c2493-91be-4a22-3304-08ddac86c447 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2025 03:34:57.6063 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hz97XKMnTyl/KdfY4o1bu2c2DtMlKKbp5cJMAH9l7bhxnixfO8z1mHHvIdWcEypNfXZwR0vjRzu4AsRV8zGr0w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9027 This method was probably kept non-const due to the absence of the `const_mut_refs` feature, but it has been enabled since the introduction of this code (and stabilized with Rust 1.83). Thus, make it const to match its non-const counterpart. Signed-off-by: Alexandre Courbot Reviewed-by: Benno Lossin --- rust/kernel/str.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/kernel/str.rs b/rust/kernel/str.rs index a927db8e079c3597860880947a03959e1d6d712e..2640a050847e64bfd18c127a5a8= 3b93f01f036bc 100644 --- a/rust/kernel/str.rs +++ b/rust/kernel/str.rs @@ -288,7 +288,7 @@ pub const fn from_bytes_with_nul(bytes: &[u8]) -> Resul= t<&Self, CStrConvertError /// `bytes` *must* end with a `NUL` byte, and should only have a single /// `NUL` byte (or the string will be truncated). #[inline] - pub unsafe fn from_bytes_with_nul_unchecked_mut(bytes: &mut [u8]) -> &= mut CStr { + pub const unsafe fn from_bytes_with_nul_unchecked_mut(bytes: &mut [u8]= ) -> &mut CStr { // SAFETY: Properties of `bytes` guaranteed by the safety precondi= tion. unsafe { &mut *(bytes as *mut [u8] as *mut CStr) } } --=20 2.49.0 From nobody Fri Oct 10 02:41:51 2025 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2053.outbound.protection.outlook.com [40.107.93.53]) (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 1A92C1CF5C6; Mon, 16 Jun 2025 03:35:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.53 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044904; cv=fail; b=NA//0O2b6lKn7j6G/oC0qfu8whPZJuKyTY51dX3ycRCvE4UdATG8jvBXOt3g859bsGM97AXwuWChXljtI5u6dsgjP32Dv4dmdyNRwTFvejRuAmRRXL+9lmznfIPRD9gMA+oJMwL3KYJH4TnNW67D42aHxDexfMFeQ7ckG+9Jw0Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044904; c=relaxed/simple; bh=OeDFU13KsnvBob9bcUH2zU+l3Ri33W0PvCE9F9WNGwg=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=ggh2GiUMcqXw/V1FIz6+bl8ganASNyxyqK7nGzGMTym9uuYqWEY6z+e95z8gGvxfBiAhCeEuBqaHeleWM17c8f90rQGrpkUNJe22EGVIcEGqn9g49U8kyU8KR+mh4Kys6hQS4BTPVoAiQmLNIbC00LB7nBPAeq/+x/FOSjhV5VY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=plsNLff7; arc=fail smtp.client-ip=40.107.93.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="plsNLff7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nfsrbOISMVTK3FIyo3LvBvGducTqJKh8HqfFIoX++6qZph9a4i8Nh+KbLTag7NyLVDzfHgvXHZhAR1nvyIMihZvTJ55e+c2C6Pn/AhAs8fwX+tlrTzQth12NpboKapMSa6cKFbfHJ9zw9AbWkAz+cZ2mPkZFJ7CmhtZY041Gz30qNTCi2D7xX2/MuUNzjaYrOk5B7fXLj0ipRJQNgG9AT5Z1xF+Q+itVKyq22N8JoNm2Ii2IDwREqdWruixxSRVQ+rdQcVtNyfVGLJFFt29zHgt/BK6gp4nwkcaofHZsaWFX59zkScbSvWoIpG86KzWEORHxyMx//1zmI7vQMqmGPQ== 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=etG2gW45oib8irthRAdx6lSPjZmK5R7Ea3195Q9jmHo=; b=AxnZCWtzcNs+Ll4yx+ejTorqV5lOVAGO2BqohplnM6sPNS8SsQxv2ffIRVsSiU07MuE/DovK/H5pAvw7h+nQQhSoUgaOPxqEyZiLmvedDhCSaUOSlmccJZEbsprxuob/6WyaNPBxJSiDqHsxx+0nhs900h6UJ4zGjA8Tl+Mm1cOHS32W3fIJQJR0JwPBTBjDF3GNiHItOZM03Mq+ujUGePR4Hx99Y0yptRKjKUVLkKuj0kV/rW6MtMOo7twcHgbG2LFVvMbAykq+VMoI8NdkiV4aiQNn8x6fZ780gclo8JZboRrEWr4NScXiMCBl4OTu60kX4OpmQPv61XoIEs4ejw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=etG2gW45oib8irthRAdx6lSPjZmK5R7Ea3195Q9jmHo=; b=plsNLff79y1u5MhDdkqjFjPSY0gVPRYAbYQRizExl7dy6QtJeYEYyayPA+2LIiMFavKhFG+Ook9KYufCsZEUXyEIJHHmKlWOOlsHmAhVFCGHs+rorWBujHv8mfEZttiYztrJP8nxp64bHAa/SsL8fvphpDEnY9CfM24b+54CuV5D3PIAfyBvJzR5PlwP64vH/uDM1bR2/AT37kPOR8y9y0UYlxbroAO6k3U0ZpNrWNZgEwZpm+47lOGQEpmaC2XshujQbtmwIgiGTPnY+GMUF7w8Na2wugIMsklvSMdymnGercXvN813vymC0FMW9+9DWC8M93J+nzi1/VjFS56Axg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CH3PR12MB9027.namprd12.prod.outlook.com (2603:10b6:610:120::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.28; Mon, 16 Jun 2025 03:35:00 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8835.027; Mon, 16 Jun 2025 03:35:00 +0000 From: Alexandre Courbot Date: Mon, 16 Jun 2025 12:34:09 +0900 Subject: [PATCH v4 5/7] rust: str: use transmute in `from_bytes_with_nul_unchecked_mut` Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250616-borrow_impls-v4-5-36f9beb3fe6a@nvidia.com> References: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> In-Reply-To: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> To: Danilo Krummrich , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYCP286CA0271.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c9::16) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CH3PR12MB9027:EE_ X-MS-Office365-Filtering-Correlation-Id: 64bda462-b39f-4083-cd78-08ddac86c631 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|10070799003|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Wm11c2RJRUNzMWt4SXM0VU5aZ28wNkRFVDg3aE9KQXhZa203TDR6Ym1nOEF3?= =?utf-8?B?cjZTbnE1cDQyeTRQVHZTZmlpTGRPWXRjUWFZUDl2QTBHNm9VU2tSeVl4TVBu?= =?utf-8?B?L1JmTmFlbHhlNDBUSC9aM3dQRExYa242S0p2c2x4WjJBUWRDNU5WU00vWlRw?= =?utf-8?B?SXQ0bjdMNFZxNk1vTW80UE12UXVSNnJpV2tMMlZXa3dLdkJoQlBlTXdiY1hp?= =?utf-8?B?dUdFVzZrTU5KS1pEbEE1TWxjTEVUcVhsWW9LM3piS2tBY2hLZnFqeDZsZ3Rx?= =?utf-8?B?a3hqa2NjdkFRZU9kVWJDTG13Um5PQWthR0t0Ri9Zd0NJZy9WRFdiWGlUR2pK?= =?utf-8?B?SnFzMnBqWktHY3VVS0lEc1VpL0RwdnJMUlNueVBpS0FDQXlmSnc2YmZ5cG5P?= =?utf-8?B?ZXd3d0dTTU9oSzc2U20zVSsyazkyRW5QTEVEbExyUzJRckhobG9RVGRxQWFI?= =?utf-8?B?RFlxeVJLSDVmOGNOSS9RaWZYeFJMMDlnaUFwcDZJY1Q1RjJPa2FoM09yQ2tV?= =?utf-8?B?VnNocTJ6K2hVUWlmeUVHNmlDSlJZbXZMOFZmdHhteDM5OW1pdHpKQ0dianBI?= =?utf-8?B?OXFnYzZjd3pMYnZDWklhNTBkbjMrRGtXbWk1S2t0T3dQelRud1ZuQjFMTHdR?= =?utf-8?B?OUt5bjE1SEdnN1ZZTjJuWjNkcnErVE01TmtORUZPQW14MnpBQzF6clJSaGtI?= =?utf-8?B?NzBBUit3bVZPeW1mbDJxdm5wYWE1ZWNBMGl0NWJOU25NV3diVnZqSlVpUTJz?= =?utf-8?B?Umd4ZDFaalk1Y1krdE9FVGF2bVBpamZrWU1xcVM0dWppM3krMUFyZktTRGtJ?= =?utf-8?B?UjFaSHZMSitIdDlEbU5TMGY1d0Jzd2JZSnFIVlU3aG5RQ002Ym1tQVYwQ1NE?= =?utf-8?B?aER3VkdZVDV4cXRzcjVUVXJmc3VuUjJlR3BmTHlVUVpDT3pWdjNQQlZhSlp1?= =?utf-8?B?eHpxNENNenhkbE02M2xDUEJ2dVVPMXNiNnVoYXluOTkxWTN3aWJwdkxzaERj?= =?utf-8?B?UjJyYldIbUFuNUdZMHo4eHFMN1FhRnZGRXdqRHRWWURHMFlySTJIZnRKNGRN?= =?utf-8?B?OXlyVzIrSk9hT21oSm9HMnVEb2VIYmIwUXVhMEdWcEdDSmpjQ0d6SUt3UDZz?= =?utf-8?B?WXJpamRZTkZiR2hpb25wSUZXMlE4MDNWdnArNTVqRTFRS3hDMnlSMnpwT2RK?= =?utf-8?B?Z0g2bktwSnlHNStnWkV0U0Z5ZUFQQ2F4U0s3NUhvbVd3QjQ3QTlOZHVOdnlF?= =?utf-8?B?aUxQWjhqd1JoNHI4TTI2WnRPNFF4K3hVS1gxWUdLUWpUck5JUm9NSDNnRDI2?= =?utf-8?B?UEliUXJOT1I1dkRoV0Z6OFFnMWZPazR0VitVYU82NXZ4S1BiQnRMUjZ3dWhw?= =?utf-8?B?bW9DWGFrVGJjZnpHZkxsVEJjQkp4ajRaTStDZXd2NjFpeklLbVZ3K0VuMWxM?= =?utf-8?B?L1I3QjUrSWVXS080UXVyQUE2bDQ2Mk5nU2JWZEdtV0ZjZm1kY1RVcm54THFJ?= =?utf-8?B?blhzblloSnlPNERGbTg5cXEzeXBqbDRaMUVxdkxVaVRKQ2tvUlFWYURRaVps?= =?utf-8?B?VXBtcENzdlVUQUhqejZuTkJIS0RVZUNwcWxrUUhEUzNoSFJKZzFQRjA1NDUz?= =?utf-8?B?RXFRbk96OWtFbEsyem1IR01VRE5LV0ZTN3hHNWlPZmo2dkI0L1FTMFE2ZmNR?= =?utf-8?B?QldIc0xNaWFpZXhzRnBOcSsrZU11ekUzTUdhSDhjeElOZWhTc1htQk5Fai9t?= =?utf-8?B?bkE1TVRLaWUwcHFtM3gvQnErbUt2N3JHOWdZTFRNU2F5akVIenpBNzdOUDU4?= =?utf-8?B?QnlBSFIvTDViUXYySmNGSzBrenhxOUNGZThJT1RXTVdyaWVJQ1psK29xaUE5?= =?utf-8?B?ZFRSa0hOdnh3ck1XL0hqaXF2OGErVTlrUDVma0g1QmthbVlBLzZ0YmJMdG0x?= =?utf-8?B?cWtKQmpGRkZzTHg1d3oyV1FrcFkxZHczaG0vK1ltZXdvQ3MrN01PNDVIWG95?= =?utf-8?B?aXJzSmdVa3dBPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(10070799003)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?U3JyTmJyYW8zeVc3Nk9DV2dVck13cDYvNFUrOENjZXFPQXBPd0pjMjdjbGRI?= =?utf-8?B?aTZ3MXdYMmFLZ1NXM0FHcFJEdFl2TCtGd3lqSFd0Z0J3NG9iM1hkdFYvTEhi?= =?utf-8?B?Sk11VFh4MnI0NGNTM3FSenFjdUErN2NnL1k2aTlIVVZoRG1udXFyVnRIenBw?= =?utf-8?B?VWpOMDRxUE1UNjNpVEpacVhQdTF3a3NDWWFKaVhZTmUrMWJkZmEyWEZhT0Nr?= =?utf-8?B?WEpFUWR5UkVubzQwOUw2dHJOa2ExSmxQcGM5TmpaR0dEa0duNnp4RnVqZml3?= =?utf-8?B?UktrUWgyQVdmdDJYQlRKYVFkSUlPRWRmSWRybnV3R1NvNFBzOHBKLzlYM0Rz?= =?utf-8?B?V1krV0M5UWI3ZVFvYUtIVlZlRlRYQzNhVWFuT3NlWENjWHdxMExzbzdBcnJO?= =?utf-8?B?STJkVEt6Uy9KOGlGNjVLcmpSVTQ2azJETEs2d1U5bnh4bjdxRmZEUEJIb3JL?= =?utf-8?B?akZpZ2wwM1BseFRpYkFTaUxrVi8wOUNLYy95VFM3cm81KzEvK0wzVHorRkt2?= =?utf-8?B?dGc5REViMDRUZHRvTTNaYkFEdFpMUWtGWm9iNzZWL0Z6VXdMWlZ5VlJLWGYv?= =?utf-8?B?NjNvb3E3Ny9NclhYSUxmSzBEQUw0NGFHS2E0SzIxamN2QkJBUEVXcGV3bkhp?= =?utf-8?B?TzFFTzY1ZElXbnl5bXhSeFJBRnhqRjloQlBhY1lvNXVvR0JvNzZNVU9tMU9z?= =?utf-8?B?SklJak4xbmNwbnp0ditzVTVJbndpSmhlZ1V4VzZGNmQvYW9qLzFlbmIyRWow?= =?utf-8?B?VUorK001M2FsYlZPQ2c4RnJyVW9wc1liUkxlM3VrWVFCVVNLRTFOakpNVGgx?= =?utf-8?B?THlYWHNTdGExMDVTMFArWmVUdUR5Z00wVHRaODZxV1gxVkh4R1h2TDJZNkVL?= =?utf-8?B?alNWSzNid1EwWlhwUzlWeURQZm9wMlV1amY4eDZQOTlWQTB1WEpJcTlMR1p5?= =?utf-8?B?MW1aSUFrYXV2b01Bc2pOQ3ZPaHNqaStWUnRoa05rYUl6S2p4V2N3ZTlzT3Ur?= =?utf-8?B?ZjljeEsyeDZ6UHpHM1BYMWh4bWZwNXpMMXVRU01RSmF0dncyMVZaSlZtTm80?= =?utf-8?B?V3NxUm1RdkJyWmdYUHRIZTF5QkdMc0xCeFZ0RGNqZUl6RVVKTjdaVnZYSGU3?= =?utf-8?B?QmcySVFTenZ0eTlya1RURnhGVmhyNFRlS05YeE9vcmZidzB3OG5HOUNzS21U?= =?utf-8?B?NkxQdGZjd0NpTHRtaGphaTY3alN2bjVuMWlaQ05qSGs5ZzZQbmY5dUdYUmVJ?= =?utf-8?B?c0c3YjJBd0ZXTkkzWHE2bTYxTGZPckZXUklRTXBCRXlqK2VuNTlick1ZZjhm?= =?utf-8?B?UlRqNWoxL1Rqb3p1MVc2YlRKeFo0RHJjYVNTRitHT2ZLa25NZEk4R1pUc2RO?= =?utf-8?B?ZEFleFVaeGU4aVJKMjZyVDhDQW1GNmUrLzlvVmtqblR5T3FrVE9makxkM3pn?= =?utf-8?B?dTNURkRBaWRFaWxkaDFncXUyNk1xQUNYYjFEWlBkeC9helpGa0M0bGxIYkhM?= =?utf-8?B?ZHFWSG9FZE9za1A0VVdNZFc3SFJia3RZZlhFb0ZJR0RPcHhzMWdrU1RuVVVp?= =?utf-8?B?bnlYVmwwNm1yQkFHa2toSys3SkltNCtnVnJBUCtTNFRGNEpSS2F2bkJ4QkIw?= =?utf-8?B?YkFmajlMY1ltazdFZ3NVK2hvMUNTSUg0Q0F0Z3hjMUdzWldVby9Ra2oxQ20z?= =?utf-8?B?dnJPcHlTTmZXZW55bVlHdHhFWFFqTHFlWnRXTUErSEFDMnBtYndpQ2FOWm5H?= =?utf-8?B?VVUzWm54d045bGszVkJvTFh2K0pnanBtdVdmTTI2blI2cEpYRnpzZjFnNVZT?= =?utf-8?B?WDdXY2FvNnhXRWs0YllRSEdBTlJGS0hFd096bHVvNG9Udld1YnBNZ0NibVd5?= =?utf-8?B?dWhKS3IwSG43TkFxU3dJWXZlWWJQTXZGc3BncTFEL0IyTHQzMFRicXFDcWVs?= =?utf-8?B?VExKcEVFZ1ZTZW90M1FLVzVmQ056UmJZakh1YWhxVWQycmVtRWUzdENRWUN2?= =?utf-8?B?MjEydjRQWmNzZ2cxT0luZHpuajZ2b1NGZnRsQXFHMVYrUndQb3ExNk5JNkxZ?= =?utf-8?B?SHJIaUpTUmlMWjlsaFJ4WHBWYi9LOEhxOHFIaldKZjl2WmxieVBMUEh3R2Z4?= =?utf-8?B?Ny8wMEMxdTc2Q0tlcnkveVMxTTdWbHZHVXpzaHFSMkx2dlFMdEprTmJScTk0?= =?utf-8?Q?sMFjYnQHTl0pgc7AhvF1jroQ5GQLRBOU3zdEu6DmLHdT?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64bda462-b39f-4083-cd78-08ddac86c631 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2025 03:35:00.8157 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9v5u9g1x8dqu5So9jFtDTglnxcyw3c9nSTLI6VF6RES39l6DwM4ep3BtHELcKz8PrAag/dSz1ZKEvMZDht/XBA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9027 `from_bytes_with_nul_unchecked` also does this, so do the same for symmetry. This was probably not done due to the unavailability of the `const_mut_refs` feature at the time this code was introduced. Signed-off-by: Alexandre Courbot --- rust/kernel/str.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/kernel/str.rs b/rust/kernel/str.rs index 2640a050847e64bfd18c127a5a83b93f01f036bc..28f2f359ab23e6a926e88913e3c= c9f481aa86037 100644 --- a/rust/kernel/str.rs +++ b/rust/kernel/str.rs @@ -290,7 +290,7 @@ pub const fn from_bytes_with_nul(bytes: &[u8]) -> Resul= t<&Self, CStrConvertError #[inline] pub const unsafe fn from_bytes_with_nul_unchecked_mut(bytes: &mut [u8]= ) -> &mut CStr { // SAFETY: Properties of `bytes` guaranteed by the safety precondi= tion. - unsafe { &mut *(bytes as *mut [u8] as *mut CStr) } + unsafe { core::mem::transmute(bytes) } } =20 /// Returns a C pointer to the string. --=20 2.49.0 From nobody Fri Oct 10 02:41:51 2025 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2082.outbound.protection.outlook.com [40.107.94.82]) (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 8C8F41D8E10; Mon, 16 Jun 2025 03:35:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.82 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044907; cv=fail; b=Jy9+SL9LNUa+cdLU2MKxsuYC0gLs+Cj7vPF3pcoSjAZNSOoqxKH4bSCSKhts584V1MM/WW/ckSCd8dugP+5c9dndgWjlC0pK3INJIgB2LjAkoGHIkdrrfWrcLa46i/x16bnplVfgD8qxppwgzAESI1DEqZZAM/xZB0jM7roiHmQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044907; c=relaxed/simple; bh=dKRtvzKYbo+ueOLTEjM11FEGeCNGjwAT85oNbnRZTWo=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=XI0U+0QVyL1oBhbiZ43A10W+EksRPQlHErVXBjLFTaUf8iy/iEeFbaQMjVPSf06j1u+Ddzu15DUoR8gEZDyR1w2XabTl2z6a/DnMcgr5541kk+2EiR39cnKsbiZ2xD3rSGCkL/oQwZ8TYJLXeM+Leyx5fXT9xRdbsFex+fbyjL0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=WuRMRAey; arc=fail smtp.client-ip=40.107.94.82 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="WuRMRAey" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k0WJHyY9kYEQ0KOvL5lFPx9BJiWK4QlA/ysMXxcoArEHWU+/WekWvEXEMkXcZOh2VTiNA7SiUWk39pPiBhReYr98Jgzc5kTuLs2cXmUnlrsBzhLjHzpEMbJEQgOZz3ksp6nkW9FUl6zXCv3bHx150YujCRLQLmp9upHAYvgP9cfn7hX7Q7JhTgoDT7L0zDLt9or9uTni6iEv/+S4zAbsFTqCKU9CMgqwuKqS8wybusyPNb99P8HVK/bRgc31EYW5tc6mVgIm056GOLuk4uRN8tXypGXQA5QppVFVdCaEr3Sah/yNy7OxeHkanO6nTd6ins/VUdfMMpxes3KIvEjLFA== 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=40HN023PannlatrNm6vLLgPJtSmIWewktu/QGJIdQqQ=; b=rfcwosQbGoeb4MDXvnPf0PkNaGeKXPvlxQaGYAll9i94JTj1K/1w2xqmRz421COwfmI3Z1RFyy/5aWdZ5MN94XnUzh82J9fcX/07M1IBmCx7Q7Az+ReFXYzlyTnbb67MO2nAdK3ED4fI44Cmg/T9o909iKT1+sm90fNZvZiqLwauWmg2gTnoIr/HNVU/uQAmQ+lO3dL7Ra1lJOXjs4TR2noDhuzkeLsWeDTC/azzn3Q2zHcxg+HtH/Re3baC6CozT25H2xfuuRj5XlUxmxeoJxu1SsawdexqbQ02vJn+0aVinJ4Jz49sTz8OXgbFKCZ6rhCt2PaE7pjwLgfUcaU8wQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=40HN023PannlatrNm6vLLgPJtSmIWewktu/QGJIdQqQ=; b=WuRMRAey6dA6ic25KjOjqVTdccM6bkqFCZDyxWTLHzMET4pPR+T7L/s0QdoRIYZDSxeqddMDTfPgnr6PGCXseLv8AejhbzO46jf2Ut/fXmUgNiVKz07g9AwXWU/t5gkU+Def73YNZ9mg/yfq2WZB6TxlRQMfBrwJ/oKcYlt83nvuDncQpQVs6Ourg0s1AreDoLXfoWx1NvO0OpkFJLaGVEqhQreGeVapu4W2P8aUiulN1c0IwpShwh6eeHvGguKdKdrJ4kSTlH57jsgsGeMW2wwRbQZTh6BbBI1eM/rLg5AWLh3hSp1qUBUn9AT5HekdLBBEidfvU6C7kq/DI9VaZg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CH3PR12MB9027.namprd12.prod.outlook.com (2603:10b6:610:120::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.28; Mon, 16 Jun 2025 03:35:03 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8835.027; Mon, 16 Jun 2025 03:35:03 +0000 From: Alexandre Courbot Date: Mon, 16 Jun 2025 12:34:10 +0900 Subject: [PATCH v4 6/7] rust: str: implement `from_bytes_with_nul_mut` Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250616-borrow_impls-v4-6-36f9beb3fe6a@nvidia.com> References: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> In-Reply-To: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> To: Danilo Krummrich , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYCP286CA0183.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:382::12) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CH3PR12MB9027:EE_ X-MS-Office365-Filtering-Correlation-Id: 96632833-5b39-4df8-cb7c-08ddac86c7f5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|10070799003|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RlRVQzM1WXJsV285SjFzOGUzak0wekVJb0crRDhjYytvald0SGZCT3JlK0pz?= =?utf-8?B?VXRlUWQrSmpOaXFBTHcwbXY5aXJwWHhZNzBXeEJGaU56d2VVcnd3VWJQVEVV?= =?utf-8?B?aWhqVXNicGhqRWttMCt6K1RLcVJaVFFibmttY0ViNi9KbG1aL2QyYXpaVEgz?= =?utf-8?B?NjVTYjY2eTEvbmdMRGVPSGc3YU5GOXBWTXZUbDlYWkhpYkh4aHpoRXRvY3No?= =?utf-8?B?SVJrdEViOURmK0lwRnNLYlNZcHM5allpZmRlOG5SaWxMZ0V2NVBHeFBXd3BM?= =?utf-8?B?NVdYTHVKaXNUZnJRanY1SGtDV3VpT01CajhQMjFEY3krR3g3N0hGdVpHZkx5?= =?utf-8?B?Z0hZVmpHQzRFbFRKZ2NjWEx0a2o4bUl0bVFiQU1LZ2s0dTg3WStYdUVNcG42?= =?utf-8?B?aGZaTVhKTXdYZzNWTWlWZm45TVhMYzlqVzJkL0x3VTJWYVdBdWd1bDdncWVi?= =?utf-8?B?QzFwVnZqQmF6d3A2U1hRMzNtQSsxdHMrdE1LQ2srRTN2d21XZCtOaUhDUEZZ?= =?utf-8?B?SWYyQ2pzRGhVSXZFMzNWejhqTXFJbGxGSFgzM2VsWXczN2ZnZTNzVVpDbjFP?= =?utf-8?B?N0JMZ2RqcFMxQWNXOUR5anIzR1ZNaE9wazM1ZEt5YjNqL0x2N0Jtc2lZM1dL?= =?utf-8?B?TmwvZ0FmNC9ucy9pS2NBZFpROUdSck94OUpZRG42WXdTOFdiRkp6aTFqOE5F?= =?utf-8?B?U29RcFFHSmtLSUk4K2NhWGVYeWFscXZjZ3RaOTI0SmYrbzRFVDlwdFVQQWVQ?= =?utf-8?B?TUJWdTRPdml0QmNQWnVMcHhtMkdXL05POTl4VENxaE1DTzBGbjJHNUhQcWtF?= =?utf-8?B?ektqUW1jaWM5aURMQWRzZWgxMFpJcDlUeEVNUkxoOTZBdDJ1OWJGZnVJbENy?= =?utf-8?B?YU1vcG4xVm9kZ3NHNTdRbU5vNWpZNDFJSThNbzduNVNacHJNUzBDaHhTMnJS?= =?utf-8?B?bzJod1RBUC9oUFhMaERvME1IREw4WXJyeEZXRmYyRGxWT2pjL0k5cXpwQktp?= =?utf-8?B?UVNKSXZZbGU4NHM3eUVwYVlHd2tYUHk3c2NjQ0F3M2xYRDlEMlcvZVlST1pj?= =?utf-8?B?dVI2V3lwbXlzN1BzVDk2MTdaNUFSNEdvYW5oUkd4WGx5Um9Sc0lhM0ltcjBq?= =?utf-8?B?MmtHeFk5WFQwVEIyQW43dzJ0dmRTUlVjd3U4ZHBtKzlZYmQ3UEtpdWRjWkx3?= =?utf-8?B?R0VEMVA3SXZVcXJEWFIyQUk1MzJCYks3N2tqbEpWeXM2aERjRkhGTWMxNzVX?= =?utf-8?B?NWFmeWFLZlB5b3czNU9kR0hwVTJKVEd5aGhSMGlyQnB1a3N3R1E4b0xTd0FW?= =?utf-8?B?b2wvejhYRHJQZExyRkN6czBSZUNpdTNwbHAwR09BSlBjV09KbmZpNVNubnJq?= =?utf-8?B?Vzg2UzU2THh6L3FRVElqeGNSelBoZStBNmk0cEhnMHMwUG1nNVF2MWJpbVVL?= =?utf-8?B?OWpnaUlSdlR5aE9UZmhmL0NOL1kxbnhITXhyWTljSEh5L3Q3T0RxaFcrTUtL?= =?utf-8?B?NXVmdnZ1dU9DVmRPL0d1OEFvTXExQmZYRzE3WVk3SHRFZEgwa0ZhcHJTcFZV?= =?utf-8?B?SDlTUVYzRXJmU0RKai8xQkxsVHRwVmR3djVNV0oxd0QzSWRacHR0b2VOTXlG?= =?utf-8?B?ODFudUVqcngvendqSmppS2w3bUYyUGdIZ0pOWVJUOUtPVXlXOTd1STNodUx1?= =?utf-8?B?aWxrY0hndzN5UmNUSVRBdFB4ZUlpWGhZN2JNRXZmdkcvZ1kraWI4a2ZRSjh1?= =?utf-8?B?aGtXNE41aTF5Sk5raStxOGkxUTg2UHJxeE9uTTlmMXNBdVF0QzlLU21udGxH?= =?utf-8?B?VGZNZmlrc0lpNGJpZDh6ODlEY280Z2VnQXhEdUR5dmtwaUNreWFOL2pQeWJM?= =?utf-8?B?bFNDclVZUS9QaUhYTGVGcTMvNktZTHFjamwrNXRlQUk0RmlnOU0ybGtBd2Zo?= =?utf-8?B?QWEwNjZYU0tXMUlCeFF0TVpyOXBWWURTSGF6M25UV0Y5MG9ESGJUVnJsaXl5?= =?utf-8?B?TTBJMTlYbWdRPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(10070799003)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QlNKSEJadFpGcHdzbDB6MWF2WHQ3cUV3Y3d1Y3ZscGJMSjliNWY3TnUrdm42?= =?utf-8?B?SDV1RHl5MFRSR1hhUE9wZVpJM2FBdjY5QlBpdUhTS21WMHlaNzhyMndXZ3I2?= =?utf-8?B?MzJJdmtKTER4N1Z5Vm4yVVpzZGwrQXR4ZEp0Y0RRZE5NU3V1ODlBY0drVEJp?= =?utf-8?B?MUdodXlGT2pMVURndFhvcUlmTkphTkR4WVpXQThRaUJUa2loSktLQnI5U3ll?= =?utf-8?B?R0w3N2ZITFJabUluZjd6ZllMemFEN2VnTUkwMENmbitPZ01GZzBTUHE0c1Qw?= =?utf-8?B?T21tVVRTdzdtcXBvYi8wUHRteUduT2E0V3VOOVhqMm9tc1NNeHJyZ0pJUk1x?= =?utf-8?B?ZjFRUSs4WFdOc1o4WW5WZkhYaW5Sb2dEbklvMlBjWWg3dS9Vb1NKQmZzbkQ4?= =?utf-8?B?dXJFQjFJRytPTjJ1MGhabmFWK013NkpBZGNRdHd5Vk1OWXZPOENPS3hnRlNO?= =?utf-8?B?ZmtUM1F4TmJxcExsV2RiTVRyQnc2bVpiUU9qK1VSVVBDeGdVREphM1FtdFo1?= =?utf-8?B?RTFIQ1NHYnFuL2NXOHRqY2lZZ3llQ1BGc3lpS3dYcTlwVHR0bFJ4V091UFh5?= =?utf-8?B?VTBPNmZxTUx5aG1xMEtpUlhJWm9UZVk3VitELzExSlNTRDkvUEJHdjFhMlRq?= =?utf-8?B?ZW9oZ1B3eHYxSkZlUnJPSFZuQXhlOGk5ek5NNExVb3Q4K0pKcmRUcklUSFE3?= =?utf-8?B?UEZVQU9JcUhUSVpEdW85NzVyZ1JBa0hkd2tlbkRVS2N6UDdZL1h6U2JqaFBR?= =?utf-8?B?aTQ3eGFFR051aHprWmg5dGI3TXlOenM1b1p5aC9xcDdGZzg3OFhFOVJEUklo?= =?utf-8?B?SE0raWRibFFEVStNK3FBVTJRTzUrVmk4bGdGbWttZy9mZlIxUXpEMXF3UHY1?= =?utf-8?B?WDFWZ0hOQm1ZR0diamJJcVNlWVdlNmc3Sndma1JHZGFyTExDQXhtVGZnQ1M2?= =?utf-8?B?d1FGTUxtUUlWelR0anBaVC8zOE92dHB6OXM4Sk01OXBtUnZQb1phZzBFS21u?= =?utf-8?B?cDZuY1NiSmlXTzQzWUtjOXF2OWpQcW4zQUtRd2tvNEgzZlJ4YllLU3h0ZFdE?= =?utf-8?B?V0Z5Z2ZRczBGVGMxOFFvU3ViY0JQS0IwSTRIN3BpR1o5aGVJMHV3cFcwaFlP?= =?utf-8?B?SjJpNmFKTTBWTGtkeWU1dnZpMXJ1QXUzZ09VQzRIdzI3cE02ZlY5c3NGOVFp?= =?utf-8?B?U3gxdEF1bVZqTjlXcjFtUFpBek5VMmdFUDZqa2JmSkU5SjZwai80VENWWUxF?= =?utf-8?B?N0NDSDFLVEZKMEpqVGdnYUs3UXVIZHA0OVBaUCtmRnB3RCtuM1RBdmZlZThw?= =?utf-8?B?enQrUDd6WVhhOUl1Z1M5eXRxYU9pSTU0L2hTTStzMzI4UGhmaWlTRGpMSDJZ?= =?utf-8?B?RS9IWUtSc1grdXk0VlZpclhKYjQwK1E0MDE3UmFJdmxJclZXa0lCelk4bVZ4?= =?utf-8?B?d25wUTRaVDhXOGRuT0Q3b3pZcDgwUkNycFZtODA0OHFwNlZFVkNEaUhkVmV0?= =?utf-8?B?bGNNcVAvWnZLOEJwb0IxTWp0Z1FwYjRmUy8rY3JQTVMrMlVCa3hZWVBJcVN4?= =?utf-8?B?Y1lDSmR2YkZFd09CcTVhbllIUmZpNFJGMU1oY25iQjRLYkxkUm9HK3A0cUkv?= =?utf-8?B?bXZZQlcwQ0l6K045V0pLVWJwa1R5cWVkYS9ONG01Z2ZuS3pTQkxIYlcvWHVF?= =?utf-8?B?SXZnWG5ZR25LdUVIOVZyUjIyUEJpaVpaTjJjSTRGYUVKTlF5ZkRmV1Q3cFdh?= =?utf-8?B?WHBtNWlxVHBqcE5jM3Vxekp2YnUreTRpZWZwME5TZ2s3YlhnTnJtbHJRWGpR?= =?utf-8?B?QjRNVXN5Q2k2K0MxVFdNL2pHWis0M0xwRjV1VlAwRkVhdHAvOFluWTJYZ1pT?= =?utf-8?B?WWM2d29lRjZucmJmaUhpWDZ2dHR3RjByUVVxRDV3M28yNjJrUEVpZi9hb2FT?= =?utf-8?B?akxiWmM2NmdJdzVCbjdSZDNWZ3dvQWhQbXE4ZTFybmJyOHdsZ3dwb2U5NEls?= =?utf-8?B?Y1ZsdHFlaWJ1eG9YRFZUcjNvZHFBQ2JTQzk5T01RdURQWFh5d2RjTFJJamlB?= =?utf-8?B?Qmg3NUUyajJoNnhuTjdoaDhwYVFtRGdrSDJZQU9aUDJtSk02c3hudzhxQlBH?= =?utf-8?B?dDFTd2RESFNoRnNZQU81bUxqZFJUVFl4ZlZXSjJrSFJNVzYxWHVST2dPZjhx?= =?utf-8?Q?p7OTZfh8xo9g75M41LgpcAztq9hxlzQNglRacDaEWrF/?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 96632833-5b39-4df8-cb7c-08ddac86c7f5 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2025 03:35:03.7823 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2wHcWj2abyWM+57Mqn/7POb4F5Szrp0UgVLF13SLfrl+gyu+PXSblxE3x66ZHNKA7xmtAVMDX55/gQUnFCxu2Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9027 Given that `from_bytes_with_nul_unchecked` is paired with `from_bytes_with_nul`, it looks asymmetric that `from_bytes_with_nul_unchecked_mut` did not have its faillible safe counterpart. To avoid repetition, factorize the `CStr` validity check code into a private function. Signed-off-by: Alexandre Courbot --- rust/kernel/str.rs | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/rust/kernel/str.rs b/rust/kernel/str.rs index 28f2f359ab23e6a926e88913e3cc9f481aa86037..21d6f8801ea84686d4aa909fbb5= 2578af96fe2d8 100644 --- a/rust/kernel/str.rs +++ b/rust/kernel/str.rs @@ -243,11 +243,13 @@ pub unsafe fn from_char_ptr<'a>(ptr: *const crate::ff= i::c_char) -> &'a Self { unsafe { Self::from_bytes_with_nul_unchecked(bytes) } } =20 - /// Creates a [`CStr`] from a `[u8]`. + /// Returns `Ok` if `bytes` can safely be interpreted as a [`CStr`]. /// - /// The provided slice must be `NUL`-terminated, does not contain any - /// interior `NUL` bytes. - pub const fn from_bytes_with_nul(bytes: &[u8]) -> Result<&Self, CStrCo= nvertError> { + /// `bytes` is a valid [`CStr`] if: + /// * It is not empty, + /// * It is zero-terminated, + /// * It does not contain any other zero byte. + const fn is_valid_cstr(bytes: &[u8]) -> Result<(), CStrConvertError> { if bytes.is_empty() { return Err(CStrConvertError::NotNulTerminated); } @@ -263,8 +265,31 @@ pub const fn from_bytes_with_nul(bytes: &[u8]) -> Resu= lt<&Self, CStrConvertError } i +=3D 1; } - // SAFETY: We just checked that all properties hold. - Ok(unsafe { Self::from_bytes_with_nul_unchecked(bytes) }) + + Ok(()) + } + + /// Creates a [`CStr`] from a `[u8]`. + /// + /// The provided slice must be `NUL`-terminated, does not contain any + /// interior `NUL` bytes. + pub const fn from_bytes_with_nul(bytes: &[u8]) -> Result<&Self, CStrCo= nvertError> { + match Self::is_valid_cstr(bytes) { + // SAFETY: We just checked that all properties hold. + Ok(()) =3D> Ok(unsafe { Self::from_bytes_with_nul_unchecked(by= tes) }), + Err(e) =3D> Err(e), + } + } + + /// Creates a mutable [`CStr`] from a mutable `[u8]`. + /// + /// The provided slice must be `NUL`-terminated and not contain any in= terior `NUL` bytes. + pub const fn from_bytes_with_nul_mut(bytes: &mut [u8]) -> Result<&mut = Self, CStrConvertError> { + match Self::is_valid_cstr(bytes) { + // SAFETY: We just checked that all properties hold. + Ok(()) =3D> Ok(unsafe { Self::from_bytes_with_nul_unchecked_mu= t(bytes) }), + Err(e) =3D> Err(e), + } } =20 /// Creates a [`CStr`] from a `[u8]` without performing any additional --=20 2.49.0 From nobody Fri Oct 10 02:41:51 2025 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2061.outbound.protection.outlook.com [40.107.94.61]) (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 C2B281DE3B5; Mon, 16 Jun 2025 03:35:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.61 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044910; cv=fail; b=fko/SvKB6v1AA53UvDQ9YyRao0BevmBPYoakzY+ITbIv8neKPPC9uSJF6b3mVXbLJogQ2M3wg91a8/NRHGrXT/lXH4W4POxu24t4vLFoyRk63iuYu752AUbj5afzAIvnbGJTykFz1CKmZirbnASw5Ix9piK+Gnwxl3mfBhuxwWA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750044910; c=relaxed/simple; bh=OsLlz7DH8K2wc0JQpojZshHJFGcFXKURw40uS213LZ4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=RdLnLXduRkXYinUaeqc+AuL+/vgwDyHY1kwBfHVZD6RMO0Fb6sB2Msg1t1C9gabWTYm30qUaqxyOdKEWUosSnAXBJv6RNA1EPPyk7DRqthGPzbjh4vvYV2txMBmr3At8md2RpdtFFgI4g5aNuM9W/SW8RtytsUzb49xRimUY9vc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=XO9z3Gnp; arc=fail smtp.client-ip=40.107.94.61 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="XO9z3Gnp" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iaBwTmBKO5PcUq/e1SbulB5kecoFxXF/7CiqlNIMZFyC4dxpXUdAK0vD8zShBBlT4UG5YP6ryJz+PritkurXmuAnss80DxK/d0LWryQLAv2Jk8uVRYx9UJmNjMPjF2aqRYDx2svBEe4ZxAVJLFFQNgmGHtmR8vS9Ibjg5zcMOJy1MaLQYSJMaI7GLjbNCCBt+ICvijbhLsDR5+ZM0v/GmEENQUx8gRMnLqpN5r14LrzEQayfomy227jSZ2Mmt9ZaKxWbDuqDMZKAdxkBeaINbclBCJj1G+lg42q0AxF84D0Oul8MnEct3rGX+Jv25h3wC5T0BdYUD6m3VnO4CYAtoQ== 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=SCuRdTDayKU+PANJf2GkXcsaEtJOH3xd8CcSrcPegPg=; b=nf4E1HrvB+tmys/DIbqNbzf2wN+O2c4aDI6fyky/40RIwTsq1RKQMX2wyF0nIMUQviGcniT0vb3TyHOhvUu3wkQgwLxuMjWOGlhT0rr49oGZk6Q+V0krNCIT/lN8mAi3k5BAquiEaWNWiNSq7+1QjvZ1io39sJpRkcBor7xHZtSBzKyGEODXyT7Cp6shFLE+uGwwOi38SlsPJOYLnB5Sb8J2SiYAn47AZBfpENKO4gis0CpKk7ioXinZY6p6HkPzcl6wSNAVr4MkHOy+UlpbI0uj73q89B0tASv3sLOjRueXQFFZqdV+U1TE19BkjWrt/JTkYE/MdS2XvnHlX8k15w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SCuRdTDayKU+PANJf2GkXcsaEtJOH3xd8CcSrcPegPg=; b=XO9z3GnpjVKTvGOD9uBMgCYpXboKl0DkZaYb2he0CW6tMHiC5MfrvN6ICPq/RAT2im/xkCm6TBtFQHA9Nl7rKPSxPbTBUI2cmXGUEpuTL8O+akhJ5kQgLWU+2l9w61s/YKnTSabSKUnhZn74XDmYBUfrx3OekwfZ/OnThbYu1qayRx6ynXPBmOsQiFkzPFT6N4NM2bT5suvh/fK9fYr0tS+rpwfalmucPYLmjdYwFdODl0hVAwFsbj3M9DUL7LIPFx0eycuyTYhQxTuHHm1ZHXhsfktaSSpsspGgwIqyLzBffyFhyeJ8NZD0j8jybzfWbaTAC0/MJoaT42QWDSu8iQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CH3PR12MB9027.namprd12.prod.outlook.com (2603:10b6:610:120::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.28; Mon, 16 Jun 2025 03:35:06 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8835.027; Mon, 16 Jun 2025 03:35:06 +0000 From: Alexandre Courbot Date: Mon, 16 Jun 2025 12:34:11 +0900 Subject: [PATCH v4 7/7] rust: str: implement `Borrow` and `BorrowMut` for `CString` Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250616-borrow_impls-v4-7-36f9beb3fe6a@nvidia.com> References: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> In-Reply-To: <20250616-borrow_impls-v4-0-36f9beb3fe6a@nvidia.com> To: Danilo Krummrich , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYAPR01CA0139.jpnprd01.prod.outlook.com (2603:1096:404:2d::31) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CH3PR12MB9027:EE_ X-MS-Office365-Filtering-Correlation-Id: e2449b0a-79da-4b9c-b446-08ddac86c99f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|10070799003|366016|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UTRpb0FUWmg2Z0RPeGhwTWU2YUxKaStVekRMcGNoTVBIY2doa0owcm9MRG1H?= =?utf-8?B?OUlHQ3I0TW4rRnNPcURkZlpnamNIQzRBNXc5SmVpYk9iWU4rL0JSd2hsSUFo?= =?utf-8?B?NGpNZUhaMHFrdXQ3ZE56TkhDQU9PemxYdWQ5TEIwcFVEU0s2aCtBMkxKR3hN?= =?utf-8?B?WERkWjNNeTRhSEUxY2l4WXBGV0RnS3J6dDAwUHFDMzVWUnVWbkxiSUZ3Q3Jn?= =?utf-8?B?OGJYZFBNNDVxeUc2YTBkQXd3d25MUUN6TDc2ZmE3K0hmeUxqYmVqK2U4RnRy?= =?utf-8?B?UjgyVUpOZFV4OGJFSHZucTYzYmxSQmpZQ2JucDZnTlpxQmkvY3FQUG9RRFp0?= =?utf-8?B?eXU1YVFGTEFhMksvK201TW9YTHZVODhaNHVlUFVQT0FxVUJ3by95R1FWbzVu?= =?utf-8?B?ZFJwZWpaa2xoZVU0S2xySkh2RG5BbEpvaUhxYVpFZm5DaFFscEhFZ2xhZVhF?= =?utf-8?B?NEc0Ym41T25Ea2dvcllDcWI0TlBXTnNtTktoOG0xb2c5cWZIRDdKZ1pucTBa?= =?utf-8?B?YTd0cXBENHRnT1ZTK1prRUhwY2dONGc3bWpxZitESEM2UmFhRkNVdWl0QUZH?= =?utf-8?B?c2RFNWRnekp1M1JvNUZVeE5lelFjdTlTY25DZFgzVmFYVmZHOHEraE9DZ1JE?= =?utf-8?B?K3JDSVcxbVdmUDIxZnBGTldLQVQ1OWcyMmczRFFmYzNBa1BTZytHK3hpNmRv?= =?utf-8?B?ZE5lOGtQYWhyWXJYcGtGY1QvNWpmbkNRNWFHOEtaU3ZPckxQb1haL0Z6WlZ1?= =?utf-8?B?ZzVFM2NSanFPbHpiVWljWERXc1JuNEd4M3VEbm1KRnlTSjlWUThJd05xbXZZ?= =?utf-8?B?YVYyWkdBMVFtZ3pSRzQ2UkRMQ3c5NmpySnRwUXlWcWdncVVreXpwbHlBZERU?= =?utf-8?B?RWhXc2lPYng3MTRaV2daUlV3NTNDcXEyMWZPYytqZWV3TTFlVHdQTFA3aStI?= =?utf-8?B?K1dCQXBlaWZOYlNubDBvUVZKZ09zWkVxbnFjZ3RlRUJGbnU4eUJGdmtJYjYr?= =?utf-8?B?UjhwUGZXQlVaQmdOcGY2RzVGOXdZRldlRVRIc0daU3ZVdTc0RFY5dnlIRlEw?= =?utf-8?B?Rmd3YVB0Q05xVGVoRVh1SkpLMDNGM09kQlY4LytQSytWUXdQcjJVSk1ZTmg5?= =?utf-8?B?MlB2QUR3UlFIay9IOHVGYlVMcEY3VWZkc1NnT0dIdU1DR2tGSEMxOFhkMWln?= =?utf-8?B?U3ZtYkx6aGhLZ1I4ekpNUlJLejRxUWVPaDB1VzdUYnJyenBxUGNOQUNjZXV3?= =?utf-8?B?MzVmZXdCbjUyeXpVcFZwM3QyaWtQMG14Mjg2ck1ucHc3Zzd6UzM3YjZyM3VP?= =?utf-8?B?UlF4T3Q4Q242d3ZvRnFPeE1wUWlvNWRLYm9Xdlgxby8zazIzOGxLZE5SQnJJ?= =?utf-8?B?YXpYM3NPSDduczZjc0VSRDZhNmVGZ0czM2luWTNCQkJjd3hKcEMxTzhhUEZt?= =?utf-8?B?cnNLUm1PNVcra1BnbHk1Z1B2bkZzd0h2bXlzM25qTmhTR0xXTXRtMDRMOW5D?= =?utf-8?B?c1VMamRGRTJLS0FQbnV4bDM4VU5YTFZTdXFvaFljbXQ1T0pMZ2V0cUNRZldM?= =?utf-8?B?SWREc2xFYTR4SlRxQndzUmtjdHlXVzM3TjRRS3ErWTdXVSthYmhhUGtFR3Fk?= =?utf-8?B?NlJPcnhpQ3JhRWlWbmVTVkZ4RFlLYXZEdHRQUUU4MjBYV3ZydFVvRURQRWF0?= =?utf-8?B?dnhLQWJ4dmsxZUVuQ29jZTFPWmJrQmJQV3l3UldnL2NNTlc2Q1lTTGJjSDZt?= =?utf-8?B?SEVlUkdsTDdnWFQ2Q21NVGF0OWN6ZVg1Wk1uQVF5SjVvaC9tSThoWTFsY0tm?= =?utf-8?B?am1xYWpheTZUYUIwclBYQ2tvYmZOazAyclZXeHNwZEtEa2EzZXhtelJJbEVV?= =?utf-8?B?TkVoSTVUT1h0R2hBVFIzYjh5VWZ3MThEcGVhTGtxSjBpMWlHWDBCTGowNHdx?= =?utf-8?B?Um4zcWI2aEt0aVQyK3BGWmhXdzYyZjlHbjJZbDB4QVp2ZFlyQkwwL0VJRzh3?= =?utf-8?B?SEY2SGVlTFNBPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(10070799003)(366016)(1800799024)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bVdMQzhHcmljNDg5a0w5U2FUZnR2ejBJR2oyQXAzb3FaaytiaXBOZHNGQjZx?= =?utf-8?B?RE15bEJuSXY5WXQzN3hZcEE4MnRmVis1eWU2dE56eFlUN0QzOE1vUUlmcDZY?= =?utf-8?B?YldCZnhQbkk3OGhwRy9aOU1IN1plcnpzbE5pcUF4NmJpSWwrRXZaS3JleFAr?= =?utf-8?B?MGZkdlNUdjNYODV3SXgxMmQySnd0SDJ0K3pZdXhxVFdPRGx6N2tCTjRMdzhh?= =?utf-8?B?YTYra0UvOWZOajRYdEQ0N0dlSEFUZm5vS2FZYkRleWhxQ3dUMXNmUjBLa1pV?= =?utf-8?B?OWJLTW1OeEc4Nkd2UUFFdyt6NmJWbC9ydXNWUWZjaEIwZk5nVHJ2MUVyRytU?= =?utf-8?B?WXk3eHJjRkQxSm9IaG9OZFhKeHRZTWg4THgxMnM5bE9jSm9DdHdWTktiSzNw?= =?utf-8?B?TGh0UXdYbTdBUjE5Y3FKNE9BL1BUUTFaWUMyN2NuVHRHYVpSdVNlUTFjUmx6?= =?utf-8?B?aGxncEdXZksyTmwzRk5YYjl3YzdwOXRUa1JlRjh0c0VyOW9FMlFRS1JFbzQz?= =?utf-8?B?ZjFGZlRaWmpRb0o5RVY4MWdVL3I5THp4MzBxdUc0Z0RIdy9lazJTcWduci9u?= =?utf-8?B?Q281bkVPRDNYQnYraUFUWUZrdlloamhmL2hSZVVlQ2ZGZnd6TjZQWnVtbTdK?= =?utf-8?B?bW5HKzdRbmlud2xVeWo5NENxaXdIeDhDeXlBa3ZKTlRuOEQ3dXgyZHJ3M05p?= =?utf-8?B?VXdFbG84K1dYSHBLNnUwTHI3bzBtREVOYkVad2l0Y0RtTEhjeXRRTVNybkc5?= =?utf-8?B?U2QwRUpQZGF6eTQxUngyNm9EMTB0VHozNld5dUhwcjhDQjhXK2V2WUw0M2NY?= =?utf-8?B?RGsvaXJtbUNmNzArdjZzbW1oU2lDZVFPY3ZEdlB1Y1lVZ0ZsdTJmY3V6Zmd4?= =?utf-8?B?VWJTY085VDJFTDF0NitlY2l3WGppc0kwWEh2QkhoYktiOHdtSzJzeFl5ZkJ2?= =?utf-8?B?c1VqYTcvaEg4ZnhMbGE0aFQwVUJBZVNKODNoSGlzU2Vvb0NRdzJweFZMQWl1?= =?utf-8?B?ZEtTS0ZVSVlUVDZWTFZwekloT3d5cm1EY3RwVGNIWjVvRzFHYnd4bUZJRFgv?= =?utf-8?B?Y3FLWmhYVXZGZEVzSjRaZTM1cFRxL0xic0NKT0d1MUhCcFBuQllRUG5oVjdF?= =?utf-8?B?WTZqUjNaVVV4OGFnMDdLOXoxT1V6SGp3RmlmK3dHMHI3Ny9vbzc3N1NTOEV6?= =?utf-8?B?elhCR1dpeG9GZkRvQmppYWhmN2xXbkRVbGNJa0IyRW5YMGFFbXg5aHZmNXdk?= =?utf-8?B?bGJvS1YvLytmVFoxMzdiN0pCampvR0RrSlE3SENmMm84SHRSbkhhNE5sVFYv?= =?utf-8?B?Y0d0WUZpL3IzWWFuM0VoNWpmc3UwaC9PY0FSME1OeXNmUVlVRWZiaHlTOExC?= =?utf-8?B?VGVCWFpHU0taNjh1S2pOK20wcVBFZG42QVl4R25rcDBpR0dXYVdrOVVEZUdo?= =?utf-8?B?d0tPdjZveUZacjZpeUNUbFh3Mm9wWlhoenFJeTZ4aUQrQjBVSVVuWkNldVlt?= =?utf-8?B?ckJYb0hwWG5sclBCQ1NMYm1OSlZmYVcySGt5cHRNU0ROOEFRMGRWcFpSUnFu?= =?utf-8?B?aCtiOGpaNVNOVGFNRmRqNm8vK1hVWlJ0cldLanVrUjh5WEdESUd2MThieVNT?= =?utf-8?B?N2dvcVBxUzBuRjdxYll1NmtZWGJETE5BSGZGcGhmQUpRQ1VwU0ducXBsWkZs?= =?utf-8?B?QzdMeVQwNWdQYXBoZksvMVNMbzF4bkZCRG02N1V2bVo1dnFQUExCM3BzUXZn?= =?utf-8?B?Smx3Z2FHZ2ozNzVTSVhsamVQK3FzRm9qRHA0SmNLMzNsdjlNSUN3VkRYT2lW?= =?utf-8?B?UVhQWG8wL1FTYmY0L01TVVpsZXlDZkJkY0Fxd011eDZZODZaejRZNFFHVHVl?= =?utf-8?B?d0Vick4xclhFRENvSmhwV0wyeTl6TnNGakcyaUxUcXREcnA2bm5iMzc2MVNK?= =?utf-8?B?SHExTTdqTS92Q2FXQXdNYVpVbC9uU0s3a0pJRHdxL1ExOTJyS0w3VXJqUFFZ?= =?utf-8?B?T3NOdFlsWUlsUzdIT3ZoeFNpREhyUE1aY2VqbVV1SmhaenlsTVgzY3ROZ1Bo?= =?utf-8?B?UnVLN3VrV0QxUlFGYjg0RFNPSGp6bWF6RExreG5ndjgyU0x6YlArMDJCQjZO?= =?utf-8?B?di9Bc0dRZ3NXLzdHQ044THB3TnQ0YU9zUkJiT3VUNlRZRWpMOVpCWWNyQ25M?= =?utf-8?Q?O0n3b0w5J9dkFm+bZPqJ+GGpJHHUk59edr7+e654aV71?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: e2449b0a-79da-4b9c-b446-08ddac86c99f X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2025 03:35:06.5705 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Q7lB2jeiuPG5nMQeqsQvF9vgaa9fBVnfSX14MPMdJ7FF1z6A3myCOw440CnwWKVWVBT/5Xa5YxxTMU37GfAJOA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9027 Implement `Borrow` and `BorrowMut` for `CString`. This allows `CString` to be used in generic APIs asking for types implementing those traits. `&CStr` and `&mut CStr` also implement those traits allowing users to use either owned or borrowed values. Reviewed-by: Alice Ryhl Reviewed-by: Benno Lossin Signed-off-by: Alexandre Courbot --- rust/kernel/str.rs | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/rust/kernel/str.rs b/rust/kernel/str.rs index 21d6f8801ea84686d4aa909fbb52578af96fe2d8..82924113bfecc41d9e16ba28d9d= fb08d3a51d0bc 100644 --- a/rust/kernel/str.rs +++ b/rust/kernel/str.rs @@ -3,6 +3,7 @@ //! String representations. =20 use crate::alloc::{flags::*, AllocError, KVec}; +use core::borrow::{Borrow, BorrowMut}; use core::fmt::{self, Write}; use core::ops::{self, Deref, DerefMut, Index}; =20 @@ -936,6 +937,50 @@ fn deref_mut(&mut self) -> &mut Self::Target { } } =20 +/// # Examples +/// +/// ``` +/// # use core::borrow::Borrow; +/// # use kernel::str::{CStr, CString}; +/// # use kernel::fmt; +/// struct Foo>(B); +/// +/// // Owned instance using `CString`. +/// let owned_cstring =3D Foo(CString::try_from_fmt(fmt!("{}", "abc"))?); +/// +/// let str_data =3D b"abc\0"; +/// // Borrowed from `str_data`. +/// let borrowed_cstr =3D Foo(CStr::from_bytes_with_nul(str_data)?); +/// # Ok::<(), Error>(()) +/// ``` +impl Borrow for CString { + fn borrow(&self) -> &CStr { + self.deref() + } +} + +/// # Examples +/// +/// ``` +/// # use core::borrow::BorrowMut; +/// # use kernel::str::{CStr, CString}; +/// # use kernel::fmt; +/// struct Foo>(B); +/// +/// // Owned instance using `CString`. +/// let owned_cstring =3D Foo(CString::try_from_fmt(fmt!("{}", "abc"))?); +/// +/// let mut str_data =3D [b'a', b'b', b'c', 0]; +/// // Borrowed from `str_data`. +/// let borrowed_cstr =3D Foo(CStr::from_bytes_with_nul_mut(&mut str_data)= ?); +/// # Ok::<(), Error>(()) +/// ``` +impl BorrowMut for CString { + fn borrow_mut(&mut self) -> &mut CStr { + self.deref_mut() + } +} + impl<'a> TryFrom<&'a CStr> for CString { type Error =3D AllocError; =20 --=20 2.49.0