Crates.io | linspace |
lib.rs | linspace |
version | 0.2.1 |
created_at | 2023-06-23 15:54:33.353229+00 |
updated_at | 2025-09-24 04:38:27.183367+00 |
description | Turns a range into a linearly spaced sequence of values. |
homepage | |
repository | https://github.com/sigurd4/linspace |
max_upload_size | |
id | 898396 |
size | 26,897 |
Turns a range into a linearly spaced sequence of values.
Linspace::linspace
returns an iterator.
Linspace::linspace_array
returns an array.
Only works on bounded ranges like Range
and RangeInclusive
.
Both of these will print [0, 25, 50, 75]
.
use linspace::*;
let x: Vec<u32> = (0..100).linspace(4).collect();
assert_eq!(x, [0, 25, 50, 75]);
println!("{:?}", x);
let y: [u32; 4] = (0..100).linspace_array();
assert_eq!(y, [0, 25, 50, 75]);
println!("{:?}", y);
assert_eq!(x, y);
Both inclusive and exclusive ranges can be used.
And these will print [0, 25, 50, 75, 100]
.
use linspace::*;
let x: Vec<u32> = (0..=100).linspace(5).collect();
assert_eq!(x, [0, 25, 50, 75, 100]);
println!("{:?}", x);
let y: [u32; 5] = (0..=100).linspace_array();
assert_eq!(y, [0, 25, 50, 75, 100]);
println!("{:?}", y);
assert_eq!(x, y);
Want a non-linear range? That's also possible. After all, Linspace::linspace
just returns an Iterator
.
use linspace::*;
let x: Vec<f32> = (0.0..1.0)
.linspace(10)
.map(|z| 10.0f32.powf(z))
.collect();
println!("{:?}", x);
Very convenient!