-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Implement From<{&,&mut} [T; N]>
for Vec<T>
where T: Clone
#220
Comments
The Imo it's worth checking if this can be improved on the language side, e.g. by inserting an anonymous shim function. I don't know if that would be acceptable since it would result in a different Fn type in the iterator adapter. |
We discussed this in the libs-api meeting today. We're happy to add this, but it might be worth doing a crater run to check for type inference failures. |
…-vec, r=dtolnay Implement `From<{&,&mut} [T; N]>` for `Vec<T>` where `T: Clone` Currently, if `T` implements `Clone`, we can create a `Vec<T>` from an `&[T]` or an `&mut [T]`, can we also support creating a `Vec<T>` from an `&[T; N]` or an `&mut [T; N]`? Also, do I need to add `#[inline]` to the implementation? ACP: rust-lang/libs-team#220. [Accepted] Closes rust-lang#100880.
…tolnay Implement `From<{&,&mut} [T; N]>` for `Vec<T>` where `T: Clone` Currently, if `T` implements `Clone`, we can create a `Vec<T>` from an `&[T]` or an `&mut [T]`, can we also support creating a `Vec<T>` from an `&[T; N]` or an `&mut [T; N]`? Also, do I need to add `#[inline]` to the implementation? ACP: rust-lang/libs-team#220. [Accepted] Closes #100880.
…tolnay Implement `From<{&,&mut} [T; N]>` for `Vec<T>` where `T: Clone` Currently, if `T` implements `Clone`, we can create a `Vec<T>` from an `&[T]` or an `&mut [T]`, can we also support creating a `Vec<T>` from an `&[T; N]` or an `&mut [T; N]`? Also, do I need to add `#[inline]` to the implementation? ACP: rust-lang/libs-team#220. [Accepted] Closes #100880.
…tolnay Implement `From<{&,&mut} [T; N]>` for `Vec<T>` where `T: Clone` Currently, if `T` implements `Clone`, we can create a `Vec<T>` from an `&[T]` or an `&mut [T]`, can we also support creating a `Vec<T>` from an `&[T; N]` or an `&mut [T; N]`? Also, do I need to add `#[inline]` to the implementation? ACP: rust-lang/libs-team#220. [Accepted] Closes #100880.
Proposal
Problem statement
Currently, we have
From<{&,&mut} [T]>
forVec<T>
whereT: Clone
, I think we can also implementFrom<{&,&mut} [T; N]>
forVec<T>
whereT: Clone
.Motivation, use-cases
Suppose I want to convert an
&[[u32; 4]]
value to aVec<Vec<u32>>
type. Currently, I can write:items.iter().map(|item| item.to_vec()).collect::<Vec<_>>()
;items.iter().copied().map(Vec::from).collect::<Vec<_>>()
;I want to be able to write:
items.iter().map(Vec::from).collect::<Vec<_>>()
;Solution sketches
Implement
From<{&,&mut} [T; N]>
forVec<T>
whereT: Clone
.Links and related work
From<&[T]>
.From<&mut [T]>
.From<{&,&mut} [T; N]>
forVec<T>
whereT: Clone
rust#111278.What happens now?
This issue is part of the libs-api team API change proposal process. Once this issue is filed the libs-api team will review open proposals as capability becomes available. Current response times do not have a clear estimate, but may be up to several months.
The text was updated successfully, but these errors were encountered: