Rust中的通用算术

时间:2015-07-13 23:19:32

标签: generics rust

我正在尝试实现一个通用例程来计算两个向量之间欧几里德距离的平方。这是每晚编译的。

  1. 这是Rustacean的做法吗?
  2. 这个通用代码是否会像T = f32的单态代码一样快?
  3. #![feature(zero_one)]
    #![feature(iter_arith)]
    use std::ops::{Add, Sub, Mul};
    use std::num::Zero;
    
    pub fn distance2<T>(x: &[T], y: &[T]) -> T
        where T: Copy + Add<Output = T> + Mul<Output = T> + Sub<Output = T> + Zero
    {
        x.iter().zip(y.iter())
            .map(|(xi, yi)| { let d = *xi - *yi; d * d })
            .sum()
    }
    

0 个答案:

没有答案