#typescript #proc-macro #macro #javascript

js-macros

使用JavaScript或TypeScript快速原型化进程宏!

6个版本

0.1.5 2021年12月24日
0.1.4 2021年12月21日

#1510进程宏

MIT/Apache

17KB
330

js-macros

Crates.io MIT/Apache 2.0 CI Crates.io

使用JavaScript或TypeScript快速原型化Rust进程宏!

你是否想过“这将是进程宏的一个很好的用例”,但又不想花费所有精力?这个crate是你完美的解决方案!

[dependencies]
js-macros = "0.1"

如何使用

设置只需三个简单步骤!

  1. 在您的Cargo工作空间的根目录下创建一个js-macros文件夹
  2. 在文件夹中创建一个新的.js.ts宏文件
  3. 导入您的新宏并在项目的任何地方使用它!

实用技巧:这些宏是通过node调用的,允许您使用像require()这样的工具

示例

示例宏可以在本仓库的js-macros

编写自定义derive(Copy)宏只需这样做

//! JS_MACRO: derive(Copy)

const type = /(?:struct|enum) (.*?)\s/.exec(MACRO_INPUT)[1];

MACRO_OUTPUT = `impl Copy for ${type} {}`;

使用方法就像这样#[derive(js_macros::Copy, Clone)]

宏调试

您的js代码抛出的任何错误将在构建时捕获并转换为进程宏错误。您可以通过抛出错误来利用这一点来调试您的js宏。

构建时间影响

每个宏展开大约需要10ms到40ms,这可以迅速累积。

TypeScript编译是缓存的,并且只会影响初始构建。

IDE支持

  • rust-analyzer - 与js-macros配合得很好,您只需要在更改js宏后运行Rust Analyzer: Restart Server命令
  • IntelliJ-Rust - 更为挑剔,但仍然可以识别js宏生成的项
    • 首先,您需要启用实验性构建脚本和过程宏功能
      • 调用帮助 | 查找操作(在Linux/Windows上为Ctrl+Shift+A,在macOS上为⌘⇧A
      • 搜索“实验性功能”
      • 启用org.rust.cargo.evaluate.build.scriptsorg.rust.macros.proc
    • 修改js宏后,您需要运行“刷新Cargo项目”命令。
      • 在此之后,您的旧宏输出似乎仍然被缓存,因此您还需要更改宏的主体

依赖关系

~65–460KB