1 个不稳定版本
0.1.0 | 2023年11月21日 |
---|
#6 in #预编译
在 precompile 中使用
9KB
169 代码行
预编译
预编译
是一个仅限nightly的crate,它使用 #![feature(specialization)]
对泛型函数的特定单态化进行预编译。这可以为预期使用有限类型集的多下游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
可能会产生更大的预编译时间成本,但用于下游使用时的单态化成本会更低。
依赖项
~275–720KB
~17K SLoC