gecko-dev/third_party/rust/quote/README.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

242 строки
8.3 KiB
Markdown
Исходник Обычный вид История

Rust Quasi-Quoting
==================
[![Build Status](https://api.travis-ci.org/dtolnay/quote.svg?branch=master)](https://travis-ci.org/dtolnay/quote)
[![Latest Version](https://img.shields.io/crates/v/quote.svg)](https://crates.io/crates/quote)
[![Rust Documentation](https://img.shields.io/badge/api-rustdoc-blue.svg)](https://docs.rs/quote/)
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
This crate provides the [`quote!`] macro for turning Rust syntax tree data
structures into tokens of source code.
[`quote!`]: https://docs.rs/quote/0.6/quote/macro.quote.html
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
Procedural macros in Rust receive a stream of tokens as input, execute arbitrary
Rust code to determine how to manipulate those tokens, and produce a stream of
tokens to hand back to the compiler to compile into the caller's crate.
Quasi-quoting is a solution to one piece of that -- producing tokens to return
to the compiler.
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
The idea of quasi-quoting is that we write *code* that we treat as *data*.
Within the `quote!` macro, we can write what looks like code to our text editor
or IDE. We get all the benefits of the editor's brace matching, syntax
highlighting, indentation, and maybe autocompletion. But rather than compiling
that as code into the current crate, we can treat it as data, pass it around,
mutate it, and eventually hand it back to the compiler as tokens to compile into
the macro caller's crate.
This crate is motivated by the procedural macro use case, but is a
general-purpose Rust quasi-quoting library and is not specific to procedural
macros.
*Version requirement: Quote supports any compiler version back to Rust's very
first support for procedural macros in Rust 1.15.0.*
Bug 1468950 - Update Cargo lockfiles and re-vendor rust dependencies. r=Gankro MozReview-Commit-ID: 3kcDWGBPXt9 --HG-- rename : third_party/rust/proc-macro2/.cargo-checksum.json => third_party/rust/proc-macro2-0.3.6/.cargo-checksum.json rename : third_party/rust/proc-macro2/.travis.yml => third_party/rust/proc-macro2-0.3.6/.travis.yml rename : third_party/rust/proc-macro2/Cargo.toml => third_party/rust/proc-macro2-0.3.6/Cargo.toml rename : third_party/rust/proc-macro2/README.md => third_party/rust/proc-macro2-0.3.6/README.md rename : third_party/rust/proc-macro2/src/lib.rs => third_party/rust/proc-macro2-0.3.6/src/lib.rs rename : third_party/rust/proc-macro2/src/stable.rs => third_party/rust/proc-macro2-0.3.6/src/stable.rs rename : third_party/rust/proc-macro2/src/strnom.rs => third_party/rust/proc-macro2-0.3.6/src/strnom.rs rename : third_party/rust/proc-macro2/src/unstable.rs => third_party/rust/proc-macro2-0.3.6/src/unstable.rs rename : third_party/rust/proc-macro2/tests/test.rs => third_party/rust/proc-macro2-0.3.6/tests/test.rs rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.5.2/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.5.2/Cargo.toml rename : third_party/rust/quote/README.md => third_party/rust/quote-0.5.2/README.md rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.5.2/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.5.2/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.5.2/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.5.2/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.13.1/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.13.1/Cargo.toml rename : third_party/rust/syn/README.md => third_party/rust/syn-0.13.1/README.md rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.13.1/src/attr.rs rename : third_party/rust/syn/src/buffer.rs => third_party/rust/syn-0.13.1/src/buffer.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.13.1/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.13.1/src/derive.rs rename : third_party/rust/syn/src/error.rs => third_party/rust/syn-0.13.1/src/error.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.13.1/src/expr.rs rename : third_party/rust/syn/src/file.rs => third_party/rust/syn-0.13.1/src/file.rs rename : third_party/rust/syn/src/gen/fold.rs => third_party/rust/syn-0.13.1/src/gen/fold.rs rename : third_party/rust/syn/src/gen/visit.rs => third_party/rust/syn-0.13.1/src/gen/visit.rs rename : third_party/rust/syn/src/gen/visit_mut.rs => third_party/rust/syn-0.13.1/src/gen/visit_mut.rs rename : third_party/rust/syn/src/gen_helper.rs => third_party/rust/syn-0.13.1/src/gen_helper.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.13.1/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.13.1/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.13.1/src/item.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.13.1/src/lib.rs rename : third_party/rust/syn/src/lifetime.rs => third_party/rust/syn-0.13.1/src/lifetime.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.13.1/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.13.1/src/mac.rs rename : third_party/rust/syn/src/macros.rs => third_party/rust/syn-0.13.1/src/macros.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.13.1/src/op.rs rename : third_party/rust/syn/src/parse_quote.rs => third_party/rust/syn-0.13.1/src/parse_quote.rs rename : third_party/rust/syn/src/parsers.rs => third_party/rust/syn-0.13.1/src/parsers.rs rename : third_party/rust/syn/src/path.rs => third_party/rust/syn-0.13.1/src/path.rs rename : third_party/rust/syn/src/punctuated.rs => third_party/rust/syn-0.13.1/src/punctuated.rs rename : third_party/rust/syn/src/spanned.rs => third_party/rust/syn-0.13.1/src/spanned.rs rename : third_party/rust/syn/src/synom.rs => third_party/rust/syn-0.13.1/src/synom.rs rename : third_party/rust/syn/src/token.rs => third_party/rust/syn-0.13.1/src/token.rs rename : third_party/rust/syn/src/tt.rs => third_party/rust/syn-0.13.1/src/tt.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.13.1/src/ty.rs extra : rebase_source : bda7c9d57b337b22b0cf8c095c4d3a79f4cd2682
2018-06-21 15:22:02 +03:00
[*Release notes*](https://github.com/dtolnay/quote/releases)
```toml
[dependencies]
quote = "0.6"
```
## Syntax
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
The quote crate provides a [`quote!`] macro within which you can write Rust code
Bug 1468950 - Update Cargo lockfiles and re-vendor rust dependencies. r=Gankro MozReview-Commit-ID: 3kcDWGBPXt9 --HG-- rename : third_party/rust/proc-macro2/.cargo-checksum.json => third_party/rust/proc-macro2-0.3.6/.cargo-checksum.json rename : third_party/rust/proc-macro2/.travis.yml => third_party/rust/proc-macro2-0.3.6/.travis.yml rename : third_party/rust/proc-macro2/Cargo.toml => third_party/rust/proc-macro2-0.3.6/Cargo.toml rename : third_party/rust/proc-macro2/README.md => third_party/rust/proc-macro2-0.3.6/README.md rename : third_party/rust/proc-macro2/src/lib.rs => third_party/rust/proc-macro2-0.3.6/src/lib.rs rename : third_party/rust/proc-macro2/src/stable.rs => third_party/rust/proc-macro2-0.3.6/src/stable.rs rename : third_party/rust/proc-macro2/src/strnom.rs => third_party/rust/proc-macro2-0.3.6/src/strnom.rs rename : third_party/rust/proc-macro2/src/unstable.rs => third_party/rust/proc-macro2-0.3.6/src/unstable.rs rename : third_party/rust/proc-macro2/tests/test.rs => third_party/rust/proc-macro2-0.3.6/tests/test.rs rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.5.2/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.5.2/Cargo.toml rename : third_party/rust/quote/README.md => third_party/rust/quote-0.5.2/README.md rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.5.2/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.5.2/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.5.2/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.5.2/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.13.1/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.13.1/Cargo.toml rename : third_party/rust/syn/README.md => third_party/rust/syn-0.13.1/README.md rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.13.1/src/attr.rs rename : third_party/rust/syn/src/buffer.rs => third_party/rust/syn-0.13.1/src/buffer.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.13.1/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.13.1/src/derive.rs rename : third_party/rust/syn/src/error.rs => third_party/rust/syn-0.13.1/src/error.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.13.1/src/expr.rs rename : third_party/rust/syn/src/file.rs => third_party/rust/syn-0.13.1/src/file.rs rename : third_party/rust/syn/src/gen/fold.rs => third_party/rust/syn-0.13.1/src/gen/fold.rs rename : third_party/rust/syn/src/gen/visit.rs => third_party/rust/syn-0.13.1/src/gen/visit.rs rename : third_party/rust/syn/src/gen/visit_mut.rs => third_party/rust/syn-0.13.1/src/gen/visit_mut.rs rename : third_party/rust/syn/src/gen_helper.rs => third_party/rust/syn-0.13.1/src/gen_helper.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.13.1/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.13.1/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.13.1/src/item.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.13.1/src/lib.rs rename : third_party/rust/syn/src/lifetime.rs => third_party/rust/syn-0.13.1/src/lifetime.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.13.1/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.13.1/src/mac.rs rename : third_party/rust/syn/src/macros.rs => third_party/rust/syn-0.13.1/src/macros.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.13.1/src/op.rs rename : third_party/rust/syn/src/parse_quote.rs => third_party/rust/syn-0.13.1/src/parse_quote.rs rename : third_party/rust/syn/src/parsers.rs => third_party/rust/syn-0.13.1/src/parsers.rs rename : third_party/rust/syn/src/path.rs => third_party/rust/syn-0.13.1/src/path.rs rename : third_party/rust/syn/src/punctuated.rs => third_party/rust/syn-0.13.1/src/punctuated.rs rename : third_party/rust/syn/src/spanned.rs => third_party/rust/syn-0.13.1/src/spanned.rs rename : third_party/rust/syn/src/synom.rs => third_party/rust/syn-0.13.1/src/synom.rs rename : third_party/rust/syn/src/token.rs => third_party/rust/syn-0.13.1/src/token.rs rename : third_party/rust/syn/src/tt.rs => third_party/rust/syn-0.13.1/src/tt.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.13.1/src/ty.rs extra : rebase_source : bda7c9d57b337b22b0cf8c095c4d3a79f4cd2682
2018-06-21 15:22:02 +03:00
that gets packaged into a [`TokenStream`] and can be treated as data. You should
think of `TokenStream` as representing a fragment of Rust source code.
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
[`TokenStream`]: https://docs.rs/proc-macro2/0.4/proc_macro2/struct.TokenStream.html
Within the `quote!` macro, interpolation is done with `#var`. Any type
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
implementing the [`quote::ToTokens`] trait can be interpolated. This includes
most Rust primitive types as well as most of the syntax tree types from [`syn`].
[`quote::ToTokens`]: https://docs.rs/quote/0.6/quote/trait.ToTokens.html
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
[`syn`]: https://github.com/dtolnay/syn
```rust
let tokens = quote! {
struct SerializeWith #generics #where_clause {
value: &'a #field_ty,
phantom: core::marker::PhantomData<#item_ty>,
}
impl #generics serde::Serialize for SerializeWith #generics #where_clause {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
Bug 1468950 - Update Cargo lockfiles and re-vendor rust dependencies. r=Gankro MozReview-Commit-ID: 3kcDWGBPXt9 --HG-- rename : third_party/rust/proc-macro2/.cargo-checksum.json => third_party/rust/proc-macro2-0.3.6/.cargo-checksum.json rename : third_party/rust/proc-macro2/.travis.yml => third_party/rust/proc-macro2-0.3.6/.travis.yml rename : third_party/rust/proc-macro2/Cargo.toml => third_party/rust/proc-macro2-0.3.6/Cargo.toml rename : third_party/rust/proc-macro2/README.md => third_party/rust/proc-macro2-0.3.6/README.md rename : third_party/rust/proc-macro2/src/lib.rs => third_party/rust/proc-macro2-0.3.6/src/lib.rs rename : third_party/rust/proc-macro2/src/stable.rs => third_party/rust/proc-macro2-0.3.6/src/stable.rs rename : third_party/rust/proc-macro2/src/strnom.rs => third_party/rust/proc-macro2-0.3.6/src/strnom.rs rename : third_party/rust/proc-macro2/src/unstable.rs => third_party/rust/proc-macro2-0.3.6/src/unstable.rs rename : third_party/rust/proc-macro2/tests/test.rs => third_party/rust/proc-macro2-0.3.6/tests/test.rs rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.5.2/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.5.2/Cargo.toml rename : third_party/rust/quote/README.md => third_party/rust/quote-0.5.2/README.md rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.5.2/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.5.2/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.5.2/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.5.2/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.13.1/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.13.1/Cargo.toml rename : third_party/rust/syn/README.md => third_party/rust/syn-0.13.1/README.md rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.13.1/src/attr.rs rename : third_party/rust/syn/src/buffer.rs => third_party/rust/syn-0.13.1/src/buffer.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.13.1/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.13.1/src/derive.rs rename : third_party/rust/syn/src/error.rs => third_party/rust/syn-0.13.1/src/error.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.13.1/src/expr.rs rename : third_party/rust/syn/src/file.rs => third_party/rust/syn-0.13.1/src/file.rs rename : third_party/rust/syn/src/gen/fold.rs => third_party/rust/syn-0.13.1/src/gen/fold.rs rename : third_party/rust/syn/src/gen/visit.rs => third_party/rust/syn-0.13.1/src/gen/visit.rs rename : third_party/rust/syn/src/gen/visit_mut.rs => third_party/rust/syn-0.13.1/src/gen/visit_mut.rs rename : third_party/rust/syn/src/gen_helper.rs => third_party/rust/syn-0.13.1/src/gen_helper.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.13.1/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.13.1/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.13.1/src/item.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.13.1/src/lib.rs rename : third_party/rust/syn/src/lifetime.rs => third_party/rust/syn-0.13.1/src/lifetime.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.13.1/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.13.1/src/mac.rs rename : third_party/rust/syn/src/macros.rs => third_party/rust/syn-0.13.1/src/macros.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.13.1/src/op.rs rename : third_party/rust/syn/src/parse_quote.rs => third_party/rust/syn-0.13.1/src/parse_quote.rs rename : third_party/rust/syn/src/parsers.rs => third_party/rust/syn-0.13.1/src/parsers.rs rename : third_party/rust/syn/src/path.rs => third_party/rust/syn-0.13.1/src/path.rs rename : third_party/rust/syn/src/punctuated.rs => third_party/rust/syn-0.13.1/src/punctuated.rs rename : third_party/rust/syn/src/spanned.rs => third_party/rust/syn-0.13.1/src/spanned.rs rename : third_party/rust/syn/src/synom.rs => third_party/rust/syn-0.13.1/src/synom.rs rename : third_party/rust/syn/src/token.rs => third_party/rust/syn-0.13.1/src/token.rs rename : third_party/rust/syn/src/tt.rs => third_party/rust/syn-0.13.1/src/tt.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.13.1/src/ty.rs extra : rebase_source : bda7c9d57b337b22b0cf8c095c4d3a79f4cd2682
2018-06-21 15:22:02 +03:00
where
S: serde::Serializer,
{
#path(self.value, serializer)
}
}
SerializeWith {
value: #value,
phantom: core::marker::PhantomData::<#item_ty>,
}
};
```
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
## Repetition
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
Repetition is done using `#(...)*` or `#(...),*` similar to `macro_rules!`. This
iterates through the elements of any variable interpolated within the repetition
and inserts a copy of the repetition body for each one. The variables in an
interpolation may be anything that implements `IntoIterator`, including `Vec` or
a pre-existing iterator.
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
- `#(#var)*` — no separators
- `#(#var),*` — the character before the asterisk is used as a separator
- `#( struct #var; )*` — the repetition can contain other things
- `#( #k => println!("{}", #v), )*` — even multiple interpolations
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
Note that there is a difference between `#(#var ,)*` and `#(#var),*`—the latter
does not produce a trailing comma. This matches the behavior of delimiters in
`macro_rules!`.
## Returning tokens to the compiler
The `quote!` macro evaluates to an expression of type
`proc_macro2::TokenStream`. Meanwhile Rust procedural macros are expected to
return the type `proc_macro::TokenStream`.
The difference between the two types is that `proc_macro` types are entirely
specific to procedural macros and cannot ever exist in code outside of a
procedural macro, while `proc_macro2` types may exist anywhere including tests
and non-macro code like main.rs and build.rs. This is why even the procedural
macro ecosystem is largely built around `proc_macro2`, because that ensures the
libraries are unit testable and accessible in non-macro contexts.
There is a [`From`]-conversion in both directions so returning the output of
`quote!` from a procedural macro usually looks like `tokens.into()` or
`proc_macro::TokenStream::from(tokens)`.
[`From`]: https://doc.rust-lang.org/std/convert/trait.From.html
## Examples
### Combining quoted fragments
Usually you don't end up constructing an entire final `TokenStream` in one
piece. Different parts may come from different helper functions. The tokens
produced by `quote!` themselves implement `ToTokens` and so can be interpolated
into later `quote!` invocations to build up a final result.
```rust
let type_definition = quote! {...};
let methods = quote! {...};
let tokens = quote! {
#type_definition
#methods
};
```
### Constructing identifiers
Suppose we have an identifier `ident` which came from somewhere in a macro
input and we need to modify it in some way for the macro output. Let's consider
prepending the identifier with an underscore.
Simply interpolating the identifier next to an underscore will not have the
behavior of concatenating them. The underscore and the identifier will continue
to be two separate tokens as if you had written `_ x`.
```rust
// incorrect
quote! {
let mut _#ident = 0;
}
```
The solution is to perform token-level manipulations using the APIs provided by
Syn and proc-macro2.
```rust
let concatenated = format!("_{}", ident);
let varname = syn::Ident::new(&concatenated, ident.span());
quote! {
let mut #varname = 0;
}
```
### Making method calls
Let's say our macro requires some type specified in the macro input to have a
constructor called `new`. We have the type in a variable called `field_type` of
type `syn::Type` and want to invoke the constructor.
```rust
// incorrect
quote! {
let value = #field_type::new();
}
```
This works only sometimes. If `field_type` is `String`, the expanded code
contains `String::new()` which is fine. But if `field_type` is something like
`Vec<i32>` then the expanded code is `Vec<i32>::new()` which is invalid syntax.
Ordinarily in handwritten Rust we would write `Vec::<i32>::new()` but for macros
often the following is more convenient.
```rust
quote! {
let value = <#field_type>::new();
}
```
This expands to `<Vec<i32>>::new()` which behaves correctly.
A similar pattern is appropriate for trait methods.
```rust
quote! {
let value = <#field_type as core::default::Default>::default();
}
```
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
## Hygiene
Any interpolated tokens preserve the `Span` information provided by their
`ToTokens` implementation. Tokens that originate within a `quote!` invocation
Bug 1468950 - Update Cargo lockfiles and re-vendor rust dependencies. r=Gankro MozReview-Commit-ID: 3kcDWGBPXt9 --HG-- rename : third_party/rust/proc-macro2/.cargo-checksum.json => third_party/rust/proc-macro2-0.3.6/.cargo-checksum.json rename : third_party/rust/proc-macro2/.travis.yml => third_party/rust/proc-macro2-0.3.6/.travis.yml rename : third_party/rust/proc-macro2/Cargo.toml => third_party/rust/proc-macro2-0.3.6/Cargo.toml rename : third_party/rust/proc-macro2/README.md => third_party/rust/proc-macro2-0.3.6/README.md rename : third_party/rust/proc-macro2/src/lib.rs => third_party/rust/proc-macro2-0.3.6/src/lib.rs rename : third_party/rust/proc-macro2/src/stable.rs => third_party/rust/proc-macro2-0.3.6/src/stable.rs rename : third_party/rust/proc-macro2/src/strnom.rs => third_party/rust/proc-macro2-0.3.6/src/strnom.rs rename : third_party/rust/proc-macro2/src/unstable.rs => third_party/rust/proc-macro2-0.3.6/src/unstable.rs rename : third_party/rust/proc-macro2/tests/test.rs => third_party/rust/proc-macro2-0.3.6/tests/test.rs rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.5.2/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.5.2/Cargo.toml rename : third_party/rust/quote/README.md => third_party/rust/quote-0.5.2/README.md rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.5.2/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.5.2/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.5.2/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.5.2/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.13.1/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.13.1/Cargo.toml rename : third_party/rust/syn/README.md => third_party/rust/syn-0.13.1/README.md rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.13.1/src/attr.rs rename : third_party/rust/syn/src/buffer.rs => third_party/rust/syn-0.13.1/src/buffer.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.13.1/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.13.1/src/derive.rs rename : third_party/rust/syn/src/error.rs => third_party/rust/syn-0.13.1/src/error.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.13.1/src/expr.rs rename : third_party/rust/syn/src/file.rs => third_party/rust/syn-0.13.1/src/file.rs rename : third_party/rust/syn/src/gen/fold.rs => third_party/rust/syn-0.13.1/src/gen/fold.rs rename : third_party/rust/syn/src/gen/visit.rs => third_party/rust/syn-0.13.1/src/gen/visit.rs rename : third_party/rust/syn/src/gen/visit_mut.rs => third_party/rust/syn-0.13.1/src/gen/visit_mut.rs rename : third_party/rust/syn/src/gen_helper.rs => third_party/rust/syn-0.13.1/src/gen_helper.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.13.1/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.13.1/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.13.1/src/item.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.13.1/src/lib.rs rename : third_party/rust/syn/src/lifetime.rs => third_party/rust/syn-0.13.1/src/lifetime.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.13.1/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.13.1/src/mac.rs rename : third_party/rust/syn/src/macros.rs => third_party/rust/syn-0.13.1/src/macros.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.13.1/src/op.rs rename : third_party/rust/syn/src/parse_quote.rs => third_party/rust/syn-0.13.1/src/parse_quote.rs rename : third_party/rust/syn/src/parsers.rs => third_party/rust/syn-0.13.1/src/parsers.rs rename : third_party/rust/syn/src/path.rs => third_party/rust/syn-0.13.1/src/path.rs rename : third_party/rust/syn/src/punctuated.rs => third_party/rust/syn-0.13.1/src/punctuated.rs rename : third_party/rust/syn/src/spanned.rs => third_party/rust/syn-0.13.1/src/spanned.rs rename : third_party/rust/syn/src/synom.rs => third_party/rust/syn-0.13.1/src/synom.rs rename : third_party/rust/syn/src/token.rs => third_party/rust/syn-0.13.1/src/token.rs rename : third_party/rust/syn/src/tt.rs => third_party/rust/syn-0.13.1/src/tt.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.13.1/src/ty.rs extra : rebase_source : bda7c9d57b337b22b0cf8c095c4d3a79f4cd2682
2018-06-21 15:22:02 +03:00
are spanned with [`Span::call_site()`].
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
[`Span::call_site()`]: https://docs.rs/proc-macro2/0.4/proc_macro2/struct.Span.html#method.call_site
No bug - Revendor rust dependencies. r=me on a CLOSED TREE MozReview-Commit-ID: 7LSWUCyCxkT --HG-- rename : third_party/rust/quote/.cargo-checksum.json => third_party/rust/quote-0.3.15/.cargo-checksum.json rename : third_party/rust/quote/Cargo.toml => third_party/rust/quote-0.3.15/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/quote-0.3.15/LICENSE-MIT rename : third_party/rust/quote/README.md => third_party/rust/quote-0.3.15/README.md rename : third_party/rust/quote/src/ident.rs => third_party/rust/quote-0.3.15/src/ident.rs rename : third_party/rust/quote/src/lib.rs => third_party/rust/quote-0.3.15/src/lib.rs rename : third_party/rust/quote/src/to_tokens.rs => third_party/rust/quote-0.3.15/src/to_tokens.rs rename : third_party/rust/quote/src/tokens.rs => third_party/rust/quote-0.3.15/src/tokens.rs rename : third_party/rust/quote/tests/test.rs => third_party/rust/quote-0.3.15/tests/test.rs rename : third_party/rust/syn/.cargo-checksum.json => third_party/rust/syn-0.11.11/.cargo-checksum.json rename : third_party/rust/syn/Cargo.toml => third_party/rust/syn-0.11.11/Cargo.toml rename : third_party/rust/syn/LICENSE-MIT => third_party/rust/syn-0.11.11/LICENSE-MIT rename : third_party/rust/syn/README.md => third_party/rust/syn-0.11.11/README.md rename : third_party/rust/syn/src/aster/generics.rs => third_party/rust/syn-0.11.11/src/aster/generics.rs rename : third_party/rust/syn/src/aster/ident.rs => third_party/rust/syn-0.11.11/src/aster/ident.rs rename : third_party/rust/syn/src/aster/invoke.rs => third_party/rust/syn-0.11.11/src/aster/invoke.rs rename : third_party/rust/syn/src/aster/lifetime.rs => third_party/rust/syn-0.11.11/src/aster/lifetime.rs rename : third_party/rust/syn/src/aster/mod.rs => third_party/rust/syn-0.11.11/src/aster/mod.rs rename : third_party/rust/syn/src/aster/path.rs => third_party/rust/syn-0.11.11/src/aster/path.rs rename : third_party/rust/syn/src/aster/qpath.rs => third_party/rust/syn-0.11.11/src/aster/qpath.rs rename : third_party/rust/syn/src/aster/ty.rs => third_party/rust/syn-0.11.11/src/aster/ty.rs rename : third_party/rust/syn/src/aster/ty_param.rs => third_party/rust/syn-0.11.11/src/aster/ty_param.rs rename : third_party/rust/syn/src/aster/where_predicate.rs => third_party/rust/syn-0.11.11/src/aster/where_predicate.rs rename : third_party/rust/syn/src/attr.rs => third_party/rust/syn-0.11.11/src/attr.rs rename : third_party/rust/syn/src/constant.rs => third_party/rust/syn-0.11.11/src/constant.rs rename : third_party/rust/syn/src/data.rs => third_party/rust/syn-0.11.11/src/data.rs rename : third_party/rust/syn/src/derive.rs => third_party/rust/syn-0.11.11/src/derive.rs rename : third_party/rust/syn/src/escape.rs => third_party/rust/syn-0.11.11/src/escape.rs rename : third_party/rust/syn/src/expr.rs => third_party/rust/syn-0.11.11/src/expr.rs rename : third_party/rust/syn/src/fold.rs => third_party/rust/syn-0.11.11/src/fold.rs rename : third_party/rust/syn/src/generics.rs => third_party/rust/syn-0.11.11/src/generics.rs rename : third_party/rust/syn/src/ident.rs => third_party/rust/syn-0.11.11/src/ident.rs rename : third_party/rust/syn/src/item.rs => third_party/rust/syn-0.11.11/src/item.rs rename : third_party/rust/syn/src/krate.rs => third_party/rust/syn-0.11.11/src/krate.rs rename : third_party/rust/syn/src/lib.rs => third_party/rust/syn-0.11.11/src/lib.rs rename : third_party/rust/syn/src/lit.rs => third_party/rust/syn-0.11.11/src/lit.rs rename : third_party/rust/syn/src/mac.rs => third_party/rust/syn-0.11.11/src/mac.rs rename : third_party/rust/syn/src/op.rs => third_party/rust/syn-0.11.11/src/op.rs rename : third_party/rust/syn/src/ty.rs => third_party/rust/syn-0.11.11/src/ty.rs rename : third_party/rust/syn/src/visit.rs => third_party/rust/syn-0.11.11/src/visit.rs rename : third_party/rust/unicode-xid/.cargo-checksum.json => third_party/rust/unicode-xid-0.0.4/.cargo-checksum.json rename : third_party/rust/unicode-xid/Cargo.toml => third_party/rust/unicode-xid-0.0.4/Cargo.toml
2018-02-14 14:39:47 +03:00
A different span can be provided explicitly through the [`quote_spanned!`]
macro.
[`quote_spanned!`]: https://docs.rs/quote/0.6/quote/macro.quote_spanned.html
### Limitations
- A non-repeating variable may not be interpolated inside of a repeating block
([#7]).
- The same variable may not be interpolated more than once inside of a repeating
block ([#8]).
[#7]: https://github.com/dtolnay/quote/issues/7
[#8]: https://github.com/dtolnay/quote/issues/8
### Recursion limit
The `quote!` macro relies on deep recursion so some large invocations may fail
with "recursion limit reached" when you compile. If it fails, bump up the
recursion limit by adding `#![recursion_limit = "128"]` to your crate. An even
higher limit may be necessary for especially large invocations. You don't need
this unless the compiler tells you that you need it.
## License
Licensed under either of
* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in this crate by you, as defined in the Apache-2.0 license, shall
be dual licensed as above, without any additional terms or conditions.