gpt4 book ai didi

rust - 表达式中是否有类型注释的语法? (示例用例 : Default trait)

转载 作者:行者123 更新时间:2023-11-29 07:58:23 27 4
gpt4 key购买 nike

有没有办法直接在表达式中编写类型注释,例如当使用 Default::default() 时?

例如,在下面的示例中,编译器显然无法推断类型:

use std::default::Default;

#[deriving(Default, Show)]
struct Point{ x: int, y: int };

println!("Default Point: {}", Default::default())

我找到的唯一解决方案是在附加 let 绑定(bind)的 LHS 上注释类型。

let p: Point = Default::default();
println!("Default Point: {}", p)

我希望能以某种方式直接告诉编译器我想要哪个版本的 Default::default()。也许是这样的:

println!("Default Point: {}", Default::default() as Point)
println!("Default Point: {}", Default::default<Point>())
println!("Default Point: {}", Default<Point>::default())
println!("Default Point: {}", Point::default())

但这些都不是有效的语法。

最佳答案

目前这是在标准库中使用 from_str 等辅助函数完成的。

基本思想是使用函数允许您引入类型参数,然后您可以使用它,如下所示:

use std::default::Default;

#[deriving(Default, Show)]
struct Point{ x: int, y: int }

fn default<T: Default>() -> T { Default::default() }

fn main() {
println!("Default Point: {}", default::<Point>());
}

关于rust - 表达式中是否有类型注释的语法? (示例用例 : Default trait),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27591993/

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