Lines Matching +full:github +full:- +full:token
4 …t="github" src="https://img.shields.io/badge/github-dtolnay/syn-8da0cb?style=for-the-badge&labelCo…
5 [<img alt="crates.io" src="https://img.shields.io/crates/v/syn.svg?style=for-the-badge&color=fc8d62…
6 [<img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-syn-66c2a5?style=for-the-badge&labelC…
7 …ps://img.shields.io/github/actions/workflow/status/dtolnay/syn/ci.yml?branch=master&style=for-the-…
15 - **Data structures** — Syn provides a complete syntax tree that can represent
21 - **Derives** — Of particular interest to derive macros is [`syn::DeriveInput`]
24 user-defined trait.
26 - **Parsing** — Parsing in Syn is built around [parser functions] with the
27 signature `fn(ParseStream) -> Result<T>`. Every syntax tree node defined by
32 - **Location information** — Every token parsed by Syn is associated with a
34 token. These spans allow a procedural macro to display detailed error messages
38 - **Feature flags** — Functionality is aggressively feature gated so your
51 [*Release notes*](https://github.com/dtolnay/syn/releases)
62 [workshop]: https://github.com/dtolnay/proc-macro-workshop
75 [`TokenStream`]: https://doc.rust-lang.org/proc_macro/struct.TokenStream.html
83 proc-macro = true
92 pub fn my_macro(input: TokenStream) -> TokenStream {
96 // Build the output, possibly using quasi-quotation
115 fn heap_size_of_children(&self) -> usize;
136 The token-based procedural macro API provides great control over where the
149 macro as shown in the `heapsize` example, token-based macros in Syn are able to
154 --> src/main.rs:7:5
164 The [`lazy-static`] example directory shows the implementation of a
168 [`lazy-static`]: examples/lazy-static
175 static ref USERNAME: Regex = Regex::new("^[a-z0-9_-]{3,16}$").unwrap();
184 --> src/main.rs:10:16
202 [`trybuild`]: https://github.com/dtolnay/trybuild
209 generated code looks like. Use `cargo rustc -- -Zunstable-options
210 --pretty=expanded` or the [`cargo expand`] subcommand.
212 [`cargo expand`]: https://github.com/dtolnay/cargo-expand
216 test cases, run `cargo expand --test the_test_case` where the last argument is
219 This write-up by Brandon W Maister discusses debugging in more detail:
222 [debugging]: https://quodlibetor.github.io/posts/debugging-rusts-new-custom-derive-system/
232 - **`derive`** *(enabled by default)* — Data structures for representing the
234 - **`full`** — Data structures for representing the syntax tree of all valid
236 - **`parsing`** *(enabled by default)* — Ability to parse input tokens into a
238 - **`printing`** *(enabled by default)* — Ability to print a syntax tree node as
240 - **`visit`** — Trait for traversing a syntax tree.
241 - **`visit-mut`** — Trait for traversing and mutating in place a syntax tree.
242 - **`fold`** — Trait for transforming an owned syntax tree.
243 - **`clone-impls`** *(enabled by default)* — Clone impls for all syntax tree
245 - **`extra-traits`** — Debug, Eq, PartialEq, Hash impls for all syntax tree
247 - **`proc-macro`** *(enabled by default)* — Runtime dependency on the dynamic
254 Syn operates on the token representation provided by the [proc-macro2] crate
255 from crates.io rather than using the compiler's built in proc-macro crate
258 incompatible ecosystems for proc macros vs non-macro use cases.
260 In general all of your code should be written against proc-macro2 rather than
261 proc-macro. The one exception is in the signatures of procedural macro entry
264 The proc-macro2 crate will automatically detect and use the compiler's data
267 [proc-macro2]: https://docs.rs/proc-macro2/1.0/proc_macro2/
274 Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
275 2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
282 for inclusion in this crate by you, as defined in the Apache-2.0 license, shall