Open ZhennanWu opened 3 months ago
This is an equivalent API of TryFrom<Vec<T>> for [T; N] which was stabilized in Rust 1.48.
TryFrom<Vec<T>> for [T; N]
When using the smallvec crate in a message-passing context, I often find I using it as a container for payloads with pre-determined length.
smallvec
fn send(&self) -> SmallVec<[i32; 2]> { smallvec![1, 2, 3] } fn recv(&mut self, msg: SmallVec<[Box<dyn Any>; 2]>) { let [a, b, c] = some_unwrap_magic!(msg); // ... }
Now the only way to do this seems to be calling next().unwrap() on msg.into_iter(). But Vec provides a very nice way of doing this, and presumably more friendly to compiler optimizations:
next().unwrap()
msg.into_iter()
Vec
let [a, b, c]: [Box<dyn Any>; 3] = msg.try_into().unwrap();
I wish this feature to make its way into ver 2.0
This is an equivalent API of
TryFrom<Vec<T>> for [T; N]
which was stabilized in Rust 1.48.Reason:
When using the
smallvec
crate in a message-passing context, I often find I using it as a container for payloads with pre-determined length.Now the only way to do this seems to be calling
next().unwrap()
onmsg.into_iter()
. ButVec
provides a very nice way of doing this, and presumably more friendly to compiler optimizations:I wish this feature to make its way into ver 2.0