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

【unitrix数间混合计算】2.11 二进制正整数特质(bin_pos.rs)

一、源码

这段代码定义了一个用于标记二进制正整数的类型系统特性(trait)

use crate::number::{Null, I, Bin, Bit, BinNonZero};/// 二进制正整数标记(底层实现)
pub trait BinPos: BinNonZero {}impl BinPos for Bin<Null, I> {}  // 1
impl<H: BinPos, L: Bit> BinPos for Bin<H, L> {}  // N+1位正整数

二、基础结构


use crate::number::{Null, I, Bin, Bit, BinNonZero};

引入了几个核心类型:

  • Null - 表示终止/空状态

  • I - 表示二进制位1

  • Bin - 二进制数的基本结构体

  • Bit - 位类型(O或I)

  • BinNonZero - 非零数的标记trait

三、特质定义


/// 二进制正整数标记(底层实现)
pub trait BinPos: BinNonZero {}

定义了一个名为 BinPos 的公共trait:

  • 继承自 BinNonZero,表示所有实现这个trait的类型都是非零的

  • 文档注释说明这是底层二进制实现

  • 用于标记二进制正整数类型

四、具体实现

  1. 基本单位1

impl BinPos for Bin<Null, I> {}  // 1
  • 表示二进制数 1 的结构是 Bin<Null, I>

  • 这是最小的正整数单位

  • 实现了 BinPos 表示它是一个二进制正整数

  1. 递归定义

impl<H: BinPos, L: Bit> BinPos for Bin<H, L> {}  // N+1位正整数

这是一个递归实现,表示:

  • 如果高位 H 已经是二进制正整数(BinPos)

  • 且低位 L 是一个有效位(Bit,即O或I)

  • 那么 Bin<H, L> 也是一个二进制正整数

五、类型系统行为

这样的设计实现了:

  1. 类型安全:只有符合二进制正整数结构的类型才能实现 BinPos

  2. 递归验证:可以验证任意长度的二进制数是否为正整数

  3. 非零保证:通过 : BinNonZero 约束确保不会是零

六、示例说明

  1. 有效的 BinPos 类型:
  • Bin<Null, I> - 1 (0b1)

  • Bin<Bin<Null, I>, O> - 2 (0b10)

  • Bin<Bin<Bin<Null, I>, I>, I> - 7 (0b111)

  1. 无效的(不会实现 BinPos):
  • Bin<Null, O> - 0 (零)

  • Bin<Bin<Null, O>, I> - 非规范形式

这种设计常用于类型级编程,可以在编译期验证数值属性。

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

相关文章:

  • 《C语言》结构体和联合体练习题--1
  • 如何回收内存对象,有哪些回收算法?
  • Fish shell的abbr命令行参数介绍和Bat文件查看工具
  • 【QT】常⽤控件详解(七)容器类控件 GroupBox TabWidget 布局管理器 Spacer
  • 深度学习-卷积神经网络CNN-AlexNet
  • LeetCode 括号生成
  • Hadoop MapReduce过程
  • LeetCode - 搜索插入位置 / 排序链表
  • (LeetCode 面试经典 150 题) 104. 二叉树的最大深度 (深度优先搜索dfs)
  • 【Docker实战入门】从核心概念到镜像构建
  • JavaScript的 fetch() 方法 笔记250810
  • CSS优先级、HTTP响应状态码
  • Android的事件分发流程、Kotlin协程、4大组件、Handler机制、架构设计、性能优化、内存泄漏
  • 第4章 程序段的反复执行2while语句P128练习题(题及答案)
  • 智慧农业-无人机视角庄稼倒伏农作物倒伏检测数据集VOC+YOLO格式541张1类别
  • VSCode添加Python、Java注释技巧、模板
  • 疏老师-python训练营-Day40训练和测试的规范写法
  • NumPy性能飞跃秘籍:向量化计算如何提升400倍运算效率?
  • istio笔记03--快速上手多集群mesh
  • 【C语言】深入探索预处理
  • Matlab 基于BP神经网络结合Bagging(BP-Bagging)集成算法的单变量时序预测 (单输入单输出)
  • 带冷端补偿的热电偶采集方案MAX31855
  • Dell PowerEdge: Servers by generation (按代系划分的服务器)
  • 【渲染流水线】[几何阶段]-[图元装配]以UnityURP为例
  • C++2024 年一级
  • Cursor设置
  • 【机器学习深度学习】模型选型:如何根据现有设备选择合适的训练模型
  • 【面试场景题】微博热点新闻系统设计方案
  • 一个“加锁无效“的诡异现象
  • #C语言——刷题攻略:牛客编程入门训练(七):分支控制(一)-- 涉及 %c前加空格:忽略起首的空白字符