LyonSyonII / akin

Rust crate for writing repetitive code easier and faster.
43 stars 2 forks source link

Support for separators #3

Open Airtz opened 2 years ago

Airtz commented 2 years ago

Hi @LyonSyonII

As of now I don't think there is a good way to express some repetitions:

impl<T> Foo for T where T: Baz<A> + Baz<B> + ... {}

//We could do
akin! {
    let &Type = [B, ...];

    let &bound = { + Baz<*Type> };

    impl<T> Foo for T where T: Baz<A> *bound {}
}

//Or
akin! {
    let &Type = [A, B, ...];

    let &separator = [NONE, +, ...]

    let &bound = { *separator Baz<*Type> };

    impl<T> Foo for T where T: *bound {}
}

It would be nice to be able to specify a separator. Maybe something along those lines:

akin! {
    let &Type = [A, B, ...];

    let &bound = { Baz<*Type> };

    impl<T> Foo for T where T: *{+}bound {}
}
LyonSyonII commented 2 years ago

The first option would be the cleanest for me (and the currently intended).

I don't think there is a real necessity for adding the feature (I prefer the simplest syntax possible), but you can make a PR if you want.