相关疑难解决方法(0)

为什么Rust不能推断出Iterator :: sum的结果类型?

此代码有效:

fn main() {
    let a: i32 = (1i32..10).sum();
    let b = a.pow(2);
}
Run Code Online (Sandbox Code Playgroud)

如果我i32从中删除类型a,那么我收到此错误:

rustc 1.13.0 (2c6933acc 2016-11-07)
error: the type of this value must be known in this context
 --> <anon>:3:13
  |
5 |     let b = a.pow(2);
  |             ^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

运行示例

我原以为Rust会(1i32..10)变成i32迭代器然后sum()知道返回一个i32.我错过了什么?

types type-inference rust

16
推荐指数
2
解决办法
1337
查看次数

实现泛型类型的均值函数

我正在尝试编写一个函数来返回a的平均值Vector.我希望它与泛型类型一起工作,但我在实现它时遇到了一些困难.

extern crate num; // 0.2.0

use num::Zero;
use std::ops::{Add, Div};

pub struct Vector<T> {
    pub size: usize,
    pub data: Vec<T>,
}

impl<T: Copy + Zero + Add<T, Output = T>> Vector<T> {
    pub fn sum(&self) -> T {
        self.data.iter().fold(T::zero(), |sum, &val| sum + val)
    }
}

impl<T: Copy + Zero + Add<T, Output = T> + Div<T, Output = T>> Vector<T> {
    pub fn mean(&self) -> T {
        let sum = self.sum();
        sum / self.data.len()
    }
} …
Run Code Online (Sandbox Code Playgroud)

generics rust

4
推荐指数
1
解决办法
285
查看次数

标签 统计

rust ×2

generics ×1

type-inference ×1

types ×1