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 75C3FC3DA4A for ; Thu, 1 Aug 2024 15:10:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0A7206B00A6; Thu, 1 Aug 2024 11:10:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0571E6B00A8; Thu, 1 Aug 2024 11:10:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E3AA46B00AA; Thu, 1 Aug 2024 11:10:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id C28716B00A6 for ; Thu, 1 Aug 2024 11:10:38 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 88C80A0EA0 for ; Thu, 1 Aug 2024 15:10:38 +0000 (UTC) X-FDA: 82404013356.13.02A89F7 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) by imf22.hostedemail.com (Postfix) with ESMTP id ACF95C0033 for ; Thu, 1 Aug 2024 15:10:36 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Z8jf1GqY; spf=pass (imf22.hostedemail.com: domain of aliceryhl@google.com designates 209.85.128.45 as permitted sender) smtp.mailfrom=aliceryhl@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722524980; 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=bk9wanyFW6m5LYofC0MsD2q5eoNVdvtlWBG2yEhfFuI=; b=YRpvE1wLfF52immjbzd2vdA+sLLQKwku5BbFQfl3nNd1H2gvsDF2OK/m533zL3MJTe0hFk hPEPgyJMrO1z/ECIJET9iPLpCYmTJyJTJ7N0BrGg5TeU8EejIbAKzvxda+PaAyNd9BH3DS 8gUc75JhOhiuq13S0gH3w6wTCr7/uUo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722524980; a=rsa-sha256; cv=none; b=z1Zj5S/1ezqX/BGOEKdNiOFNZjjIrBN5CZgQc9cVxRt34SBstNCDtOi1L2JubovrrKAEnl ZAyI4SqsQCz47R3oNLN52MDRvr3NzjptT1lnabgN9Y6nZRso//PkHIQmMbYPU5nNkAO8kJ UGd8zF1W3hZEBWrAAUgk4pmzWvoyAqA= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Z8jf1GqY; spf=pass (imf22.hostedemail.com: domain of aliceryhl@google.com designates 209.85.128.45 as permitted sender) smtp.mailfrom=aliceryhl@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-428035c0bb2so13140075e9.1 for ; Thu, 01 Aug 2024 08:10:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1722525035; x=1723129835; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=bk9wanyFW6m5LYofC0MsD2q5eoNVdvtlWBG2yEhfFuI=; b=Z8jf1GqYNbqNyum+OU28s3hRQiQYlCtop1XEs8gIYvZaYZgbuvvnnsRZN1dlvWOgaR Tc9JEWUEKaKYKlwMXev0+DffSL8SlowBl5iV8eo6j7N+x63MZ5wDMPk7Z9L64Sd6WXeZ 4OtDg4LCaAAwcrFYvfVLJG9OZNPWqrfzw0KK2qXBiNJj6QcgysQj3tuCX5PDt7LSroID ohAsryoAB6nFgVVjdTE4sYlJa+k/a11ziyiIX6TI9L1jA7x/dj+KpJYcdCCAEGacPxs+ gYOU4jYvz+ELFkozHlNuSTC+jy9wexooBqBittTGhAnFfTZz5pC/huBTdXrn2UW7tYPU jyvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722525035; x=1723129835; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bk9wanyFW6m5LYofC0MsD2q5eoNVdvtlWBG2yEhfFuI=; b=GPIshQBRX6iu56KY1+eLbB5DyWDIt9fZ1ABkspeN3KBZHw+4yDWAUObQ55hbRKvKv5 eCSzfm899WYRoVFPVuM0uWxl/emcUU3rK7PMZbUCThiBmwtV8L17KTdFpex2fvTurYKo yD48pPVMjjgUIBEJZH1u7RONjyNSolWKfxFGw4jLBrnxcy9HNp1VdxFTQC+l4uiI9qWj hiPsplQoMJ8s7BHSoQYfUKXEZLopUBYc8+af6hQK3FuCHQhTe116ItYVfcRnDt1QgQsW MR+pwnSy7+LwsRw7DpkI6ogq5spamxL+DJEMVDp/Z+XNC7a/Lrq/+uZVP0mAa9ZEgSXZ M8yw== X-Forwarded-Encrypted: i=1; AJvYcCU/BjFyYsHKVlcVf/oNWGAAg7b1C07FTNSvCzLCGrxq5kxC+zGBq40SPMhzvysDcAVw/Yqqzcu4cWjbbAU/BXIZ80c= X-Gm-Message-State: AOJu0YwDPJpAtT3d60mPDAiOksqy2HsCSFFHykm9SEZucEBTVjWHYoHY 9dak/7VqNXlww4CHXrZwMsv2lNggixBJp2S/YoXc5r/Q0yKknUh12j0wjzUgUhq2qQ4IfqfXGtu I9KwDigDpWRIezS1/6sIL8VJVJjCvX5iAETsd X-Google-Smtp-Source: AGHT+IFN96aiSBpAtqABX5F3iL9KKBgYmIL3XJxYe62cmvYa3fdTiF80iFcVk3Xk8eu/mwQVgGj9rLLKcnXJyGe9m1g= X-Received: by 2002:a05:600c:45cb:b0:426:526f:4a1f with SMTP id 5b1f17b1804b1-428e69f4c64mr2877745e9.16.1722525034889; Thu, 01 Aug 2024 08:10:34 -0700 (PDT) MIME-Version: 1.0 References: <20240801000641.1882-1-dakr@kernel.org> <20240801000641.1882-18-dakr@kernel.org> In-Reply-To: <20240801000641.1882-18-dakr@kernel.org> From: Alice Ryhl Date: Thu, 1 Aug 2024 17:10:22 +0200 Message-ID: Subject: Re: [PATCH v3 17/25] rust: alloc: implement `collect` for `IntoIter` To: Danilo Krummrich Cc: ojeda@kernel.org, alex.gaynor@gmail.com, wedsonaf@gmail.com, boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, benno.lossin@proton.me, a.hindborg@samsung.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, acurrid@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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: ACF95C0033 X-Stat-Signature: 793rx7tndm41j477s3h4mxpa1ze5fep1 X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1722525036-286501 X-HE-Meta: U2FsdGVkX1+g9tTdECW/7V6Q5afYnwScEfQawONMMzWVvecqXT7sYiI3stL5+znZzJ2jitIfCdWIrtOSCvybL/J68eVbu9m+5ANoCFrEaJZnZwLeCM4pei3gvZ5e+Z3GnZ+AV0kaEMzogddFkMvuDuFjPdHv5Zony1EW1cnctGyzgXSKvyvpioZPODp+JuTEftHWYa0MZRlPZGiChIHokrPPp5TqtmWlL/WJhTxfBytercsqf4TyltWFHBxAjy7BWIpcG6hPSnVZQnsL6NWWlMGq4iE+/DxBUwQuiCwbsEMn1OvT8bVW/hbRLIP8hxzKJEFSxNhOAf2K8GpMs0cJC9I9cpBFDx/qFK3QFql6EmfPYAPlJEFTJB7vg2dracBdnmqYb/5basB02EIew2iE3ixgz3YnChaXZkXlC+MFS9Rz17vzH4WDfEMsovcfonha26eQfFhNmm9BOSVcchSom+A/1xCMZiS2lf9QDYaqZz1N68e03zOKoQWNqfp6rR3wQOQarOWVF2pVx3ZvcNVgZRA/8adc5oP9W4f9n5uVQpY5mhO6AHxe6RdYcQsBgOpwQaq0qe5MxVlGiEUnTGTo4l3Jl7NlW8f3VM/KhjO6V+ZVtvXSzsQHHhhplIms6W+fkMovYekQJIiHHSH+7AZnW0Hfmoeq+/jC8BranQgJ/d2miWhXjT/wW9IxZ5wP9OU8qfbld03oxyBjQxIE+t2UV2R3Bx+6SgqYcETsmcKMPHuZg7gQ4cGQ2ol1HfuPGkfEK0p6PrnwXkZQFhHgjnd3BkMvjEdWF/KOLnUA3/RN3aNw67vxiJFaI+rnfBGg+OC76pyWXcopP/Li8Cld8n6D6V8huRKFdDkfwZRWV5NtgZIIBxW5HMXx8BAJYmyk1SsXc+qVYeptlfBTb8lAvYFFm+0P/YsYoW5IiMTxsHjGDq0v8jgdQ/TcBBIZXMv7HfiqZqyY1iSkHVi+rEZ8urz JDWo7znK YfSsrRhtJwThIjnmo+5gP8ZnOWZkCwuPbLBOfHIU7y0C4rDEVztN8ZcEo0FYeJaWyZkOS/YKomAOQdUFsfilylW4Dq1xdhWc/GBnpU9O1Cc04uHNKeDtD2VStwbw8yBiv6qTd4bNnEfYEaWIK5XEhIBIdRcPL+XAN6ZoiMQNOFIGgBwzrm9DLy/YP9IlT1AAJBhgYKULE5itMB4tPqQuUiA+wJ+SAlguZO4fTWs66DWPiLHELPCHPUi13bZIO6CbbqAk03rUpu7zoIWNVvvSr2vyATpN8miub8k0znZ4gmwkzPDEjJ/aM8HPIOQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.180630, 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 Thu, Aug 1, 2024 at 2:08=E2=80=AFAM Danilo Krummrich w= rote: > > Currently, we can't implement `FromIterator`. There are a couple of > issues with this trait in the kernel, namely: > > - Rust's specialization feature is unstable. This prevents us to > optimze for the special case where `I::IntoIter` equals `Vec`'s > `IntoIter` type. > - We also can't use `I::IntoIter`'s type ID either to work around this, > since `FromIterator` doesn't require this type to be `'static`. > - `FromIterator::from_iter` does return `Self` instead of > `Result`, hence we can't properly handle allocation > failures. > - Neither `Iterator::collect` nor `FromIterator::from_iter` can handle > additional allocation flags. > > Instead, provide `IntoIter::collect`, such that we can at least convert > `IntoIter` into a `Vec` again. > > Signed-off-by: Danilo Krummrich I'm not convinced a collect implementation specific to IntoIter is necessar= y? > + > + // SAFETY: `buf` points to the start of the backing buffer and `= len` is guaranteed to be > + // smaller than `cap`. Depending on `alloc` this operation may s= hrink the buffer or leaves > + // it as it is. > + ptr =3D match unsafe { A::realloc(Some(buf.cast()), layout, flag= s) } { Why would you shrink it? You can just keep the capacity. Alice