语法问题。
已有代码
use std::fmt::Display;
use std::ops::Add;
// #[derive(Debug)]
struct Point<T: Add<Output = T>> {
x: T,
y: T,
}
impl<T: Add<Output = T>> Add for Point<T> {
type Output = Point<T>;
fn add(self, other_point: Point<T>) -> Point<T> {
Point {
x: self.x + other_point.x,
y: self.y + other_point.y,
}
}
}
impl<T> Display for Point<T>{
}
fn main() {
let a = Point { x: 1.0, y: 1.0 };
let b = Point { x: 3.0, y: 4.0 };
let c = a + b;
println!("{:?}", c);
}
想请问下,impl Display for Point<T> 正确写法是啥样的?
use std::fmt::{Display, Formatter, Result};
use std::ops::Add;
struct Point<T: Add<Output = T> + Display> {
x: T,
y: T,
}
impl<T: Add<Output = T> + Display> Add for Point<T> {
type Output = Point<T>;
fn add(self, other_point: Point<T>) -> Point<T> {
Point {
x: self.x + other_point.x,
y: self.y + other_point.y,
}
}
}
impl<T: Display> Display for Point<T> {
fn fmt(&self, f: &mut Formatter) -> Result {
write!(f, "({}, {})", self.x, self.y)
}
}
fn main() {
let a = Point { x: 1.0, y: 1.0 };
let b = Point { x: 3.0, y: 4.0 };
let c = a + b;
println!("{}", c);
}
我想让 data 是全局变量方便调用而不是在函数中传来传去,但 const 和 static 关键字好像都不支持。有什么好办法吗?
我见过一个类似的问题,但是没有人告诉我如何为结构实现Ord。例如,以下内容: 这给了我一个错误: 我该怎么解决这个问题?我尝试将实现更改为: 并添加适当的和函数,但这给了我一个错误,即这两种方法都不是的成员。
我的问题分为两个部分(因为我不能得到第一部分,我移到了第二部分,这仍然让我有疑问) 第1部分:如何将异构类型插入?起初我想通过来完成 例如。, 但是我得到了一个错误 第2部分:然后我去了文档并阅读了《使用允许不同类型值的特征对象》,并将问题简化为只是尝试将异构类型放入中。所以我完全按照教程进行操作,但我仍然会收到相同类型的错误(在文档的情况下,错误现在是。 我知道静态类型是Rust的重要组成部分,
给定一个依赖于泛型类型参数的结构,我们可以定义一个实现依赖于该类型的关联函数吗? 我想将结构传递给例程,但根据内部类型,让关联的函数以不同的方式计算。这个例程还取决于结构中的成员,所以我宁愿不把所有东西都移到一个特质上。 例如,以下代码尝试根据所涉及的类型定义不同的函数: 这会导致编译器错误: 如果我将的定义转移到另一个特征中,我们就会遇到一个类似但不同的问题。 这会导致编译器错误: 严格来说,我
我有一个特点,它是由同一个结构以不同的方式实现的。为了实现这一点,我有不同的结构,它们有不同的实现。对于抽象,我将这些结构称为A-Z: 有没有其他方法来实现这一点,以便结构的每个实例都有一个不同的trait实现,或者创建一个新结构是最好的方法? 我不熟悉编译语言。我所做的大部分工作都是使用Python和TypeScript。