当前位置: 首页 > web >正文

【unitrix】 6.16 非负整数类型( TUnsigned )特质(t_unsingned.rs)

一、源码

use crate::number::{Null, O, I, B, Bit, TInt, NonZeroNonMinusOne};// ==========TPositive 实现 ==========/// 无符号整数的标记特质
pub trait TPositive: NonZeroNonMinusOne {}impl TPositive for B<B<Null, O>, I> {}  // 1
impl<H: TPositive, L: Bit> TPositive for B<H, L> {}// ========== TUnsigned 实现 ==========/// 无符号整数的标记特质
pub trait TUnsigned: TInt {}impl TUnsigned for B<Null, O> {}  // 0
impl<X: TPositive> TUnsigned for X {} // 为避免引入不规范结构,单独定义TPositive特质

二、

这段代码继续扩展了基于类型系统的数字表示,定义了无符号整数(正数和零)的特质。我来详细解释每一部分:

  1. 导入部分
    rust

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

这里导入了更多的类型和特质,包括之前定义的 NonZeroNonMinusOne。
2. TPositive 特质(正数)
rust

pub trait TPositive: NonZeroNonMinusOne {}

定义了一个表示正整数的特质 TPositive,它继承自 NonZeroNonMinusOne(非零非负一)。
实现部分:
rust

impl TPositive for B<B<Null, O>, I> {} // 1

表示数字 1(二进制表示为 B<B<Null, O>, I>)是一个正数。
rust

impl<H: TPositive, L: Bit> TPositive for B<H, L> {}

这是一个泛型实现,表示:

如果 H 是一个正数(TPositive)且 L 是一个位(Bit)
那么 B<H, L>(即在正数 H 后追加一个位 L)也是一个正数。
  1. TUnsigned 特质(无符号整数)
    rust

pub trait TUnsigned: TInt {}

定义了一个表示无符号整数(即非负整数,包括零和正数)的特质 TUnsigned,它继承自 TInt。
实现部分:
rust

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

表示数字 0(二进制表示为 B<Null, O>)是一个无符号整数。
rust

impl<X: TPositive> TUnsigned for X {}

表示任何正数(TPositive)也都是无符号整数(TUnsigned)。注释说明这是为了避免引入不规范的结构而单独定义了 TPositive 特质。
4. 类型关系总结

TUnsigned(无符号整数)包含:零 (B<Null, O>)所有 TPositive(正数)TPositive(正数)是 NonZeroNonMinusOne(非零非负一)的特例
  1. 设计目的

这种设计实现了:

类型安全的无符号整数表示通过类型系统在编译期区分有符号数和无符号数确保数值的合法性(如排除不规范格式)支持类型级编程,可以在编译期进行数值计算和验证

这种模式常见于需要强类型保证的领域,如密码学、安全关键系统或形式验证等场景。

http://www.xdnf.cn/news/16318.html

相关文章:

  • 电子电子架构 --- 软件项目的开端:裁剪
  • Java面试题(中等)
  • Javascript NaN Symbol BigInt
  • TDengine 转化类函数 CAST 用户手册
  • 7.24 C/C++蓝桥杯 | 排序算法
  • Android15或AndroidU广播的发送流程
  • 星慈光编程虫2号小车讲解第三篇--附件概述
  • 深入理解 IO 多路复用:从 select 到 epoll
  • MySQL---索引、事务
  • VUE2 学习笔记5 动态绑定class、条件渲染、列表过滤与排序
  • 【全新上线】境内 Docker 镜像状态监控
  • 秋招Day18 - MyBatis - 基础
  • C语言转义字符‘\\‘‘ 解析与常见误区
  • 六种经典智能优化算法(PSO/GWO/WOA/HHO/DBO/SSA)无人机(UAV)三维路径规划,Matlab代码实现
  • TimeXer - 重新审视时序预测内的外生变量
  • 【LeetCode数据结构】二叉树的应用(一)——单值二叉树问题、相同的树问题、对称二叉树问题、另一棵树的子树问题详解
  • MySQL的命令行客户端
  • markdown学习笔记(个人向) Part.2
  • 跨境支付入门~国际支付结算(区块链篇)
  • C语言:20250724笔记(函数-指针)
  • JAVA_THIRTEEN_常用API
  • 【分布式锁】什么是分布式锁?分布式锁的作用?
  • tensorflow搭建神经网络
  • Linux 磁盘挂载,查看uuid
  • 前端笔记:同源策略、跨域问题
  • 专题:2025微短剧行业生态构建与跨界融合研究报告|附100+份报告PDF汇总下载
  • Python实现PDF按页分割:灵活拆分文档的技术指南
  • 大模型提示词漏洞攻防测试:技术分析与实践指南
  • vlm MiniCPM 学习部署实战
  • 模型的存储、加载和部署