Skip to content

Create Range like struct of user define types for easy for loop

License

Notifications You must be signed in to change notification settings

lucidfrontier45/gamo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gamo

Create a Range like struct of user define types for easy for loop. Gamo means range in Esperanto.

What is it?

Currently Rust does not have a stable API to create Range<T> of user defined type T. This crate provides a Range like struct Gamo that can be easily used with for-loops.

Usage

[dependencies]
gamo = "0.2.0"

The type T used in Gamo<T> must implement TryToNext trait.

Example

use gamo::{Gamo, TryToNext};

#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
struct TimeSlot(usize);

impl TryToNext for TimeSlot {
    fn try_to_next(&self) -> Option<Self> {
        Some(Self(self.0 + 1))
    }
}

fn main() {
    for t in Gamo::new(TimeSlot(0), TimeSlot(5)) {
        println!("{:?}", t);
    }
}

About

Create Range like struct of user define types for easy for loop

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages