gpt4 book ai didi

rust - 如何在 Rust 的内置函数上实现特征?

转载 作者:行者123 更新时间:2023-12-02 17:59:40 25 4
gpt4 key购买 nike

在 Rust 中:

let int: i32 = 3;
let float: f32 = 3.3;
let res = int*float; // Invalid
let res = (int as f32)*float; // Valid

为了使这更容易,我希望在 * 上实现覆盖运算符,考虑到 Rust 的错误消息,这似乎是可能的:

cannot multiply `{integer}` by `{float}`
the trait `Mul<{float}>` is not implemented for `{integer}`
the following other types implement trait `Mul<Rhs>`:

但是写impl Mul<i32> for f32显然也不可能:

only traits defined in the current crate can be implemented for primitive types
define and implement a trait or new type instead

那么这应该如何完成呢?是否有一个箱子已经实现了这些?

最佳答案

您无法为原语实现 Mul。这是 rusts 外来类型规则的一部分:对于您的 crate 中的实现,您的 crate 中必须至少定义了一种实现的类型或特征。由于您的代码中没有定义 Mul 和原语,因此您无法为它们创建实现。

如果您确实想这样做,则需要围绕 f32 创建一个包装类型,并在其上实现 Mul 和所有其他相关运算符。

关于rust - 如何在 Rust 的内置函数上实现特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74734843/

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