Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn range(comptime N: type) type {
- return struct {
- start: N,
- stepsz: N,
- end: N,
- fn init(start_: N, stepsz_: N, end_: N) @This() {
- return @This() {
- .start = start_,
- .stepsz = stepsz_,
- .end = end_
- };
- }
- fn next(self: *@This()) ?N {
- if (self.start + self.stepsz <= self.end) {
- var ret = self.start;
- self.start += self.stepsz;
- return ret;
- }
- return null;
- }
- fn size(self: *@This()) N {
- return (self.end - self.start) / self.stepsz;
- }
- };
- }
- pub fn main() void {
- var sum: usize = 0;
- comptime var r = comptime range(usize).init(0, 10, 100);
- inline while(comptime r.next()) |val| {
- sum += val;
- @import("std").debug.warn("sum now is: {}\n", sum);
- }
- @import("std").debug.warn("final sum = {}\n", sum);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement