2个版本

0.2.2 2021年11月11日
0.2.1 2019年10月28日

#4 in #单态化


beancount-account 中使用

Apache-2.0

175KB

momo

在MOnoMOrphization过程中保持编译时间 badge

这是一个 proc_macro 包,用于帮助检查泛型方法的代码足迹。通常,泛型在库中用于提高易用性。然而,这会增加编译时间和二进制文件大小。理想情况下,创建一个小型的外壳函数来进行泛型转换,然后调用内部函数,但这会使代码可读性降低。

向您的函数添加此包的 #[momo] 注解,将您的函数拆分为外部转换和私有内部函数。作为回报,您将获得一点运行时编译时间(如果有的话)——而不会影响可读性。

当前支持的转换是 Into (.into())、AsRef (.as_ref()) 和 AsMut (.as_mut())。请参阅代码中的 enum Conversions

关于watt的说明

这个新更新的版本使用了D. Tolnay的watt运行时来加速编译时间,这受到了过程宏负载的负面影响。

主包使用包含标记版本的预构建wasm。可以使用以下命令重建wasm:

cd wasm
cargo build --release --target wasm32-unknown-unknown
# If wasm-opt is unavailable, copying the file is fine.
wasm-opt target/wasm32-unknown-unknown/release/momo_watt.wasm -Oz \
--strip-debug --simplify-globals --vacuum -o ../src/momo.wasm

您可能需要将 wasm32-unknown-unknown 目标添加到您的Rust工具链中。

(如果您正在标记新版本,请记住提交新的 wasm 文件。同时更改两个 Cargo.toml 文件中的版本。)

宏的调试

可以使用 cargo-expand 工具来展开宏展开的输出,包括此 proc-macro 的输出。要检查示例文件的结果,请使用 cargo expand --example check

依赖关系