3个版本
0.1.2 | 2023年3月20日 |
---|---|
0.1.1 | 2023年3月20日 |
0.1.0 | 2023年3月20日 |
#464 在 编程语言
20,330 每月下载量
用于 33 个crates (9 直接)
6KB
84 行
coe-rs
是一个Rust库,用于在编译器无法证明两种类型相等的情况下将给定类型的值强制转换为相同类型。
这可以在一定程度上模拟专业化。
示例
use coe::{Coerce, is_same};
use core::ops::Add;
fn foo<T: 'static + Copy + Add<Output = T>>(slice: &mut [T]) {
if is_same::<f64, T>() {
// use some optimized SIMD implementation
// ...
println!("using SIMD operations");
let slice: &mut [f64] = slice.coerce();
} else {
for value in slice {
println!("using fallback implementation");
*value = *value + *value;
}
}
}
foo(&mut [1, 2, 3u64]); // calls fallback implementation
foo(&mut [1.0, 2.0, 3.0f64]); // calls SIMD implementation
lib.rs
:
coe-rs
是一个Rust库,用于在编译器无法证明两种类型相等的情况下将给定类型的值强制转换为相同类型。
这可以在一定程度上模拟专业化。