3 releases (breaking)

0.3.0 Oct 22, 2024
0.2.0 Oct 22, 2024
0.1.0 Oct 22, 2024

#301 in Procedural macros

MIT license

9KB
239 lines

TypePipe!

Ever wanted the ability to curry type signatures?

Then wait no longer! With this crate, you can do things like:

type_pipe! [
    T,
    MyType<_>,
    MyWrapper<_>,
]

and this produces:

MyWrapper<MyType<T>>,

There's three main macros:

type_pipe: This replaces all _ with the resulting type from the previous line.
This is the example I demonstrated above. Another example:

  • T, Wrapped<_, String>, Outer<String, _> -> Outer<String, Wrapped<T, String>>

type_pipe_pre: This inserts the resulting type from the previous line into the first position.

  • T, Wrapped, Outer<String> -> Outer<Wrapped<T>, String>
  • T, Wrapped<String>, Outer<String> -> Outer<Wrapped<T, String>, String>

type_pipe_post: This inserts the resulting type from the previous line into the last position.

  • T, Wrapped, Outer<String> -> Outer<String, Wrapped<T>>

Dependencies

~230–670KB
~16K SLoC