小编Cás*_*sio的帖子

非标量转换:进行泛型乘法时,`T` 转换为 `f64`

我想实现泛型类型结构的特征。特征块内的方法必须返回非泛型类型。我在尝试投射时遇到问题:

struct Rectangle<T> {
    x: T,
    y: T,
    width: T,
    height: T,
}

trait Area {
    fn area(&self) -> f64;
}

impl<T> Area for Rectangle<T>
    where T: std::ops::Mul<Output=T> 
{
    fn area(&self) -> f64 {
        let t_area = self.height * self.width;
        let f_area = t_area as f64;
        f_area
    }
}

fn main() {
    let sq = Rectangle { x: 0, y: 0, height: 1, width: 1 };
    println!("{}", sq.area());
}
Run Code Online (Sandbox Code Playgroud)

编译器输出是:

struct Rectangle<T> {
    x: T,
    y: T,
    width: T,
    height: …
Run Code Online (Sandbox Code Playgroud)

casting traits rust

3
推荐指数
1
解决办法
1939
查看次数

标签 统计

casting ×1

rust ×1

traits ×1