【unitrix数间混合计算】3.1 零标记trait(zero.rs)
一、源码
这段代码定义了一个标记特征(marker trait)Zero,并为其实现了三个具体类型的实现。
use crate::sealed::Sealed;
use crate::number::{bit::B0, uint::U0, int::Z0};
/// 一个标记特征 (marker trait),用于标识某个类型表示零值。只有 B0、U0 和 Z0实现了这个特征。
pub trait Zero: Sealed {}impl Zero for B0 {}
impl Zero for Z0 {}
impl Zero for U0 {}
二、模块导入:
use crate::sealed::Sealed;
use crate::number::{bit::B0, uint::U0, int::Z0};
-
从当前crate中导入了Sealed trait
-
从number模块中导入了三个类型:B0(位类型的0)、U0(无符号整数的终止类型,表示0)和Z0(有符号整数的0)
三、Zero trait定义:
pub trait Zero: Sealed {}
-
定义了一个公开的标记特征Zero
-
它要求实现者必须也实现Sealed trait(这是一种防止下游crate实现该trait的模式,称为"sealed trait"模式)
四、具体实现:
impl Zero for B0 {}impl Zero for Z0 {}impl Zero for U0 {}
-
为三种类型实现了Zero trait:
-
B0:表示二进制位0的类型
-
Z0:表示有符号整数0的类型
-
U0:表示无符号整数0的类型(在类型级编程中,无符号整数通常用链表结构表示,U0是终止节点)
这段代码的注释清楚地说明了:
-
Zero是一个标记特征,用于标识表示零值的类型
-
只有B0、Z0和U0实现了这个特征
这种模式常见于类型级编程(type-level programming),用于在编译期区分不同类型的零值。标记特征本身不包含任何方法或行为,仅用于类型系统的标记和分类。