sin/
lib.rs

1//! # Sin
2//!
3//! Sin (a perversion of dtolnay's [syn](https://crates.io/crates/syn) crate), aims to be a
4//! compatible (via optional features), friendly alternative to the
5//! [proc-macro2](https://crates.io/crates/proc-macro2) / [syn](https://crates.io/crates/syn) /
6//! [quote](https://crates.io/crates/quote) ecosystem. The goal of sin is to provide all of the
7//! same features, but without some of the limitations of `syn`. For example, `sin::parse` will
8//! be implemented for _all_ underlying sin types without the need for awkward situational
9//! macros such as `parenthesized!`, `parse_inner`, etc., and implementing `sin::parse` will
10//! require implementing sin's equivalent of `quote::ToTokens`, meaning anything in the sin
11//! ecosystem that can be parsed can also be turned back into tokens automatically.
12//! Compatibility with the `proc-macro2` ecosystem will also be provided via feature-gated
13//! `From<TokenStream2>` and `To<TokenStream2>` implementations.
14//!
15//! Where the `proc-macro2`/`syn` ecosystem aims to provide accurate+complete parsing of valid
16//! Rust syntax, including complex structures like functions, impl blocks, etc, sin aims to
17//! maximize the developer UX to make syntax parsing a joy, while at the same time catering to
18//! those who wish to parse arbitrary syntax that may not necessarily be valid Rust code. Thus
19//! sin aims to be the tool you reach for when you want to define and parse _custom syntax_ in
20//! Rust proc and attribute macros, including implementing support for non-Rust grammars.
21//!
22//! Sin is a work in progress. The first usable version will be 0.1.0.
23//!