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

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

一、源码

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

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

二、代码分析

  1. 导入依赖:

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

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

  1. Trait 定义:

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

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

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

  1. 空实现:

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

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

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

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

  • 这里使用了泛型 trait 约束

三、类型系统示例:

  • Null → 0.0

  • BinNonZeroFrac 实现类型 → 0.1、0.01 等

四、设计特点:

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

  2. 通过 Null 处理边界情况

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

  4. 泛型实现提供扩展性

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

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

相关文章:

  • 第十四届蓝桥杯青少年组省赛 编程题真题题解
  • [SC]高效地调试SystemC模型中的语法错误
  • AI大模型模态特征详解
  • 【ref、toRef、toRefs、reactive】
  • Qt Graphics View框架概述
  • Redis 事务机制
  • Sklearn 机器学习 数据降维PCA 指定方差百分比计算分量数
  • 生态问题是什么?
  • C++ 虚函数、多重继承、虚基类与RTTI的实现成本剖析
  • 徘徊识别场景误报率↓77%:陌讯动态时序建模方案实战解析
  • Linux网络转发系统框架分析
  • 强化学习概论(1)
  • 生产环境某业务服务JVM调优总结
  • 关于C语言本质的一些思考
  • 计算BERT-BASE参数量
  • 驾驶场景玩手机识别准确率↑32%:陌讯动态特征融合算法实战解析
  • 数据结构——优先级队列(PriorityQueue):一文解决 Top K 问题!
  • 01数据结构-图的邻接矩阵和遍历
  • Java进阶之单列集合List接口下的通用方法
  • Serper注册无反应
  • spring的知识点:容器、AOP、事物
  • C语言中级_宏定义传参、volatile和extern关键字、字符串数组和字符串函数
  • Python Gradio 写的-文本情感分析小软件 (不用Html+css+js 可写出网页来)
  • Mac屏幕取色不准?探究原理和换算规则
  • STM32学习笔记6-TIM-2输出比较功能
  • PyQt5技术栈简述
  • SpringBoot日志关系
  • react之React.cloneElement()
  • 数据结构初阶(7)树 二叉树
  • Spring——Spring懒加载设计使用场景