此代码有效:
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.我错过了什么?
我正在尝试编写一个函数来返回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)