quote VS cargo-expand

Compare quote vs cargo-expand and see what are their differences.

cargo-expand

Subcommand to show result of macro expansion (by dtolnay)
Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
quote cargo-expand
3 16
1,219 2,435
- -
7.3 9.0
11 days ago 9 days ago
Rust Rust
Apache License 2.0 Apache License 2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

quote

Posts with mentions or reviews of quote. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-01-06.
  • C++ vs. Rust Build Times
    12 projects | news.ycombinator.com | 6 Jan 2023
    A surprising source of slow compile times can be declarative macros in Rust [0].

    I believe the core of the problem is that it has to reparse the code to pattern match for the macro.

    One egregious patter is tt-munchers [1] where your macro is implemented recursively, requiring it to reparse the source on each call [2].

    In one of my projects, someone decided to wrap a lot of core functions in simple macros (ie nt tt-munchers) to simplify the signatures. Unlike most macros which are used occasionally and have small inputs, this was a lot of input. When I refactored the code, I suspect dropping the macros is the reason CI times were cut in half and a clean `cargo check` went from 3s to 0.5s.

    [0]: https://nnethercote.github.io/2022/04/12/how-to-speed-up-the...

    [1]: https://veykril.github.io/tlborm/decl-macros/patterns/tt-mun...

    [2]: https://github.com/dtolnay/quote/blob/31c3be473d0457e29c4f47...

  • Is generating code from JSON a good macro use case?
    3 projects | /r/rust | 1 Feb 2022
    In the build.rs, call your code generation function (probably in a separate crate added in build-dependencies). This function will read your input files, and use something like quote to generate code.
  • Any good resources for learning Rust macros?
    7 projects | /r/rust | 19 Dec 2021
    Or you can pair them with crates like syn, and quote for quasi-quoting, and then it's easy to make transformations on the AST of Rust input code. A lot of libraries do this for code-generation and hiding away a lot of complexity (example wasm-bindgen).

cargo-expand

Posts with mentions or reviews of cargo-expand. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-02-04.

What are some alternatives?

When comparing quote and cargo-expand you can also consider the following projects:

proc-macro-workshop - Learn to write Rust procedural macros  [Rust Latam conference, Montevideo Uruguay, March 2019]

saito-rust - A high-performance (reference) implementation of Saito in Rust

Bytecode - A Rust proc-macro crate which derives functions to compile and parse back enums and structs to and from a bytecode representation

component-keycloak - Commodore Component for Keycloak

lol-html - Low output latency streaming HTML parser/rewriter with CSS selector-based API

darling - A Rust proc-macro attribute parser

rust - Empowering everyone to build reliable and efficient software.

hickory - Command line tool for scheduling Python scripts

cargo-llvm-cov - Cargo subcommand to easily use LLVM source-based code coverage (-C instrument-coverage).

syn - Parser for Rust source code

rustviz - Interactively Visualizing Ownership and Borrowing for Rust