mirror of
https://github.com/torvalds/linux.git
synced 2025-11-02 09:40:27 +02:00
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>
|
||
|---|---|---|
| .. | ||
| alloc | ||
| block | ||
| init | ||
| list | ||
| net | ||
| sync | ||
| alloc.rs | ||
| block.rs | ||
| build_assert.rs | ||
| device.rs | ||
| error.rs | ||
| firmware.rs | ||
| init.rs | ||
| ioctl.rs | ||
| kunit.rs | ||
| lib.rs | ||
| list.rs | ||
| net.rs | ||
| page.rs | ||
| prelude.rs | ||
| print.rs | ||
| rbtree.rs | ||
| sizes.rs | ||
| static_assert.rs | ||
| std_vendor.rs | ||
| str.rs | ||
| sync.rs | ||
| task.rs | ||
| time.rs | ||
| transmute.rs | ||
| types.rs | ||
| uaccess.rs | ||
| workqueue.rs | ||