问题可能有点抽象,但实际上我有一个相当简单的例子:
extern crate num;
use num::rational::Rational;
fn doit() -> Rational { Rational::new_raw(3, 5) }
我收到错误:
134:42 error: unresolved name `Rational::new_raw`.
fn doit() -> Rational { Rational::new_raw(3, 5) }
^~~~~~~~~~~~~~~~~
因此,错误不在Rational
本身(导入良好,其他地方没有问题),而是尝试使用Rational::new_raw
。现在,从我们获得的文档:
type Rational = Ratio<int>;
和
impl<T: Clone + Integer + Ord> Ratio<T> {
fn new_raw(numer: T, denom: T) -> Ratio<T>;
// ...
}
这让我觉得应该是可能的,但不知何故......失败了。
我有一个解决方法(忘记我手边有别名):
fn doit() -> Rational { Ratio::<int>::new_raw(3, 5) }
但是创建别名的观点通常是为了避免担心它的实际表示,所以它有点烦人。
供参考,因为rust-0.11是移动目标:
$ rustc --version
rustc 0.11.0-pre-nightly (022a7b3 2014-05-22 01:06:25 -0700)
host: x86_64-unknown-linux-gnu
是否有正确的方法让这个工作,或者这被认为是一个错误?