From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1BF0CEE0219 for ; Wed, 11 Sep 2024 08:52:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5B7A18D0101; Wed, 11 Sep 2024 04:52:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 53E518D0056; Wed, 11 Sep 2024 04:52:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3DF568D0101; Wed, 11 Sep 2024 04:52:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 1CCD38D0056 for ; Wed, 11 Sep 2024 04:52:14 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 369B0A1368 for ; Wed, 11 Sep 2024 08:52:13 +0000 (UTC) X-FDA: 82551840546.20.816766D Received: from mail-4316.protonmail.ch (mail-4316.protonmail.ch [185.70.43.16]) by imf02.hostedemail.com (Postfix) with ESMTP id 62F7A80003 for ; Wed, 11 Sep 2024 08:52:11 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=proton.me header.s=protonmail header.b=b0MC+EOR; spf=pass (imf02.hostedemail.com: domain of benno.lossin@proton.me designates 185.70.43.16 as permitted sender) smtp.mailfrom=benno.lossin@proton.me; dmarc=pass (policy=quarantine) header.from=proton.me ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1726044627; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=7ej536exrAiwdO2l5a1GM7W1na7XjDoAMN2spKpA03Q=; b=jIKqyvHZ06mYvKAQvUqPAsaglzTrCf5sBTJFovVvs+uvYjMV8MrfY1GAnnTGMunoR8HzUW WbRY/Cigi/JAh6pvzUo6U1pcj4pAz2NGlFzcsCywLdf88PX2OKcEFt+GSq6Wnr8EeEKxz5 a/K+qwU3CpR5Lmh/HILzsIj9JPb9tDg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1726044627; a=rsa-sha256; cv=none; b=tlijHQkHaYnt2c0PpRr/eIodxkNz5UtLKkjybv0XowuyDBmpZ8uDvA9jz7MuRPwOLNwpm3 LuaeqfIsrtYAPWGshgCBVWrygVqvNdb7K2PDdiDJoEqcPqBDd8ypGa+93z4SelfChjQibQ bbsasDdSVHpfoPqhao8Vl52+pm35S7A= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=proton.me header.s=protonmail header.b=b0MC+EOR; spf=pass (imf02.hostedemail.com: domain of benno.lossin@proton.me designates 185.70.43.16 as permitted sender) smtp.mailfrom=benno.lossin@proton.me; dmarc=pass (policy=quarantine) header.from=proton.me DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me; s=protonmail; t=1726044729; x=1726303929; bh=7ej536exrAiwdO2l5a1GM7W1na7XjDoAMN2spKpA03Q=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=b0MC+EORYPM1eG7rGu9uqZFAa11xU9ar3Xj8+WRjj/IxSr8xw3CNH2Yf0M0jRDi+l of2INkSQuKw6uCrmZiyDpFwN74/mB40aoKtyi0R9MyTRrHaTauY3qstWIxt6SbDsGk 2NrEycbGAN5Uz9WG+MpUd78xTosJycw32GzQsCfLXH87e4dzwzNRzep0kA7QUpRRgh iUEzCJanFIbc3NNYLeHfNWUK+2dqQL8v9fHoawAi3XfixSuQjGOPPtdORQsOhOW55A Gay5+Pt7tFqNZ0GhcAJdA7tybxYA1+7UIz7su8scSSP5ceyU3ZS0m/gbcH2C+kb/1Z Yk8gjgON5jQIA== Date: Wed, 11 Sep 2024 08:52:03 +0000 To: Danilo Krummrich From: Benno Lossin Cc: ojeda@kernel.org, alex.gaynor@gmail.com, wedsonaf@gmail.com, boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, a.hindborg@samsung.com, aliceryhl@google.com, akpm@linux-foundation.org, daniel.almeida@collabora.com, faith.ekstrand@collabora.com, boris.brezillon@collabora.com, lina@asahilina.net, mcanal@igalia.com, zhiw@nvidia.com, cjia@nvidia.com, jhubbard@nvidia.com, airlied@redhat.com, ajanulgu@redhat.com, lyude@redhat.com, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH v6 14/26] rust: alloc: implement `IntoIterator` for `Vec` Message-ID: In-Reply-To: References: <20240816001216.26575-1-dakr@kernel.org> <20240816001216.26575-15-dakr@kernel.org> <308d40dd-105b-4ebf-ba70-585a97d66928@proton.me> Feedback-ID: 71780778:user:proton X-Pm-Message-ID: 113f2dd15dbb08efdbff177ae5499441409002bf MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Stat-Signature: 6x49xfodx5a7gb1fs3nrad3hwea1t3y8 X-Rspamd-Queue-Id: 62F7A80003 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1726044731-339172 X-HE-Meta: U2FsdGVkX19U35XFCrafgZOzuCVWbcmPpO4IBkVGHGs54nd/3UDf2k9H9MB/uWi5LH5xg+L2WL0bBTMPY8nvKXv9/6KTxFbmkNtHBvyLLSr9uejDMd2tQ1HSoJGRpdHeLU/1I5xNE73SKg3pmmnP8OM9T3qscX2txvwYZNrwIid0yxT/rWEQ6R1Ky0TOzd5/r8L6LT3XLZZwCvUdT5R6BHmX7eO9hng9XtgHa6GgPSPpVWC9WNeya2RUxn1lF/7dCTM+yQKcWwWe6FkKlrbhXUPi8cRqHFvLKh9s8D1djguj0NH719pCMBAphvisPkAboNr+m4G/+Q8O6q7JpTIeL+78tPS1r5i++HQSO6CZ+b1uzwcC7kosYlTpFX38IIlapUGsLo5z3fjrEARl1/9CJgq7msUZRp/Sjh7sMMWVlE9XLJLUR4Rdj1YSHiUVfsERDZQeAn1LAnbnPev/gC3Xbh//iw8lGNZxkPAxHthjRbtkoa1rRxGKkTxzvKXru0n8ego8tDq96aXrWImLAkGto3K1mVC0fkVevaf6BirAuiFKpv8MHu2tM8iuPRMoIbG22wJR/tET6A+pvQmFvdiVtrT5hSZ6ncKrmpnNRSucf/h5+myACV85RiH8DN8x/boTvAuXFa2tsUSEQ84xEDtxNXSHoulR5SNmxI9k/roSxpXmaoWxpgnB3nTFn6iuAn9+XDzTypO6q6Mmwv8HPnmEq5hy5N3yvsEU/8aBG+witlNfFi6OeDFCc1Vo/tepwtjrdyBJVY6mPlVhEM2yXkXXS5UXDxyRq//0I2TjUHuVU/L6OC7alQY0F5oScEpfSePA8BKJbBIh8WpXwP3X/CEZouX6YjT4zHHjDBFy9VicG8pGMUEa/ilmswELlPG2gB4hBCNwj8g5NmV1Q9eHD7htGNb4sr2CHwoGI/0XUv+k+L0BYxORJ+xe5v90EOhtYNfeuOx1FTm7vSuEbf1dKq7 zsyWgsaw SYQnKX8A4E2HL4TOtqRR7oe9GqSocvATZ4lT9vQDr9M3dwLzmwfr8YMDFhTQawrpiFsgPNPGSP1qzmcT3yGrkzWwLiQFjAbC5wOHAJXr8iGVKb2C1/1WlhlB9Jbx3VI2on7IM8ndv9gB8m2nM4nHTgZz1RGDx2I3IUuFSYb5uy5C+EPWo/RNgdHURfXEa/UwB2WWO8M464h998UZ32jo4kBn1ihrPcvzYDjYhdoGTe2GP6mUdtURsdcJUI9HPJsHxHvxndIusxkRZAv3WRMIeuS4EV15RI0/z0o/6NJkPuUh7ld6rnJ6lHlcD0KPJRPmQa/niT7OULSjEcSwwlKOQZTIB71JTGAu54qnAZwxzlWT9+Bw= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 11.09.24 01:39, Danilo Krummrich wrote: > On Tue, Sep 10, 2024 at 08:04:27PM +0000, Benno Lossin wrote: >> On 16.08.24 02:10, Danilo Krummrich wrote: >>> +/// [`IntoIterator`] trait). >>> +/// >>> +/// # Examples >>> +/// >>> +/// ``` >>> +/// let v =3D kernel::kvec![0, 1, 2]?; >>> +/// let iter =3D v.into_iter(); >>> +/// >>> +/// # Ok::<(), Error>(()) >>> +/// ``` >>> +pub struct IntoIter { >>> + ptr: *mut T, >>> + buf: NonNull, >> >> No invariants for these two fields? >=20 > Suggestions? When determining the invariants, I look at the places where you would want to use them, ie the `SAFETY` comments that use these fields: - for `buf` you only use it to free the backing allocation, so you only need that it has been allocated by `A` if `cap !=3D 0`. - for `ptr` you need that it is valid for reads for `size_of::() * length` bytes. So I would put those two things into invariants. >>> + len: usize, >>> + cap: usize, >>> + _p: PhantomData, >>> +} >>> + >>> +impl IntoIter >>> +where >>> + A: Allocator, >>> +{ >>> + fn as_raw_mut_slice(&mut self) -> *mut [T] { >>> + ptr::slice_from_raw_parts_mut(self.ptr, self.len) >>> + } >>> +} >>> + >>> +impl Iterator for IntoIter >>> +where >>> + A: Allocator, >>> +{ >>> + type Item =3D T; >>> + >>> + /// # Examples >>> + /// >>> + /// ``` >>> + /// let v =3D kernel::kvec![1, 2, 3]?; >>> + /// let mut it =3D v.into_iter(); >>> + /// >>> + /// assert_eq!(it.next(), Some(1)); >>> + /// assert_eq!(it.next(), Some(2)); >>> + /// assert_eq!(it.next(), Some(3)); >>> + /// assert_eq!(it.next(), None); >>> + /// >>> + /// # Ok::<(), Error>(()) >>> + /// ``` >> >> AFAIK documentation on functions in trait implementations won't show up >> in rustdoc (I just checked this). So I would remove it. >=20 > They don't, but the KUnit tests are still executed. :) Oh I see, then may I suggest moving them to the module documentation or put them onto `Vec`, that way people can also read them :) --- Cheers, Benno