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

车床加工东莞网站建设南京网站高端

车床加工东莞网站建设,南京网站高端,赣州章贡区好玩的地方,百度指数里的资讯指数是什么一、源码 这段代码定义了一个用于表示物理单位的通用结构Unit,支持单位的自动推导和运算。 //! Unit基础结构 //! //! 支持单位自动推导use crate::sealed::Sealed; use core::marker::PhantomData; use core::ops::{Add, Sub, Mul, Div}; use crate::constant::{…

一、源码
这段代码定义了一个用于表示物理单位的通用结构Unit,支持单位的自动推导和运算。

//! Unit基础结构
//! 
//! 支持单位自动推导use crate::sealed::Sealed;
use core::marker::PhantomData;
use core::ops::{Add, Sub, Mul, Div};
use crate::constant::{Sum, Diff};
use super::Sied;
use super::ratio::Scaled;
use super::Unitary;/// Unit基础结构
/// 
/// # 类型参数
/// - `R`: 比例因子类型
/// - `S`: SI基础类型
#[derive(Debug, Clone, Copy)]
pub struct Unit<R: Scaled, S: Sied>(PhantomData<(R, S)>);impl<R: Scaled, S: Sied> Unit<R, S>{pub fn new() -> Self {Self(PhantomData)}
}impl<R: Scaled, S: Sied> Sealed for Unit<R, S>{}impl<R: Scaled, S: Sied> Unitary for Unit<R, S>{}// ================ 运算实现 ================impl<R1, R2, D1:Sied, D2:Sied> Mul<Unit<R2, D2>> for Unit<R1, D1>
whereR1: Scaled + Add<R2>,R2: Scaled,D1: Mul<D2>,  // 使用标准乘法 traitSum<R1, R2>: Scaled, <D1 as Mul<D2>>::Output: Sied,
{type Output = Unit<Sum<R1, R2>, <D1 as Mul<D2>>::Output  // 单位相乘>;/// 物理量乘法fn mul(self, _rhs: Unit<R2, D2>) -> Self::Output {Unit(PhantomData)}
}impl<R1, R2, D1:Sied, D2:Sied> Div<Unit<R2, D2>> for Unit<R1, D1>
whereR1: Scaled + Sub<R2>,  R2: Scaled,D1: Div<D2>,Diff<R1, R2>: Scaled,<D1 as Div<D2>>::Output: Sied,
{type Output = Unit<Diff<R1, R2>,  // 相减<D1 as Div<D2>>::Output>;/// 物理量除法fn div(self, _rhs: Unit<R2, D2>) -> Self::Output {Unit(PhantomData)}
}

二、基本结构

pub struct Unit<R: Scaled, S: Sied>(PhantomData<(R, S)>);
  • Unit是一个泛型结构体,使用PhantomData来持有类型参数而不实际占用空间

  • 类型参数:

    • R: Scaled:比例因子类型,表示单位的缩放比例(如千米是米的1000倍)

    • S: Sied:SI基础类型,表示国际单位制中的基本单位(如米、秒、千克等)

三、核心特性

  1. 构造与标记:
  • new()方法创建一个新的Unit实例

  • 实现了Sealed和Unitary trait,表明这是一个单位类型

  1. 单位乘法:
impl<R1, R2, D1, D2> Mul<Unit<R2, D2>> for Unit<R1, D1>
  • 当两个单位相乘时:

  • 比例因子R1和R2相加(Sum<R1, R2>)

  • SI基础类型D1和D2相乘(D1::Output)

  • 例如:米(1, Length) × 千米(1000, Length) = 1000米²

  1. 单位除法:
impl<R1, R2, D1, D2> Div<Unit<R2, D2>> for Unit<R1, D1>
  • 当两个单位相除时:

    • 比例因子R1和R2相减(Diff<R1, R2>)

    • SI基础类型D1和D2相除(D1::Output)

  • 例如:千米(1000, Length) ÷ 秒(1, Time) = 1000米/秒

四、设计特点

  1. 零成本抽象:使用PhantomData确保运行时无额外开销

  2. 类型安全:通过类型系统保证单位运算的正确性

  3. 自动推导:运算结果类型由编译器自动推导

  4. 组合性:支持复杂单位的组合运算

五、使用场景

这种设计常用于需要严格单位检查的物理计算库,可以防止如"1米 + 1秒"这样的类型错误,并在编译期完成单位换算和简化。

整个实现利用了Rust的类型系统和trait机制,在编译期完成单位运算的类型检查,确保物理计算的维度正确性。

http://www.dtcms.com/wzjs/551884.html

相关文章:

  • 重庆网站建设慕枫如何看网站是否有做网站地图
  • 个人网站备案不能盈利wordpress模板主题
  • 洛阳东翔科技做的网站seo 工具推荐
  • 网站建设不完整dreamware做网站首页
  • 孙红雷做的二手车网站郑州网页网站制作
  • 公司域名让做网站的施工企业突发环境事件应急预案
  • 怎么做网站和注册域名三明商城网站开发设计
  • 网站做响应式还是移动端园区网站建设目的
  • 设计资源网站大推荐南京制作网页培训机构
  • 网站媒体作风建设年工作总结景区电子商务网站建设
  • 仿站 做网站建设彩票网站需要哪些要求
  • 安平县建设局网站手机设置管理网站首页
  • 北京大龙建设集团有限公司网站首页网络设计的目的是
  • 公司网站主页设计wordpress 即时预约
  • 织梦新闻门户网站模板 原创精品网站模板源码
  • 制作手机网站用什么软件村网站开设两学一做栏目
  • 长春电商网站建设常熟东南开发区人才网
  • 大良营销网站建设公司小型企业网站开发
  • 网站开发怎么挣钱行政还要负责网站建设新媒体吗
  • chatgpt网站垂直类网站怎么做推广
  • 新手做网站成品网站w灬源码伊甸院
  • 点子网站制作正规手游代理商
  • 网站平台设计 问题平面设计公司网站建设费用
  • 建立网站目录结构时不正确的建议是个人单页网站建设
  • 网站蜘蛛记录可不可以建网站做微商
  • 建设网站能赚钱单页面网站卖什么好
  • 墓园网站建设价格安卓手机做网站服务器吗
  • 新闻app开发中卫网站推广优化
  • 百度seo网站优化怎么做陵水网站建设报价
  • 网站开发怎么用自己的电脑全国最新工商企业名录