gpt4 book ai didi

generics - 如何告诉Rust编译器实际上并不需要类型注释?

转载 作者:行者123 更新时间:2023-12-03 11:40:54 25 4
gpt4 key购买 nike

struct MyStruct<T: MyTrait> {
inner: T,
}

impl<T: MyTrait> MyStruct<T> {
const MYCONST: u32 = 42;

pub fn x() {
println!("x!");
}
}

pub trait MyTrait {}

访问 MYCONSTx()都需要一个特征。如果未提供任何内容,则编译器会提示:

error[E0282]: type annotations needed
--> src/main.rs:42:5
|
42 | MyStruct::x();
| ^^^^^^^^^^^ cannot infer type for `T`

或者

error[E0282]: type annotations needed
--> src/main.rs:42:20
|
42 | println!("{}", MyStruct::MYCONST);
| ^^^^^^^^^^^^^^^^^ cannot infer type for `T`

有没有办法告诉编译器在这里忽略对类型注释的需要?

最佳答案

在回答“时,为什么需要类型注释?”考虑以下代码:

struct MyStruct<T> {
inner: T,
}

impl MyStruct<i32> {
const MYCONST: u32 = 42;

pub fn x() {
println!("i32!");
}
}

impl MyStruct<i64> {
const MYCONST: u32 = 64;

pub fn x() {
println!("i64!");
}
}


fn main() {
MyStruct::x();
}

应该打印 i32还是 i64

关于generics - 如何告诉Rust编译器实际上并不需要类型注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60423563/

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