Open kcajf opened 5 years ago
Didn't notice how long ago this came. It's been hard for folks to find time to review PRs here. Sorry for the delay.
Ended up adding a CopyStyle
trait for safety to avoid the case of e.g. passing copy=Val(123) and hitting an unspecialized method rather than erroring.
Shall we merge this?
Uh hey, yeah, this would be really nice to have. I assume this is the reason that AxisArray
s cause allocation to occur when taking subarrays, e.g toy example:
function testalloc(x,interval)
@view x[interval];
nothing
end
causes allocation when x
is an AxisArray
but not when it's a normal array. This is true regardless of whether interval
is a Range
or an array of indices.
I'll create a separate issue for this and then link to this PR.
This is my attempt at addressing #147
All the tests appear to pass. I'm new to Julia and wasn't quite sure on the best way implement this, but doing it via Value types seemed efficient and easy. The only issue was that, in order to resolve the following method ambiguity:
I had to duplicate
_new_axes
on line 95 with thecopy
parameter as bothVal{true}
andVal{false}
(whereas I originally just had the argument ascopy::Val
). I couldn't work out another way to get it to compile, but no doubt someone will be able to suggest a better way to avoid this ambiguity without duplicating code.