【发布时间】:2015-02-24 10:38:49
【问题描述】:
我试图理解 Rust 中的一些概念,但我遇到了一个非常简单的问题。我正在尝试定义一个然后要打印的结构。如果我指定组件的类型(在示例中将T 替换为f32),一切都很好。但是,如果我想通用地这样做:
#[deriving(Show)]
struct Point<T> {
x: T,
y: T,
z: T,
}
fn main() {
let v = Point{x: 3., y: 4., z: 5.,};
println!("The point is {}" , v);
}
http://play.rust-lang.org/ 中的输出为:
错误:无法推断出足够的类型信息来定位
_类型的特征core::fmt::Show;类型注释 必填
如果我尝试指定类型:
use std::fmt;
#[deriving(Show)]
struct Point<T: std::fmt::Show> {
x: T,
y: T,
z: T,
}
fn main() {
let v = Point{x: 3., y: 4., z: 5.,};
println!("The point is {}" , v);
}
输出是:
错误:特征
std::fmt::Show已经出现在边界列表中 [E0127] 以前的出现在这里#[deriving(Show)]
这是为什么?如何解决?
【问题讨论】: