2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00
linux/rust/kernel
Danilo Krummrich 93e602310f rust: alloc: implement collect for IntoIter
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
    optimize 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<Self, AllocError>`, 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.

Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Benno Lossin <benno.lossin@proton.me>
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Link: https://lore.kernel.org/r/20241004154149.93856-19-dakr@kernel.org
[ Added newline in documentation, changed case of section to be
  consistent with an existing one, fixed typo. - Miguel ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2024-10-15 23:10:32 +02:00
..
alloc rust: alloc: implement collect for IntoIter 2024-10-15 23:10:32 +02:00
block rust: block: fix wrong usage of lockdep API 2024-08-21 13:28:13 +02:00
init rust: treewide: switch to our kernel Box type 2024-10-15 22:56:59 +02:00
list rust: enable arbitrary_self_types and remove Receiver 2024-10-07 21:39:57 +02:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2024-09-05 20:37:20 -07:00
sync rust: treewide: switch to our kernel Box type 2024-10-15 22:56:59 +02:00
alloc.rs rust: alloc: implement IntoIterator for Vec 2024-10-15 23:10:32 +02:00
block.rs rust: block: introduce kernel::block::mq module 2024-06-14 07:45:04 -06:00
build_assert.rs rust: upgrade to Rust 1.68.2 2023-05-31 17:35:03 +02:00
device.rs device: rust: improve safety comments 2024-06-20 16:14:58 +02:00
error.rs rust: error: optimize error type to use nonzero 2024-10-10 00:33:42 +02:00
firmware.rs rust: firmware: fix invalid rustdoc link 2024-07-31 13:24:29 +02:00
init.rs rust: alloc: remove extension of std's Box 2024-10-15 22:56:59 +02:00
ioctl.rs rust: start using the #[expect(...)] attribute 2024-10-07 21:39:57 +02:00
kunit.rs rust: kunit: use C-string literals to clean warning 2024-10-01 23:46:42 +02:00
lib.rs rust: alloc: implement kernel Vec type 2024-10-15 23:10:32 +02:00
list.rs rust: enable clippy::undocumented_unsafe_blocks lint 2024-10-07 21:39:05 +02:00
net.rs rust: core abstractions for network PHY drivers 2023-12-15 09:35:50 +00:00
page.rs rust: add abstraction for struct page 2024-07-08 23:44:01 +02:00
prelude.rs rust: alloc: implement kernel Vec type 2024-10-15 23:10:32 +02:00
print.rs rust: start using the #[expect(...)] attribute 2024-10-07 21:39:57 +02:00
rbtree.rs rust: treewide: switch to our kernel Box type 2024-10-15 22:56:59 +02:00
sizes.rs rust: sizes: add commonly used constants 2024-08-30 10:27:34 +01:00
static_assert.rs rust: static_assert: add static_assert! macro 2022-12-04 01:59:16 +01:00
std_vendor.rs rust: std_vendor: update dbg macro from Rust upstream 2024-10-10 00:33:42 +02:00
str.rs rust: enable clippy::undocumented_unsafe_blocks lint 2024-10-07 21:39:05 +02:00
sync.rs rust: sync: implement Default for LockClassKey 2024-05-05 19:22:25 +02:00
task.rs rust: kernel: remove redundant imports 2024-05-05 19:22:25 +02:00
time.rs rust: time: doc: Add missing C header links 2024-05-01 00:04:47 +02:00
transmute.rs rust: kernel: move FromBytes and AsBytes traits to a new transmute module 2024-10-10 00:33:42 +02:00
types.rs rust: alloc: remove extension of std's Box 2024-10-15 22:56:59 +02:00
uaccess.rs rust: kernel: move FromBytes and AsBytes traits to a new transmute module 2024-10-10 00:33:42 +02:00
workqueue.rs rust: treewide: switch to our kernel Box type 2024-10-15 22:56:59 +02:00