3个版本

0.1.2 2023年3月20日
0.1.1 2023年3月20日
0.1.0 2023年3月20日

#464编程语言

Download history 5466/week @ 2024-03-14 4861/week @ 2024-03-21 2970/week @ 2024-03-28 3933/week @ 2024-04-04 2863/week @ 2024-04-11 2835/week @ 2024-04-18 3509/week @ 2024-04-25 4295/week @ 2024-05-02 5152/week @ 2024-05-09 3816/week @ 2024-05-16 4095/week @ 2024-05-23 4468/week @ 2024-05-30 4797/week @ 2024-06-06 4120/week @ 2024-06-13 5964/week @ 2024-06-20 4639/week @ 2024-06-27

20,330 每月下载量
用于 33 个crates (9 直接)

MIT 许可证

6KB
84

Documentation Crate

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库,用于在编译器无法证明两种类型相等的情况下将给定类型的值强制转换为相同类型。
这可以在一定程度上模拟专业化。

无运行时依赖