当前位置: 首页 > 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.lryc.cn/news/615546.html

相关文章:

  • 【QT】QMainWindow:打造专业级桌面应用的基石
  • pdf预览Vue-PDF-Embed
  • Linux下管道的实现
  • js获取当前时间
  • 基于dynamic的Druid 与 HikariCP 连接池集成配置区别
  • Web自动化技术选择
  • [Oracle] TRUNC()函数
  • 11. 为什么要用static关键字
  • Qt Graphics View框架概述
  • SpringBoot日志关系
  • 分治-快排-面试题 17.14.最小k个数-力扣(LeetCode)
  • 【Datawhale AI夏令营】让AI读懂财报PDF(多模态RAG)(Task 2)
  • 【无标题】六边形结构在二维拓扑量子色动力学模型中确实具有独特优势,并构建完整的二维拓扑量子色动力学模型。
  • QToolBar 的 addPermanentWidget() 详解与实战场景
  • Python如何将图片转换为PDF格式
  • [SC]SystemC 常见的编译/语法错误与解法(三)
  • PowerShell 入门系列(五):运行命令与命令剖析详解
  • Effective C++ 条款32:确定你的public继承塑模出 is-a 关系
  • pytorch+tensorboard+可视化CNN
  • ubuntu dpkg命令使用指南
  • 【线性代数】其他
  • 机器翻译实战:使用Gensim训练中英文词向量模型及可视化
  • leetcode-C语言-3479.水果成篮 III
  • 写 SPSS文件系统
  • Linux软件编程:shell
  • 组合期权:垂直价差
  • C++ 中的智能指针
  • 电子电气架构 --- 电气/电子架构迁移已拉开帷幕
  • Oracle数据库重启后打开异常状态的检查步骤
  • 一周学会Matplotlib3 Python 数据可视化-网格 (Grid)