Rust 单元类型的用途是什么?
Rust具有单位类型,Rust 单元类型的用途是什么?,rust,unit-type,Rust,Unit Type,Rust具有单位类型,(),一种具有单个零大小值的类型。此单位类型的值也使用()指定 单位类型的用途及其价值是什么?这是一种避免像其他语言一样使用null(或nil)的机制吗 ()是类型为()的值,其目的是无用 Rust中的所有内容都是一个表达式,返回“nothing”的表达式实际上返回()。如果函数没有返回类型,但返回的不是(),编译器将给出一个错误。比如说 fn f() { 1i32 // error: mismatched types: expected `()` but foun
()
,一种具有单个零大小值的类型。此单位类型的值也使用()
指定
单位类型的用途及其价值是什么?这是一种避免像其他语言一样使用null(或nil)的机制吗 ()
是类型为()
的值,其目的是无用
Rust中的所有内容都是一个表达式,返回“nothing”的表达式实际上返回()
。如果函数没有返回类型,但返回的不是()
,编译器将给出一个错误。比如说
fn f() {
1i32 // error: mismatched types: expected `()` but found `int`
}
()
也有实际用途。有时我们不关心泛型类型,()
将其明确化
例如,一个<代码>结果< />代码可以用作一个函数的返回类型,它可以成功地完成或者由于各种原因而失败。 < P>如果你来自C语言(C,C++,java等),你可以认为单元是像
()
设置特殊情况
在
HashSet
中使用了这个函数。HashSet
实际上实现为。(从泛型类型T
映射到()
)它更像是类C语言中的void
。据我所知,一切都是rust中的一个表达式,因此()
是某个仅为其效果而执行的对象返回的值。您可以创建自己的零大小类型,就像()
通过说struct MyNewZeroSizeType代码>它可能很有用(“标记类型”!)它在java中看起来不像null
,因为如果你说你返回一个int
,你就不能返回()
来代替它。假设你也可以为它定义方法,但不会有与这些方法相关的状态。。。是吗?@errordeveloper是的,几乎你能用()
做的每件事都有一个微不足道的实现。另一个使用领域是动态分派,其中记录的TraitObject实现有*mut()
数据和vtable类型。我要添加void
和()
不仅在不关心结果的情况下,而且在没有结果的情况下,都非常有用。我可能有一个方法存储到一个文件中,要么失败并出现错误,要么在没有进一步信息的情况下成功完成--Result
。你可以说,选项
更好,但我不同意;结果
的命名约定意味着它清楚地知道发生了什么。