Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 单元类型的用途是什么?_Rust_Unit Type - Fatal编程技术网

Rust 单元类型的用途是什么?

Rust 单元类型的用途是什么?,rust,unit-type,Rust,Unit Type,Rust具有单位类型,(),一种具有单个零大小值的类型。此单位类型的值也使用()指定 单位类型的用途及其价值是什么?这是一种避免像其他语言一样使用null(或nil)的机制吗 ()是类型为()的值,其目的是无用 Rust中的所有内容都是一个表达式,返回“nothing”的表达式实际上返回()。如果函数没有返回类型,但返回的不是(),编译器将给出一个错误。比如说 fn f() { 1i32 // error: mismatched types: expected `()` but foun

Rust具有单位类型,
()
,一种具有单个零大小值的类型。此单位类型的值也使用
()
指定

单位类型的用途及其价值是什么?这是一种避免像其他语言一样使用null(或nil)的机制吗

()
是类型为
()
的值,其目的是无用

Rust中的所有内容都是一个表达式,返回“nothing”的表达式实际上返回
()
。如果函数没有返回类型,但返回的不是
()
,编译器将给出一个错误。比如说

fn f() {
    1i32 // error: mismatched types: expected `()` but found `int`
}
()
也有实际用途。有时我们不关心泛型类型,
()
将其明确化


例如,一个<代码>结果< />代码可以用作一个函数的返回类型,它可以成功地完成或者由于各种原因而失败。

< P>如果你来自C语言(C,C++,java等),你可以认为单元是像Value/Cuth>。它是您不想返回任何内容时返回的类型

类型理论家会指出,单位和void不同,因为单位只有1个值,而void只有0个值

实际上,两种类型中可以存储的信息量是相同的(0位),尽管使用unit的语言更易于使用,因为您可以像对待任何其他值一样对待它

您可以将其存储在变量、结构、集合或任何可以存储值的地方。可以作为参数传递,也可以作为结果返回。您可以创建对它的引用。等等

那么,这什么时候有用呢?主要是当你不关心你在处理什么类型的价值时。这意味着您可以编写多态/泛型代码,而无需担心所处理的值是否实际包含任何信息,也就是说,不需要为存储的是实际数据还是
()
设置特殊情况


HashSet
中使用了这个函数。
HashSet
实际上实现为。(从泛型类型
T
映射到
()

它更像是类C语言中的
void
。据我所知,一切都是rust中的一个表达式,因此
()
是某个仅为其效果而执行的对象返回的值。您可以创建自己的零大小类型,就像
()
通过说
struct MyNewZeroSizeType它可能很有用(“标记类型”!)它在java中看起来不像
null
,因为如果你说你返回一个
int
,你就不能返回
()
来代替它。假设你也可以为它定义方法,但不会有与这些方法相关的状态。。。是吗?@errordeveloper是的,几乎你能用
()
做的每件事都有一个微不足道的实现。另一个使用领域是动态分派,其中记录的TraitObject实现有
*mut()
数据和vtable类型。我要添加
void
()
不仅在不关心结果的情况下,而且在没有结果的情况下,都非常有用。我可能有一个方法存储到一个文件中,要么失败并出现错误,要么在没有进一步信息的情况下成功完成--
Result
。你可以说,
选项
更好,但我不同意;
结果
的命名约定意味着它清楚地知道发生了什么。