Add StepLower and StepUpper marker strategies with enum wiring and legacy alias compatibility - #25
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves #23
Summary
This PR adds zero-sized
StepLowerandStepUppermarker strategies for fixed-direction step interpolation across 1D/2D/3D/ND.When direction is known at compile time, these markers avoid:
Stepdirection-vector allocationinterpolate()Stepremains available and unchanged for:Motivation
Step::from(StepDirection::Lower|Upper)is convenient, but still carries runtime machinery intended for flexible direction handling.For hot paths with fixed direction,
StepLower/StepUpperprovide a leaner path.Changes
strategy::StepLowerstrategy::StepUpperStrategy1DStrategy2DStrategy3DStrategyNDimpl From<StepDirection> for Stepintact.Strategy1DEnumStrategy2DEnumStrategy3DEnumStrategyNDEnumFromimplsinit/interpolate/allow_extrapolatedispatch armsStepis called out first for mixed per-dimension directionalityStepLower/StepUpper"LeftNearest"->StepLower"RightNearest"->StepUpperSerde Behavior
StepLower/StepUpperuse unit-struct style serialization (consistent with other marker strategies).StepLower/StepUpper.StepDirection, soSteppayload format is not broadened.Compatibility
StepandFrom<StepDirection> for Stepare preserved.Stepwire format remains unchanged.Testing
Added/updated tests for:
StepLower/StepUpperbehavior in 1D/2D/3D/ND{"Step":[...]}does not accept alias namesValidation run:
cargo fmtcargo test --features serdeAll tests and doc-tests pass.