gpt4 book ai didi

rust - 在通用结构中派生 Show

转载 作者:行者123 更新时间:2023-11-29 08:30:25 25 4
gpt4 key购买 nike

我试图理解 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/ 中的输出是:

error: unable to infer enough type information to locate the impl of the trait core::fmt::Show for the type _; type annotations required

如果我尝试指定类型:

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);
}

输出是:

error: trait std::fmt::Show already appears in the list of bounds [E0127] previous appearance is here #[deriving(Show)]

这是为什么?如何解决?

最佳答案

3. 不够具体,无法单独命名类型 - 它可以是 f32f64。您可以(至少)通过以下两种方式更加明确:

let v = Point{x: 3f32, y: 4f32, z: 5f32};
let v: Point<f32> = Point{x: 3., y: 4., z: 5.};

关于rust - 在通用结构中派生 Show,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27668612/

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