#预编译 #单态化 #泛型 #好处 #多个 #有限 #集合

nightly 预编译

单态化预编译库

1 个不稳定版本

0.1.0 2023年11月21日

#4 in #好处

MIT 许可证

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