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

【unitrix数间混合计算】2.10 小数部分特征(bin_frac.rs)

一、源码

这段 Rust 代码定义了一个用于表示二进制小数部分的类型系统

use crate::number::{Null, NonZeroBinFrac};/// 标记合法的二进制小数部分类型
pub trait BinFrac: Default {}// 空小数部分(表示值为0)
impl BinFrac for Null {}// 非空小数部分(需满足NonZeroBinFrac约束)
impl<F: NonZeroBinFrac> BinFrac for F {}

二、代码分析

  1. 导入依赖:

use crate::number::{Null, NonZeroBinFrac};
  • 从当前 crate 的 number 模块导入两个类型:
    • Null:表示空/终止类型(类似链表结尾的 nil)

    • NonZeroBinFrac:表示非零二进制小数的 trait

  1. Trait 定义:

/// 标记合法的二进制小数部分类型
pub trait BinFrac: Default {}
  • 定义 BinFrac trait 来标记合法的二进制小数类型

  • 继承 Default 表示这些类型必须能提供默认值

  • 这是一个标记 trait(没有方法),仅用于类型系统

  1. 空实现:

// 空小数部分(表示值为0)
impl BinFrac for Null {}
  • 为 Null 类型实现 BinFrac

  • 表示小数部分为 0 的情况(如整数 1.0)

  1. 非空实现:
// 非空小数部分(需满足NonZeroBinFrac约束)impl<F: NonZeroBinFrac> BinFrac for F {}
  • 为所有实现 NonZeroBinFrac 的类型 F 自动实现 BinFrac

  • 表示非零的小数部分(如 0.1, 0.01 等)

  • 这里使用了泛型 trait 约束

三、类型系统示例:

  • Null → 0.0

  • NonZeroBinFrac 实现类型 → 0.1、0.01 等

四、设计特点:

  1. 使用标记 trait 进行类型分类

  2. 通过 Null 处理边界情况

  3. 通过 trait 继承确保默认构造能力

  4. 泛型实现提供扩展性

这个设计常用于类型安全的数值计算,可以在编译期确保小数部分的合法性。

http://www.dtcms.com/a/323352.html

相关文章:

  • 【和春笋一起学C++】(三十三)名称空间的其他特性
  • 小米开源大模型 MiDashengLM-7B:不仅是“听懂”,更能“理解”声音
  • B.10.01.5-电商系统的设计模式应用实战
  • 制作浏览器CEFSharp133+X86+win7 之 javascript交互(二)
  • Javaweb - 14.1 - 前端工程化
  • 从依赖外部提示的显式思维链(CoT),到内部自洽的内化推理(Internalized Reasoning)
  • ConcurrentHashMap源码详解
  • 虚拟手机号工具使用
  • 年轻新标杆!东方心绣脸韧带年轻技术升级发布
  • 基于大语言模型的智能问答系统研究
  • 谷歌官方性能文档:Android 动态性能框架优化Performance Hint API
  • Go 实用指南:如何执行 Skyline 查询(Pareto 最优点筛选)
  • [激光原理与应用-201]:光学器件 - 增益晶体 - 概述
  • Dell PowerEdge: Servers by generation (按代系划分的服务器)
  • leetcode 283. 移动零 - java
  • 【12】 神经网络与深度学习(下)
  • [激光原理与应用-204]:光学器件 - LD激光二极管工作原理以及使用方法
  • 网络超时处理与重试机制:Go最佳实践
  • 【R语言】多样本单细胞分析_SCTransform+Harmony方案(2)
  • Q-learning强化算法万字详解
  • 【工作流引擎】Flowable 和 Activiti
  • 《算法导论》第 15 章 - 动态规划
  • Python大数据分析——AdaBoost、GBDT、SMOTE与XGBoost算法模型
  • Slab 算法浅析
  • go数据处理之textproto.Pipeline
  • 词向量基础:从独热编码到分布式表示的演进
  • BeanDefinition 与 Bean 生命周期(面试高频考点)
  • 第十九天-输入捕获实验
  • 第十四届蓝桥杯青少年组省赛 编程题真题题解
  • 内存+磁盘混合存储数据库——平衡设备的“快”与“稳”