6个版本
0.1.5 | 2021年12月24日 |
---|---|
0.1.4 | 2021年12月21日 |
#1510 在 进程宏 中
17KB
330 行
js-macros
使用JavaScript或TypeScript快速原型化Rust进程宏!
你是否想过“这将是进程宏的一个很好的用例”,但又不想花费所有精力?这个crate是你完美的解决方案!
[dependencies]
js-macros = "0.1"
如何使用
设置只需三个简单步骤!
- 在您的Cargo工作空间的根目录下创建一个
js-macros
文件夹 - 在文件夹中创建一个新的
.js
或.ts
宏文件 - 导入您的新宏并在项目的任何地方使用它!
实用技巧:这些宏是通过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.scripts
和org.rust.macros.proc
- 调用帮助 | 查找操作(在Linux/Windows上为
- 修改js宏后,您需要运行“刷新Cargo项目”命令。
- 在此之后,您的旧宏输出似乎仍然被缓存,因此您还需要更改宏的主体
- 首先,您需要启用实验性构建脚本和过程宏功能
依赖关系
~65–460KB