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

【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.lryc.cn/news/599517.html

相关文章:

  • Docker镜像导入解析:docker import vs docker load
  • 2025最新蜘蛛池在百度SEO中的应用
  • vue2+node+express+MongoDB项目安装启动启动
  • ELK Stack技术栈
  • 前端基础知识Vue系列 - 27(Vue项目中如何解决跨域)
  • 养老服务行业怎么解决采购管理难题?
  • 配置Mac/Linux终端启动执行脚本
  • 数据赋能(332)——安全与合规——保密管理
  • 代码随想录day45dp12
  • 读书笔记8:供应链思维下的企业战略与数字生态
  • OpenCV(04)梯度处理,边缘检测,绘制轮廓,凸包特征检测,轮廓特征查找
  • MCP协议详细教程
  • The Magic Mask for Android:解锁无限可能的安卓自定义套件
  • 【面试场景题】外卖点餐系统设计思路
  • [MMU]四级页表查找(table walk)的流程
  • SQL性能优化
  • 【LeetCode Solutions】LeetCode 热题 100 题解(16 ~ 20)
  • 系统编程——文件IO
  • SpringBoot整合Fastexcel/EasyExcel导出Excel导出多个图片
  • 面向对象编程实战:Python打造你的数码宠物世界
  • Java NIO FileChannel在大文件传输中的性能优化实践指南
  • 盟接之桥说制造:构建以预防为核心的供应链客诉管理体系
  • GitHub git push 推送大文件
  • 【第四章:大模型(LLM)】01.Embedding is all you need-(6)从 Word2Vec 到推荐/广告系统,再到大语言模型(LLM)
  • Three.js 控制器和交互设计:OrbitControls + Raycaster 实战
  • ✨ 使用 Flask 实现头像文件上传与加载功能
  • Kafka——多线程开发消费者实例
  • MCP工具开发实战:打造智能体的“超能力“
  • 半相合 - 脐血联合移植
  • C++ 常用的数据结构(适配器容量:栈、队列、优先队列)