Rust的枚举还实现了C语言的联合(union)的特性

Rust的枚举特性还实现了C语言的联合的特性,这在一些情况下,可以简化代码。

下面这段Rust定义枚举的代码:

enum Message {
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
    ChangeColor(i32, i32, i32),
}

参考:Enum Values

在C语言中相当于以下代码:

typedef enum
{
	Quit,
	Move,
	Write,
	ChangeColor
}MessageType;

typedef struct
{
	MessageType type;
	union {
		struct move {
			int32_t x;
			int32_t y;
		};
		String write_string;
		int32_t color[3];
	}
}Message;

显然,Rust的代码要简练地多。在事件驱动编程中,不同的事件关联不同的数据是很普遍的,Rust枚举的这个特性,可以简化事件驱动编程。

你可能感兴趣的:(Rust-Embedded,rust)