generics - 想要一个具有泛型类型的方形结构,然后通过 impl 找到区域?
问题描述
struct Sqr<T> {
len: T,
// wid: T,
}
impl<T> Sqr<T> {
fn mult(self, other: Sqr<T>) -> T {
self.len * other.len // error here.
// error is : cannot multiply `T` to `T`
}
}
self.len 属于 T 类型,如何添加或相乘 2 个 T 类型的变量?
解决方案
在您的代码中,您将两个泛型类型 T 的变量相乘,但它们可能不会实现乘法的 Mul 特征。因此,您需要明确要求他们实现 Mul 特征,如下所示:
impl<T> Sqr<T> where
T: std::ops::Mul<T, Output = T> {
fn mult(self, other: Sqr<T>) -> T {
self.len * other.len
}
}
有关此主题的更多信息,您可以参考 Rust By Example 的“泛型”一章——尤其是Bounds。
推荐阅读
- c# - 在 .NET Core 3.1 API 中验证 http 请求的好方法是什么?
- oracle - 带有 oracle 后端的气流
- react-native - 在 React Native 中从模态执行突变
- go - 如何使用 sqlx 执行原始查询?
- javascript - 监听 mapbox addLayer 和 removeLayer
- oracle - PLSQL 游标循环
- java - 响应的字符集不正确
- dataframe - 使用静态日期值过滤 DataFrame
- java - 我正在尝试用 Java 制作一个 GUI,当我使用 actionPerformed 方法制作一个 JButton 时,我收到大量错误输出到控制台
- vue.js - 带参数的阿波罗客户端查询 - Vue