1 个不稳定版本
0.1.0 | 2023年11月21日 |
---|
#4 in #好处
4KB
预编译
预编译
是一个仅在 nightly 版本中使用的 crate,它使用 #![feature]
对泛型函数的特定单态化进行预编译。这可以为预期与多个下游 crate 的有限类型集一起使用的泛型函数提供好处。
例如
// crate: A
pub fn generic_fn<T>() {
// ...
}
// crate B
A::generic_fn::<u32>();
// crate C
A::generic_fn::<u32>();
此代码通常将 A::generic_fn::<u32>
编译两次。
而如果我们预编译 generic_fn
// crate: A
#[precompile::precompile]
#[precompile_with(u32)]
pub fn generic_fn<T>() {
// ...
}
那么无论有多少个 crate 使用 A::generic_fn::<u32>
,它都只会编译一次,当 crate A
构建时。
这意味着构建 A
可能需要更长的编译时间,以换取下游使用时的较低单态化成本。
依赖项
~295–750KB
~18K SLoC