【unitrix】 6.2 类型化无符号整数特征(t_unsigned.rs)

一、源码

这段代码是用Rust语言实现的一个类型级无符号整数的标记特质(trait)。这是一种在类型系统中表示和操作数字的技术,通常称为"类型级编程"或"依赖类型编程"。

use crate::number::{O, Null, B, TInt, Bit};

// ========== TUnsigned 实现 ==========

/// 无符号整数的标记特质
pub trait TUnsigned: TInt {}

impl TUnsigned for B<Null, O> {}  // 0
impl<H: TUnsigned, L: Bit> TUnsigned for B<H, L> {}

二、

  1. 导入依赖:

use crate::number::{O, Null, B, TInt, Bit};

这里从当前crate的number模块导入了一些类型:

  • O和Null:表示二进制的0和终止符

  • B:用于构建二进制数

  • TInt:类型级整数的标记特质

  • Bit:表示单个二进制位(0或1)的特质

  1. TUnsigned特质定义:

pub trait TUnsigned: TInt {}

定义了一个名为TUnsigned的公开特质,它继承自TInt特质。这表示所有实现TUnsigned的类型也必须实现TInt。

  1. 具体实现:
  • 基本案例(表示0):

impl TUnsigned for B<Null, O> {}  // 0

这表示类型B<Null, O>(二进制表示的0)实现了TUnsigned特质。

  • 递归案例(表示所有其他无符号整数):
impl<H: TUnsigned, L: Bit> TUnsigned for B<H, L> {}

这是一个泛型实现,表示对于任何:

  • H:已经实现了TUnsigned的类型(高位部分)

  • L:实现了Bit的类型(低位部分)
    的组合B<H, L>都实现了TUnsigned特质。

这种实现方式通常用于在编译时表示和操作数字,通过类型系统而不是运行时值来保证某些属性。B<H, L>是一个二进制数的类型表示,其中H是高位数,L是最低位。例如:

B<Null, O> 表示 0

B<B<Null, I>, O> 表示补码 10 (-2)

B<B<Null, O>, I> 表示为正数的 01 (1) (I类型表示1)

这种技术常用于需要编译时计算或验证的场景,如物理单位等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuyuan77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值