I was trying to give the idea from #701 a try. This implementation works, but it uses GATs so it raises the MSRV to 1.65. It's also somewhat messy in a few places - I'm particularly unhappy with the Option<> in ArrayVec which I had to add because you can't destructure a type which implements Drop.
If addressing #701 requires Rust 1.65 anyway, and thus should be considered a breaking change, then there might be simpler options on the table. If we can eliminate or simplify the ArrayLike trait, it might open up simpler options.
I was trying to give the idea from #701 a try. This implementation works, but it uses GATs so it raises the MSRV to 1.65. It's also somewhat messy in a few places - I'm particularly unhappy with the
Option<>
inArrayVec
which I had to add because you can't destructure a type which implements Drop.If addressing #701 requires Rust 1.65 anyway, and thus should be considered a breaking change, then there might be simpler options on the table. If we can eliminate or simplify the
ArrayLike
trait, it might open up simpler options.