Closed
Description
Currently, ArrayView
has a helpful lifetime-preserving methods like to_slice
, but no way to preserve lifetimes of iterators like axis_iter
, outer_iter
and such.
This makes it difficult to return iterables from helper functions like this:
fn lazy_process(&self) -> impl '_ + Serialize {
IterSerialize(self.data.outer_iter().map(move |column| {
IterSerialize(column.outer_iter().map(|pixel| pixel.to_slice().unwrap())) // <-- cannot return value referencing function parameter `column`
}))
}
I suggest there should be overrides like into_outer_iter
, into_axis_iter
etc. on ArrayView
that would return iterators tied by the lifetime to the original data instead of the ArrayView
itself.
Note: while looking for open issues, the only relevant I found was #320, but there the author could afford to just reshape / flatten the data; that might not always be possible, like in my example above. @bluss mentioned issues and suggestions similar to what I'm describing here though: #320 (comment)
Metadata
Metadata
Assignees
Labels
No labels