gpt4 book ai didi

rust - 如何从类型别名使用原始类型的方法?

转载 作者:行者123 更新时间:2023-11-29 08:00:06 44 4
gpt4 key购买 nike

这个问题可能有点抽象,但我实际上有一个相当简单的例子:

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

是否有适当的方法让它工作,或者这被认为是一个错误?

最佳答案

目前(大部分)这是预期的行为:type 实际上只是类型的别名,不允许调用静态方法。问题 #6894#11047覆盖这个。

关于rust - 如何从类型别名使用原始类型的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23833616/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com