Thanks to visit codestin.com
Credit goes to lib.rs

#ast-grep #patch #cargo-patch

bin+lib cargo-stitch

A Cargo subcommand that applies source-level patches and ast-grep rules to workspace crates before compilation

3 unstable releases

Uses new Rust 2024

new 0.2.1 Feb 25, 2026
0.2.0 Feb 24, 2026
0.1.0 Feb 23, 2026

#237 in Cargo plugins

MIT/Apache

20KB
356 lines

cargo-stitch

A Cargo subcommand that applies source-level patches and ast-grep rules to workspace crates before compilation.

It intercepts rustc invocations via RUSTC_WORKSPACE_WRAPPER, copies crate sources to target/cargo-stitch/<pkg>/, applies patches and ast-grep rules from stitches/<pkg>/, then compiles the patched sources.

Install

cargo install --path .

Requires patch (usually preinstalled) and ast-grep (sg) if using ast-grep rules.

Usage

cargo stitch build
cargo stitch test
cargo stitch check
# any cargo subcommand works

Stitch files

Place stitch files in stitches/<crate-name>/ at the workspace root:

  • .patch -- unified diff format, applied with patch -p1
  • .yaml / .yml -- ast-grep rule files, applied with sg scan -r <rule> --update-all

All stitch files are applied in filename order regardless of type. Use numeric prefixes for ordering:

stitches/
  some-crate/
    001-fix-thing.patch
    002-rename-fn.yaml

If no stitches/<crate-name>/ directory exists for a crate, it compiles normally.

Acknowledgements

Inspired by cargo-fixup.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

Dependencies

~0.9–1.8MB
~36K SLoC