当前位置: 首页 > 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.dtcms.com/a/297054.html

相关文章:

  • [Rust 基础课程]猜数字游戏-获取用户输入并打印
  • 智能问答分类系统:基于SVM的用户意图识别
  • 弹性网:基于神经网络的多组分磁共振弹性成像波反演与不确定性量化|文献速递-医学影像算法文献分享
  • 奥比中光的dabai_dcw2相机彩色对齐方案
  • Android Camera setRepeatingRequest
  • 11. isaacsim4.2教程-Transform 树与Odometry
  • Java面试题(中等)
  • Cartographer安装测试与模块开发(三)--Cartographer在Gazebo仿真环境下的建图以及建图与定位阶段问题(实车也可参考)
  • 融合与智能:AI 浪潮驱动下数据库的多维度进化与产业格局重塑新范式
  • 深入解析Linux匿名管道机制与应用
  • 从数据孤岛到融合共生:KES V9 2025 构建 AI 时代数据基础设施
  • Lua 函数
  • JAVA_THIRTEEN_常用API
  • 星慈光编程虫2号小车讲解第三篇--附件概述
  • ai存在意义的对话
  • 从零开发Java坦克大战:架构设计与难点突破 (上)
  • 星慈光编程虫2号小车讲解第二篇--向左向右平移
  • 处理URL请求参数:精通`@PathVariable`、`@RequestParam`与`@MatrixVariable`
  • 结构化布线系统详解
  • Datawhale AI 夏令营-心理健康Agent开发学习-Task2.1
  • 基于GNS3的Zabbix企业级监控实践:涵盖基础配置与三大核心服务监控
  • 星慈光编程虫2号小车讲解第四篇--触摸按键
  • 星慈光编程虫2号小车讲解第一篇--向前向后
  • redis 源码阅读
  • Day 20:奇异值SVD分解
  • 学着学着 我就给这个 HarmonyOS 应用增加了些新技术
  • 读书笔记(黄帝内经)
  • Lua(迭代器)
  • 基于深度学习的胸部 X 光图像肺炎分类系统(二)
  • 实战演练11:生成式对话机器人(Bloom)