Trait Sample

Source
pub trait Sample<const DIM: usize, Point = [f32; DIM]>: Noise {
    // Required method
    fn sample_with_seed(&self, point: Point, seed: i32) -> f32;
}
Expand description

Trait for sampling noises.

Required Methods§

Source

fn sample_with_seed(&self, point: Point, seed: i32) -> f32

Trait Implementations§

Source§

impl<const DIM: usize, Point> Sample<DIM, Point> for Box<dyn Sample<DIM, Point>>
where Self: Noise,

Available on crate feature alloc only.
Source§

fn sample_with_seed(&self, point: Point, seed: i32) -> f32

Implementations on Foreign Types§

Source§

impl<const DIM: usize, Point> Sample<DIM, Point> for Box<dyn Sample<DIM, Point>>
where Self: Noise,

Available on crate feature alloc only.
Source§

fn sample_with_seed(&self, point: Point, seed: i32) -> f32

Source§

impl<const DIM: usize, Point, N> Sample<DIM, Point> for &N
where N: Sample<DIM, Point>,

Source§

fn sample_with_seed(&self, point: Point, seed: i32) -> f32

Implementors§

Source§

impl Sample<2> for CellDistance

Source§

impl Sample<2> for CellDistanceSq

Source§

impl Sample<2> for CellValue

Source§

impl Sample<2> for OpenSimplex2

Source§

impl Sample<2> for OpenSimplex2s

Source§

impl Sample<2> for Perlin

Source§

impl Sample<2> for Simplex

Source§

impl Sample<2> for Value

Source§

impl Sample<2> for ValueCubic

Source§

impl Sample<2, Simd<f32, 2>> for CellDistance

Available on crate feature nightly-simd only.
Source§

impl Sample<2, Simd<f32, 2>> for CellDistanceSq

Available on crate feature nightly-simd only.
Source§

impl Sample<2, Simd<f32, 2>> for CellValue

Available on crate feature nightly-simd only.
Source§

impl Sample<2, Simd<f32, 2>> for OpenSimplex2

Available on crate feature nightly-simd only.
Source§

impl Sample<2, Simd<f32, 2>> for OpenSimplex2s

Available on crate feature nightly-simd only.
Source§

impl Sample<2, Simd<f32, 2>> for Perlin

Available on crate feature nightly-simd only.
Source§

impl Sample<2, Simd<f32, 2>> for Simplex

Available on crate feature nightly-simd only.
Source§

impl Sample<2, Simd<f32, 2>> for Value

Available on crate feature nightly-simd only.
Source§

impl Sample<2, Simd<f32, 2>> for ValueCubic

Available on crate feature nightly-simd only.
Source§

impl Sample<3> for CellDistance

Source§

impl Sample<3> for CellDistanceSq

Source§

impl Sample<3> for CellValue

Source§

impl Sample<3> for OpenSimplex2

Source§

impl Sample<3> for OpenSimplex2s

Source§

impl Sample<3> for Perlin

Source§

impl Sample<3> for Simplex

Source§

impl Sample<3> for Value

Source§

impl Sample<3> for ValueCubic

Source§

impl Sample<3, Simd<f32, 4>> for CellDistance

Available on crate feature nightly-simd only.
Source§

impl Sample<3, Simd<f32, 4>> for CellDistanceSq

Available on crate feature nightly-simd only.
Source§

impl Sample<3, Simd<f32, 4>> for CellValue

Available on crate feature nightly-simd only.
Source§

impl Sample<3, Simd<f32, 4>> for OpenSimplex2

Available on crate feature nightly-simd only.
Source§

impl Sample<3, Simd<f32, 4>> for OpenSimplex2s

Available on crate feature nightly-simd only.
Source§

impl Sample<3, Simd<f32, 4>> for Perlin

Available on crate feature nightly-simd only.
Source§

impl Sample<3, Simd<f32, 4>> for Simplex

Available on crate feature nightly-simd only.
Source§

impl Sample<3, Simd<f32, 4>> for Value

Available on crate feature nightly-simd only.
Source§

impl Sample<3, Simd<f32, 4>> for ValueCubic

Available on crate feature nightly-simd only.
Source§

impl Sample<4> for CellDistance

Source§

impl Sample<4> for CellDistanceSq

Source§

impl Sample<4> for CellValue

Source§

impl Sample<4> for OpenSimplex2

Source§

impl Sample<4> for OpenSimplex2s

Source§

impl Sample<4> for Perlin

Source§

impl Sample<4> for Simplex

Source§

impl Sample<4> for Value

Source§

impl Sample<4, Simd<f32, 4>> for CellDistance

Available on crate feature nightly-simd only.
Source§

impl Sample<4, Simd<f32, 4>> for CellDistanceSq

Available on crate feature nightly-simd only.
Source§

impl Sample<4, Simd<f32, 4>> for CellValue

Available on crate feature nightly-simd only.
Source§

impl Sample<4, Simd<f32, 4>> for OpenSimplex2

Available on crate feature nightly-simd only.
Source§

impl Sample<4, Simd<f32, 4>> for OpenSimplex2s

Available on crate feature nightly-simd only.
Source§

impl Sample<4, Simd<f32, 4>> for Perlin

Available on crate feature nightly-simd only.
Source§

impl Sample<4, Simd<f32, 4>> for Simplex

Available on crate feature nightly-simd only.
Source§

impl Sample<4, Simd<f32, 4>> for Value

Available on crate feature nightly-simd only.
Source§

impl<N, F, const DIM: usize> Sample<DIM> for Map<N, F>
where N: Sample<DIM>, F: Fn(f32) -> f32,

Source§

impl<N, F, const DIM: usize> Sample<DIM> for TriangleWave<N, F>
where N: Sample<DIM>, F: Sample<DIM>,

Source§

impl<N, F, const DIM: usize, const LANES: usize> Sample<DIM, Simd<f32, LANES>> for Map<N, F>
where N: Sample<DIM, Simd<f32, LANES>>, F: Fn(f32) -> f32, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<N, F, const DIM: usize, const LANES: usize> Sample<DIM, Simd<f32, LANES>> for TriangleWave<N, F>
where N: Sample<DIM, Simd<f32, LANES>>, F: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<N: OpenSimplexNoise> Sample<2> for Improve2X<N>

Source§

impl<N: OpenSimplexNoise> Sample<2, Simd<f32, 2>> for Improve2X<N>

Available on crate feature nightly-simd only.
Source§

impl<N: OpenSimplexNoise> Sample<3> for Improve3Xy<N>

Source§

impl<N: OpenSimplexNoise> Sample<3> for Improve3Xz<N>

Source§

impl<N: OpenSimplexNoise> Sample<3, Simd<f32, 4>> for Improve3Xy<N>

Available on crate feature nightly-simd only.
Source§

impl<N: OpenSimplexNoise> Sample<3, Simd<f32, 4>> for Improve3Xz<N>

Available on crate feature nightly-simd only.
Source§

impl<N: OpenSimplexNoise> Sample<4> for Improve4XyZw<N>

Source§

impl<N: OpenSimplexNoise> Sample<4> for Improve4Xyz<N>

Source§

impl<N: OpenSimplexNoise> Sample<4> for Improve4XyzXy<N>

Source§

impl<N: OpenSimplexNoise> Sample<4> for Improve4XyzXz<N>

Source§

impl<N: OpenSimplexNoise> Sample<4, Simd<f32, 4>> for Improve4XyZw<N>

Available on crate feature nightly-simd only.
Source§

impl<N: OpenSimplexNoise> Sample<4, Simd<f32, 4>> for Improve4Xyz<N>

Available on crate feature nightly-simd only.
Source§

impl<N: OpenSimplexNoise> Sample<4, Simd<f32, 4>> for Improve4XyzXy<N>

Available on crate feature nightly-simd only.
Source§

impl<N: OpenSimplexNoise> Sample<4, Simd<f32, 4>> for Improve4XyzXz<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<2>> Sample<2> for Improve3Xy<N>

Source§

impl<N: Sample<2>> Sample<2> for Improve3Xz<N>

Source§

impl<N: Sample<2>> Sample<2> for Improve4XyZw<N>

Source§

impl<N: Sample<2>> Sample<2> for Improve4Xyz<N>

Source§

impl<N: Sample<2>> Sample<2> for Improve4XyzXy<N>

Source§

impl<N: Sample<2>> Sample<2> for Improve4XyzXz<N>

Source§

impl<N: Sample<2, f32x2>> Sample<2, Simd<f32, 2>> for Improve3Xy<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<2, f32x2>> Sample<2, Simd<f32, 2>> for Improve3Xz<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<2, f32x2>> Sample<2, Simd<f32, 2>> for Improve4XyZw<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<2, f32x2>> Sample<2, Simd<f32, 2>> for Improve4Xyz<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<2, f32x2>> Sample<2, Simd<f32, 2>> for Improve4XyzXy<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<2, f32x2>> Sample<2, Simd<f32, 2>> for Improve4XyzXz<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<3>> Sample<3> for Improve2X<N>

Source§

impl<N: Sample<3>> Sample<3> for Improve4XyZw<N>

Source§

impl<N: Sample<3>> Sample<3> for Improve4Xyz<N>

Source§

impl<N: Sample<3>> Sample<3> for Improve4XyzXy<N>

Source§

impl<N: Sample<3>> Sample<3> for Improve4XyzXz<N>

Source§

impl<N: Sample<3, f32x4>> Sample<3, Simd<f32, 4>> for Improve2X<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<3, f32x4>> Sample<3, Simd<f32, 4>> for Improve4XyZw<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<3, f32x4>> Sample<3, Simd<f32, 4>> for Improve4Xyz<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<3, f32x4>> Sample<3, Simd<f32, 4>> for Improve4XyzXy<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<3, f32x4>> Sample<3, Simd<f32, 4>> for Improve4XyzXz<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<4>> Sample<4> for Improve2X<N>

Source§

impl<N: Sample<4>> Sample<4> for Improve3Xy<N>

Source§

impl<N: Sample<4>> Sample<4> for Improve3Xz<N>

Source§

impl<N: Sample<4, f32x4>> Sample<4, Simd<f32, 4>> for Improve2X<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<4, f32x4>> Sample<4, Simd<f32, 4>> for Improve3Xy<N>

Available on crate feature nightly-simd only.
Source§

impl<N: Sample<4, f32x4>> Sample<4, Simd<f32, 4>> for Improve3Xz<N>

Available on crate feature nightly-simd only.
Source§

impl<Noise> Sample<2> for Tileable<Noise>
where Noise: Sample<4>,

Source§

impl<Noise> Sample<2, Simd<f32, 2>> for Tileable<Noise>
where Noise: Sample<4, f32x4>,

Available on crate feature nightly-simd only.
Source§

impl<Noise, const DIM: usize> Sample<DIM> for AddSeed<Noise>
where Noise: Sample<DIM>,

Source§

impl<Noise, const DIM: usize> Sample<DIM> for Fbm<Noise>
where Noise: Sample<DIM>,

Source§

impl<Noise, const DIM: usize> Sample<DIM> for MulSeed<Noise>
where Noise: Sample<DIM>,

Source§

impl<Noise, const DIM: usize> Sample<DIM> for Ridged<Noise>
where Noise: Sample<DIM>,

Source§

impl<Noise, const DIM: usize> Sample<DIM> for Weighted<Fbm<Noise>>
where Noise: Sample<DIM>,

Source§

impl<Noise, const DIM: usize, const LANES: usize> Sample<DIM, Simd<f32, LANES>> for AddSeed<Noise>
where Noise: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<Noise, const DIM: usize, const LANES: usize> Sample<DIM, Simd<f32, LANES>> for Fbm<Noise>
where Noise: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<Noise, const DIM: usize, const LANES: usize> Sample<DIM, Simd<f32, LANES>> for MulSeed<Noise>
where Noise: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<Noise, const DIM: usize, const LANES: usize> Sample<DIM, Simd<f32, LANES>> for Ridged<Noise>
where Noise: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<Noise, const DIM: usize, const LANES: usize> Sample<DIM, Simd<f32, LANES>> for Weighted<Fbm<Noise>>
where Noise: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, A, B> Sample<DIM> for Add<A, B>
where A: Sample<DIM>, B: Sample<DIM>,

Source§

impl<const DIM: usize, A, B> Sample<DIM> for Div<A, B>
where A: Sample<DIM>, B: Sample<DIM>,

Source§

impl<const DIM: usize, A, B> Sample<DIM> for Max<A, B>
where A: Sample<DIM>, B: Sample<DIM>,

Source§

impl<const DIM: usize, A, B> Sample<DIM> for Min<A, B>
where A: Sample<DIM>, B: Sample<DIM>,

Source§

impl<const DIM: usize, A, B> Sample<DIM> for Mul<A, B>
where A: Sample<DIM>, B: Sample<DIM>,

Source§

impl<const DIM: usize, A, B> Sample<DIM> for Pow<A, B>
where A: Sample<DIM>, B: Sample<DIM>,

Source§

impl<const DIM: usize, A, B> Sample<DIM> for Rem<A, B>
where A: Sample<DIM>, B: Sample<DIM>,

Source§

impl<const DIM: usize, A, B> Sample<DIM> for Sub<A, B>
where A: Sample<DIM>, B: Sample<DIM>,

Source§

impl<const DIM: usize, A, B, T> Sample<DIM> for Lerp<A, B, T>
where A: Sample<DIM>, B: Sample<DIM>, T: Sample<DIM>,

Source§

impl<const DIM: usize, N> Sample<DIM> for Abs<N>
where N: Sample<DIM>,

Source§

impl<const DIM: usize, N> Sample<DIM> for Ceil<N>
where N: Sample<DIM>,

Source§

impl<const DIM: usize, N> Sample<DIM> for Cos<N>
where N: Sample<DIM>,

Source§

impl<const DIM: usize, N> Sample<DIM> for Floor<N>
where N: Sample<DIM>,

Source§

impl<const DIM: usize, N> Sample<DIM> for Neg<N>
where N: Sample<DIM>,

Source§

impl<const DIM: usize, N> Sample<DIM> for Round<N>
where N: Sample<DIM>,

Source§

impl<const DIM: usize, N> Sample<DIM> for Sin<N>
where N: Sample<DIM>,

Source§

impl<const DIM: usize, N> Sample<DIM> for Sqrt<N>
where N: Sample<DIM>,

Source§

impl<const DIM: usize, N> Sample<DIM> for Tan<N>
where N: Sample<DIM>,

Source§

impl<const DIM: usize, N, F> Sample<DIM> for Frequency<N, F>
where N: Sample<DIM>, F: Sample<DIM>,

Source§

impl<const DIM: usize, Point, F> Sample<DIM, Point> for NoiseFn<F, false>
where F: Fn(Point) -> f32,

Source§

impl<const DIM: usize, Point, F> Sample<DIM, Point> for NoiseFn<F, true>
where F: Fn(Point, i32) -> f32,

Source§

impl<const DIM: usize, Point, N, X> Sample<DIM, Point> for TranslateX<N, X>
where Point: IndexMut<usize, Output = f32> + Copy, N: Sample<DIM, Point>, X: Sample<DIM, Point>,

Source§

impl<const DIM: usize, Point, N, X, Y> Sample<DIM, Point> for TranslateXy<N, X, Y>
where Point: IndexMut<usize, Output = f32> + Copy, N: Sample<DIM, Point>, X: Sample<DIM, Point>, Y: Sample<DIM, Point>,

Source§

impl<const DIM: usize, Point, N, X, Y, Z> Sample<DIM, Point> for TranslateXyz<N, X, Y, Z>
where Point: IndexMut<usize, Output = f32> + Copy, N: Sample<DIM, Point>, X: Sample<DIM, Point>, Y: Sample<DIM, Point>, Z: Sample<DIM, Point>,

Source§

impl<const DIM: usize, Point, N, X, Y, Z, W> Sample<DIM, Point> for TranslateXyzw<N, X, Y, Z, W>
where Point: IndexMut<usize, Output = f32> + Copy, N: Sample<DIM, Point>, X: Sample<DIM, Point>, Y: Sample<DIM, Point>, Z: Sample<DIM, Point>, W: Sample<DIM, Point>,

Source§

impl<const DIM: usize, Point, Noise> Sample<DIM, Point> for Seeded<Noise>
where Noise: Sample<DIM, Point>,

Source§

impl<const DIM: usize, T> Sample<DIM, T> for Constant

Source§

impl<const DIM: usize, Value, Min, Max> Sample<DIM> for Clamp<Value, Min, Max>
where Value: Sample<DIM>, Min: Sample<DIM>, Max: Sample<DIM>,

Source§

impl<const DIM: usize, const LANES: usize, A, B> Sample<DIM, Simd<f32, LANES>> for Add<A, B>
where A: Sample<DIM, Simd<f32, LANES>>, B: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, A, B> Sample<DIM, Simd<f32, LANES>> for Div<A, B>
where A: Sample<DIM, Simd<f32, LANES>>, B: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, A, B> Sample<DIM, Simd<f32, LANES>> for Max<A, B>
where A: Sample<DIM, Simd<f32, LANES>>, B: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, A, B> Sample<DIM, Simd<f32, LANES>> for Min<A, B>
where A: Sample<DIM, Simd<f32, LANES>>, B: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, A, B> Sample<DIM, Simd<f32, LANES>> for Mul<A, B>
where A: Sample<DIM, Simd<f32, LANES>>, B: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, A, B> Sample<DIM, Simd<f32, LANES>> for Pow<A, B>
where A: Sample<DIM, Simd<f32, LANES>>, B: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, A, B> Sample<DIM, Simd<f32, LANES>> for Rem<A, B>
where A: Sample<DIM, Simd<f32, LANES>>, B: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, A, B> Sample<DIM, Simd<f32, LANES>> for Sub<A, B>
where A: Sample<DIM, Simd<f32, LANES>>, B: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, A, B, T> Sample<DIM, Simd<f32, LANES>> for Lerp<A, B, T>
where A: Sample<DIM, Simd<f32, LANES>>, B: Sample<DIM, Simd<f32, LANES>>, T: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, N> Sample<DIM, Simd<f32, LANES>> for Abs<N>
where N: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, N> Sample<DIM, Simd<f32, LANES>> for Ceil<N>
where N: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, N> Sample<DIM, Simd<f32, LANES>> for Cos<N>
where N: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, N> Sample<DIM, Simd<f32, LANES>> for Floor<N>
where N: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, N> Sample<DIM, Simd<f32, LANES>> for Neg<N>
where N: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, N> Sample<DIM, Simd<f32, LANES>> for Round<N>
where N: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, N> Sample<DIM, Simd<f32, LANES>> for Sin<N>
where N: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, N> Sample<DIM, Simd<f32, LANES>> for Sqrt<N>
where N: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, N> Sample<DIM, Simd<f32, LANES>> for Tan<N>
where N: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, N, F> Sample<DIM, Simd<f32, LANES>> for Frequency<N, F>
where N: Sample<DIM, Simd<f32, LANES>>, F: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.
Source§

impl<const DIM: usize, const LANES: usize, Value, Min, Max> Sample<DIM, Simd<f32, LANES>> for Clamp<Value, Min, Max>
where Value: Sample<DIM, Simd<f32, LANES>>, Min: Sample<DIM, Simd<f32, LANES>>, Max: Sample<DIM, Simd<f32, LANES>>, LaneCount<LANES>: SupportedLaneCount,

Available on crate feature nightly-simd only.