我试图了解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/中的输出是:
错误:无法推断出足够的类型信息来定位impl 类型
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]之前的出现在这里#[derinding(Show)]
这是为什么?怎么解决?
答案 0 :(得分:1)
3.
不够具体,无法为其自己命名类型 - 它可能是f32
的{{1}}。你可以更明确地(至少)这两种方式:
f64