gpt4 book ai didi

rust - _ 在 Rust 中的类型错误中意味着什么?

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

我收到这个错误:

error: mismatched types [E0308]
process(s);
^
help: run `rustc --explain E0308` to see a detailed explanation
note: expected type `&(u32, u32, image::Luma<u8>)`
note: found type `&mut (u32, u32, &mut _)`

但是我不明白_是什么意思。

最佳答案

在 Rust 中,当名称无关紧要时,使用 _ 标识符。这发生在几种情况下:

  • let _ = ...; 用于忽略表达式的结果(仅当所述结果用 #[must_use] 属性标记时才需要)
  • 在类型中,_用于省略类型(要么是因为你更喜欢让编译器推断它,要么是因为编译器判断它无关紧要)

因此,在您的情况下,编译器忽略了类型,因为它无关紧要,因此您可以关注错误的具体原因。一开始它可能会让人感到困惑,但一旦习惯了它实际上很有帮助,尤其是当类型多如牛毛(非常大)时。


错误很简单:您弄错了引用和值。

您的原始签名需要:&(u32, u32, Type) 但您传递了 &mut (u32, u32, &mut Type)

可变性的差异并不重要(在这个方向上),但是 &mut TypeType 具有非常不同的内存结构并且不可互换。

关于rust - _ 在 Rust 中的类型错误中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37925198/

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