Struct 使用单元结构的真实示例是什么?

Struct 使用单元结构的真实示例是什么?,struct,rust,Struct,Rust,我读过关于结构的文档,但我不理解单元结构。它说: 单元结构最常用作标记。它们的大小为零字节,但与空枚举不同,它们可以实例化,从而使它们同构于单元类型()。当您需要在某些东西上实现特性,但不需要在其中存储任何数据时,单元结构非常有用 他们仅以这段代码为例: 结构单元; 使用单元结构的真实示例是什么?标准库 Global 全局内存分配器是一个单元结构: pub-struct-Global; 它没有自己的状态(因为状态是全局的),但它实现了如下特性 std::fmt::Error 字符串格式错误是

我读过关于结构的文档,但我不理解单元结构。它说:

单元结构最常用作标记。它们的大小为零字节,但与空枚举不同,它们可以实例化,从而使它们同构于单元类型
()
。当您需要在某些东西上实现特性,但不需要在其中存储任何数据时,单元结构非常有用

他们仅以这段代码为例:

结构单元;
使用单元结构的真实示例是什么?

标准库
Global
全局内存分配器是一个单元结构:

pub-struct-Global;
它没有自己的状态(因为状态是全局的),但它实现了如下特性

std::fmt::Error
字符串格式错误是一个单元结构:

pub结构错误;
它没有自己的状态,但它实现了如下特性

RangeFull
运算符的类型是一个单元结构:

pub-struct-RangeFull;
它没有自己的状态,但它实现了如下特性

板条箱
chrono::Utc
时区是一个单位结构:

pub结构Utc;

它没有自己的状态,但它实现了类似的特征,因此可以作为chrono-trait的
Date
DateTime

时区的通用参数使用,chrono-trait是一个单位结构,没有自己的状态,但是实现了
时区
特性,因此可用作
日期
日期时间
@Shepmaster的泛型参数抱歉,你说得对,我把零大小的类型与单位结构混淆了。请注意,
std::alloc::AllocError
std::sync::mpsc::RecvError
、和
std::option::nonererror
都是单元结构,尽管其中两个只在夜间启用。@Aiden4是的,在为单元结构重新映射了标准库之后,我不得不对其进行筛选;我试着去抓那些比较稳定的,也比较可能遇到的。