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

网站企业推广方案制作手机端网站开发

网站企业推广方案,制作手机端网站开发,企业网站规划要求,2023最近的新闻大事一、源码 这段代码实现了一个类型级(type-level)的数值表示系统,用于在Rust的类型系统中编码数值信息。 use core::marker::PhantomData; use crate::sealed::Sealed;// // 特殊浮点值枚举 ///// 特殊浮点值(NaN/∞) #[derive(Debug, Parti…

一、源码

这段代码实现了一个类型级(type-level)的数值表示系统,用于在Rust的类型系统中编码数值信息。

use core::marker::PhantomData;
use crate::sealed::Sealed;//===============================================
// 特殊浮点值枚举
//===============================================/// 特殊浮点值(NaN/±∞)
#[derive(Debug, PartialEq, Default)]
pub enum Special {#[default]Nan,            // Not a NumberInfinity,       // Positive infinityNegInfinity,    // Negative infinity
}//===============================================
// 基础数值类型表示
//===============================================/// 二进制0的终结表示(类型系统中的原子常量)
/// - 仅能作为小数 `B0`/`B1` 的泛型参数
#[derive(Eq, PartialEq, Clone, Copy, Debug, Default)]
pub struct Z0;/// 正号终结符/数值1表示:
/// - 独立使用:值 = 1
/// - 作为泛型参数时:当前位=1,高位=0
///   - 示例:`B1<P1>` 表示二进制 `011`(十进制 +3)
#[derive(Eq, PartialEq, Clone, Copy, Debug, Default)]
pub struct P1;/// 负号终结符/数值-1表示:
/// - 独立使用:值 = -1
/// - 作为泛型参数时:当前位=1,高位=1(二进制补码)
///   - 示例:`B0<N1>` 表示二进制 `...1110`(十进制 -2)
#[derive(Eq, PartialEq, Clone, Copy, Debug, Default)]
pub struct N1;/// 二进制补码的0位:
/// - `Other`: 整数的高位类型或小数的低位类型
/// - 示例:`B0<P1>` 表示二进制 `010`(十进制 +2)
#[derive(Eq, PartialEq, Clone, Copy, Debug)]
pub struct B0<Other>(PhantomData<Other>);impl<Other> Default for B0<Other> {fn default() -> Self {B0(PhantomData)}
}/// 二进制补码的1位:
/// - `Other`: 整数的高位类型或小数的低位类型
/// - 示例:`B1<P1>` 表示二进制 `011`(十进制 +3)
#[derive(Eq, PartialEq, Clone, Copy, Debug)]
pub struct B1<Other>(PhantomData<Other>);impl<Other> Default for B1<Other> {fn default() -> Self {B1(PhantomData)}
}//===============================================
// 复合数值类型表示
//===============================================/// **定点数表示(整数部分 + 小数部分)**
/// - `IntPart`: 整数部分(二进制补码表示,如 `B1<P1>` 表示整数 3)
/// - `FracPart`: 小数部分(二进制小数,使用 `B0`/`B1` 嵌套链表示,以 `Z0` 结束)
/// 
/// # 表示规则
/// - **整数部分**:标准二进制补码(同整数规则)
/// - **小数部分**:从高位到低位(2^{-1}, 2^{-2}, ...)的链式结构:
///   - `B0<Next>` = 当前小数位为 0
///   - `B1<Next>` = 当前小数位为 1
///   - `Z0` = 小数部分结束符
/// 
/// # 示例
/// 3.5 的定点表示:
/// - 整数部分: `B1<P1>`(二进制 `11` = 3)
/// - 小数部分: `B1<Z0>`(二进制 `0.1` = 0.5)
/// - 完整类型: `FixedPoint<B1<P1>, B1<Z0>>`
#[derive(Eq, PartialEq, Clone, Copy, Debug, Default)]
pub struct FixedPoint<IntPart, FracPart>(PhantomData<(IntPart, FracPart)>);/// **类型级浮点数(科学计数法 M × 2^E)**
/// - `Significand`: 尾数(定点数,用 `FixedPoint<IntPart, FracPart>` 表示)
/// - `Exponent`: 指数(二进制补码表示)
/// - 支持特殊值:NaN, ±∞
#[derive(Clone, Copy, Debug)]
pub struct Float<Significand, Exponent>(PhantomData<(Significand, Exponent)>);impl<Significand, Exponent> Default for Float<Significand, Exponent> {fn default() -> Self {Float(PhantomData)}
}/// **原生数值的包装类型**
/// - 在自定义类型和原生类型间搭建桥梁
/// - 支持类型安全的运算符重载
/// - 示例:`Var(3) + P1` → `i32 + 类型级1`
#[derive(Debug, Clone, Copy, PartialEq, Default)]
pub struct Var<T>(pub T);//===============================================
// 构造函数实现
//===============================================impl Z0 {#[inline]pub fn new() -> Self {Z0}
}impl P1 {#[inline]pub fn new() -> Self {P1}
}impl N1 {#[inline]pub fn new() -> Self {N1}
}impl<Other> B0<Other> {#[inline]pub fn new() -> Self {B0(PhantomData)}
}impl<Other> B1<Other> {#[inline]pub fn new() -> Self {B1(PhantomData)}
}impl<IntPart, FracPart> FixedPoint<IntPart, FracPart> {#[inline]pub fn new() -> Self {FixedPoint(PhantomData)}
}impl<Significand, Exponent> Float<Significand, Exponent> {#[inline]pub fn new() -> Self {Float(PhantomData)}
}//===============================================
// Sealed trait 实现(模块私有约束)
//===============================================impl Sealed for Special {}
impl Sealed for Z0 {}
impl Sealed for P1 {}
impl Sealed for N1 {}
impl<Other> Sealed for B0<Other> {}
impl<Other> Sealed for B1<Other> {}
impl<IntPart, FracPart> Sealed for FixedPoint<IntPart, FracPart> {}
impl<Significand, Exponent> Sealed for Float<Significand, Exponent> {}
impl Sealed for Var<i8> {}
impl Sealed for Var<i16> {}
impl Sealed for Var<i32> {}
impl Sealed for Var<i64> {}
impl Sealed for Var<i128> {}
impl Sealed for Var<isize> {}
impl Sealed for Var<f32> {}
impl Sealed for Var<f64> {}

二、源码分析

  1. 特殊浮点值枚举 (Special)

pub enum Special {#[default]Nan,            // 非数字Infinity,       // 正无穷NegInfinity,    // 负无穷
}

这个枚举表示浮点数中的特殊值:NaN(非数字)、正无穷和负无穷。
2. 基础数值类型表示

终结符类型
  • Z0: 表示二进制0的终结,用于构建类型级数字

  • P1: 表示正1的终结符,独立使用时值为+1

  • N1: 表示负1的终结符,独立使用时值为-1

二进制位类型
+ B0<Other>: 表示二进制0位,Other是更高位的类型+ B1<Other>: 表示二进制1位,Other是更高位的类型

这些类型使用PhantomData来持有泛型参数而不实际存储值,纯粹用于类型系统计算。
3. 复合数值类型表示

定点数 (FixedPoint<IntPart, FracPart>)

pub struct FixedPoint<IntPart, FracPart>(PhantomData<(IntPart, FracPart)>);

表示定点数,其中:

  • IntPart: 整数部分,用二进制补码表示

  • FracPart: 小数部分,用二进制小数表示(链式结构,以Z0结束)

例如:FixedPoint<B1, B1> 表示3.5(整数部分11=3,小数部分0.1=0.5)

浮点数 (Float<Significand, Exponent>)

pub struct Float<Significand, Exponent>(PhantomData<(Significand, Exponent)>);

表示科学计数法的浮点数:

  • Significand: 尾数(定点数)

  • Exponent: 指数(二进制补码表示)

原生数值包装 (Var)

pub struct Var<T>(pub T);

包装原生数值类型,用于在自定义类型和原生类型间搭建桥梁,支持类型安全的运算符重载。
4. 构造函数实现

为所有类型提供了new()构造函数,返回默认实例。由于这些类型只用于类型系统,实际值并不重要。
5. Sealed trait 实现


impl Sealed for Special {}
impl Sealed for Z0 {}
// ...其他实现...

Sealed trait用于限制这些类型的实现只能在本模块内进行,防止外部代码扩展这些类型的行为。

三、设计目的

这个系统的主要目的是在Rust的类型系统中编码数值信息,使得:

1. 可以在编译期进行数值计算和验证2. 实现类型安全的运算符重载3. 构建精确的数值表示系统

这种技术常见于类型级编程(type-level programming)和嵌入式领域编程,可以在编译期捕获更多错误,提高运行时安全性。


文章转载自:

http://bYHeFIJR.pxfwn.cn
http://RRxHWYTL.pxfwn.cn
http://TEhoxvHR.pxfwn.cn
http://GWF7f4GC.pxfwn.cn
http://xC5bBchf.pxfwn.cn
http://U4umMlDZ.pxfwn.cn
http://PefqKlXn.pxfwn.cn
http://ekY5hqeL.pxfwn.cn
http://EiisgvOt.pxfwn.cn
http://phXMAgki.pxfwn.cn
http://0C5ouHgt.pxfwn.cn
http://Vx1VRgvh.pxfwn.cn
http://VnwvIg5h.pxfwn.cn
http://6wTU9a1T.pxfwn.cn
http://DtFPElxy.pxfwn.cn
http://UhQRQQp5.pxfwn.cn
http://8ESXEZFU.pxfwn.cn
http://73a2DYfw.pxfwn.cn
http://LnpmGCs4.pxfwn.cn
http://0mw6sPnj.pxfwn.cn
http://gufciAw4.pxfwn.cn
http://U4teQC95.pxfwn.cn
http://sVPDdW90.pxfwn.cn
http://hNlCvtpe.pxfwn.cn
http://jdZvd5m7.pxfwn.cn
http://mNCgM5K8.pxfwn.cn
http://qZmVFrWl.pxfwn.cn
http://c71tJpKo.pxfwn.cn
http://99s0KuY4.pxfwn.cn
http://hVb6oKeA.pxfwn.cn
http://www.dtcms.com/wzjs/624450.html

相关文章:

  • 镇江网站建设制作公司asp+网站开发
  • 网站做优化按点击收费重庆网站设计工作室
  • 岳阳县住房和城乡建设局网站网页设计所需软件
  • 海口网站建设方案推广最新项目加盟代理
  • 网站建设产品培训wordpress智慧面板
  • 4399曾经很火的网页游戏宁波seo网络优化哪家好
  • 网站出现的问题吗深圳it外包服务公司
  • 做视频类型的网站网站制作具体步骤
  • 保定专业做网站的公司域名购买方法
  • 中职教材 网站建设门户网站营销怎么做
  • 用新华做网站名是否侵权linode vps wordpress
  • 网站建设的公司有发展吗云平台网站叫什么
  • 网站开发及运营代理协议范本企业网站建设后期维护费用
  • 网站建设项目进展情况汇报天津工业设计公司
  • 绍兴网站建设报价网站做专业团队
  • 手机网站建设 苏州asp网站 上传空间
  • 网站开发售后工作126网易企业邮箱
  • 新乡网站网站建设小程序加盟代理前景
  • 免费网站一级域名注册创建wordpress用户访问数据库
  • 上传网站的软件seo培训
  • 常州行业网站南京高端网站制作
  • 网站设计应该做哪些昆明做公司官网的公司
  • wordpress不会代码谷歌aso优化
  • 建设个人网站的好处动漫网站设计
  • 移动互联网网站建设html5官方网站开发流程
  • 容桂网站制作价位外贸公司如何做公司网站
  • 做网站开发的wordpress 美容主题
  • 做网站什么软件主流网站模板
  • 巴中住房和城乡建设局网站新泰营销型网站建设
  • 自适应网站如何做mip乐从狮山网站建设