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

制作公司网站要多少钱网站婚庆模板

制作公司网站要多少钱,网站婚庆模板,免费网站入口,wordpress 全站404一、源码 这段代码定义了一个泛型结构体 Var,并为它实现了各种数学运算。 /** 变量结构体 Var* 该结构体泛型参数 T 需满足 Numeric 约束*/use core::ops::{Neg, Add, Sub, Mul}; use crate::constant::Integer; /// 定义 Numeric trait,约束 T 必须实…

一、源码

这段代码定义了一个泛型结构体 Var,并为它实现了各种数学运算。

/** 变量结构体 Var* 该结构体泛型参数 T 需满足 Numeric 约束*/use core::ops::{Neg, Add, Sub, Mul};
use crate::constant::Integer;
/// 定义 Numeric trait,约束 T 必须实现基本数值运算
pub trait Numeric:Neg<Output = Self> +Add<Output = Self> +Sub<Output = Self> +Mul<Output = Self> +From<i32> +Copy +Sized
{}// 为基本类型实现 Numeric
impl Numeric for i64 {}
impl Numeric for f64 {}/// 变量结构体,封装一个泛型值 T
#[derive(Debug, Clone, Copy, PartialEq, Default)]
pub struct Var<T: Numeric>(pub T);/// 实现 Var 与 Var 的乘法运算
/// V * V
impl<T: Numeric> Mul<Var<T>> for Var<T> {type Output = Self;fn mul(self, b: Self) -> Self::Output {Var(self.0 * b.0)}
}/// 实现 Var 与 Var 的加法运算
/// V + V
impl<T: Numeric> Add for Var<T> {type Output = Self;fn add(self, b: Self) -> Self::Output {Var(self.0 + b.0)}
}/// 实现 Var 的取反运算
/// -V
impl<T: Numeric> Neg for Var<T> {type Output = Self;fn neg(self) -> Self::Output {Var(-self.0)}
}/// 实现 Var 与 Var 的减法运算
/// V - V
impl<T: Numeric> Sub for Var<T> {type Output = Self;fn sub(self, b: Self) -> Self::Output {Var(self.0 - b.0)}
}/// 与常量运算(新增加)
/// V * C
impl<T: Numeric, C:Integer + Mul<Var<T>>> Mul<C> for Var<T> {type Output = <C as Mul<Var<T>>>::Output;fn mul(self, c: C) -> Self::Output {c * self}
}/// V + C
impl<T: Numeric, C: Integer + Add<Var<T>>> Add<C> for Var<T> {type Output = <C as Add<Var<T>>>::Output;fn add(self, c:C) -> Self::Output {c + self}
}/// V - C
impl<T: Numeric, C: Integer + Neg> Sub<C> for Var<T>
where <C as Neg>::Output: Add<Var<T>>,
{type Output = < C::Output as Add<Var<T>> >::Output;fn sub(self, c: C) -> Self::Output {-c+self}
}

二、Numeric Trait

pub trait Numeric:Neg<Output = Self> +Add<Output = Self> +Sub<Output = Self> +Mul<Output = Self> +From<i32> +Copy +Sized
{}

这个 trait 定义了数值类型需要实现的操作和特性:

  • 必须实现取反(Neg)、加(Add)、减(Sub)、乘(Mul)运算

  • 可以从i32类型转换(From)

  • 必须是可拷贝的(Copy)和大小固定的(Sized)

为i64和f64实现了这个 trait,表示这两种类型可以用作Var的泛型参数。

三、Var 结构体

#[derive(Debug, Clone, Copy, PartialEq, Default)]
pub struct Var<T: Numeric>(pub T);

这是一个简单的元组结构体,包装了一个泛型值T,其中T必须实现Numeric trait。它自动派生了一些常用 trait:

  • Debug: 可以打印调试信息

  • Clone/Copy: 可以克隆/拷贝

  • PartialEq: 可以比较相等性

  • Default: 有默认值

四、基本运算实现

Var 与 Var 的运算
impl<T: Numeric> Mul<Var<T>> for Var<T> {type Output = Self;fn mul(self, b: Self) -> Self::Output {Var(self.0 * b.0)}
}

实现了Var之间的乘法运算,实际上是解包内部值相乘后再包装成新的Var。

类似的还实现了:

  • 加法(Add)

  • 取反(Neg)

  • 减法(Sub)

五、与常量的运算(新增)

Var 与常量©的乘法

impl<T: Numeric, C: Integer + Mul<Var<T>>> Mul<C> for Var<T> {type Output = <C as Mul<Var<T>>>::Output;fn mul(self, c: C) -> Self::Output {c * self}
}

这里委托给常量的Mul<Var>实现,让常量类型决定如何与Var相乘。

Var 与常量©的加法
impl<T: Numeric, C: Integer + Add<Var<T>>> Add<C> for Var<T> {type Output = <C as Add<Var<T>>>::Output;fn add(self, c: C) -> Self::Output {c + self}
}

同样委托给常量的Add<Var>实现。

Var 与常量©的减法
impl<T: Numeric, C: Integer + Neg> Sub<C> for Var<T>
where <C as Neg>::Output: Add<Var<T>>,
{type Output = < C::Output as Add<Var<T>> >::Output;fn sub(self, c: C) -> Self::Output {-c + self}
}

这里通过取反常量然后与Var相加来实现减法,要求常量类型C:

  1. 可以实现取反(Neg)

  2. 取反后的结果可以实现与Var相加

六、总结

这个Var结构体是一个简单的数值包装器,主要目的是:

  1. 封装数值类型

  2. 提供各种数学运算的实现

  3. 支持与常量类型的运算

通过泛型和 trait 约束,它可以灵活地支持不同的数值类型(i64, f64等)和各种运算操作。


文章转载自:

http://U67qYLhG.LbLsx.cn
http://CVihY6ZP.LbLsx.cn
http://xLhSzBpJ.LbLsx.cn
http://xAo5VtuY.LbLsx.cn
http://tFavoTIA.LbLsx.cn
http://qcp6OCEE.LbLsx.cn
http://TaCDJKHe.LbLsx.cn
http://kyGeYMYq.LbLsx.cn
http://LSmblD9g.LbLsx.cn
http://n3hOwsMH.LbLsx.cn
http://qbvhLDRg.LbLsx.cn
http://Ir1oesAd.LbLsx.cn
http://PO3WVpaj.LbLsx.cn
http://eHpJuRW8.LbLsx.cn
http://4Z733fjc.LbLsx.cn
http://eKu3hg87.LbLsx.cn
http://fxSICHV8.LbLsx.cn
http://WTMeSlEX.LbLsx.cn
http://We8eewEX.LbLsx.cn
http://OTr4haP3.LbLsx.cn
http://8WFt3MIk.LbLsx.cn
http://QBtQyS96.LbLsx.cn
http://XRVRa8GC.LbLsx.cn
http://MwwEnIPp.LbLsx.cn
http://iOJ9YbfR.LbLsx.cn
http://cwWROMyO.LbLsx.cn
http://kaIgjnkv.LbLsx.cn
http://78WoMO9W.LbLsx.cn
http://EdHNJp6y.LbLsx.cn
http://o1Tf67ZV.LbLsx.cn
http://www.dtcms.com/wzjs/774921.html

相关文章:

  • 南宁码科网站建设怎么查看网页的html代码
  • 服装公司网站建设方案seo在线论坛
  • 建外贸网站公司中小企业官网
  • 企业网站设计北京发布项目信息的平台
  • 网站备份设计工作一般多少工资
  • 狼雨seo网站最佳网站设计
  • 怎么看网站谁做的app门户网站
  • 上海做网站哪家正规局域网网页制作
  • 一个完美的网站怎么做大庆市工程建设信息去哪个网站
  • 武进区城乡建设局网站网站排名优化服务公司
  • 江苏亿之盛建设有限公司网站男朋友是做网站的赚钱不
  • 网站建设分金手指专业五自己开一个网站要多少钱
  • 网站需要备案才能建设吗石家庄网站推广软件
  • 国外的调查网站上做问卷宽带业务如何推广
  • 网站开发 聊天窗口联系我们网页设计图片
  • 网站结合微信ppp模式在网站建设的
  • 服务器除了做网站还能做什么电子商务网站开发教程论文
  • 如何做pdf电子书下载网站免费搭建微信网站多少钱
  • 网站的静态页面用什么做wordpress中文插件推荐
  • 布吉做网站怎样在微信小程序里开店
  • 大气简约企业网站模板免费下载温州市建设小学学校网站
  • 怎么做赌钱网站代理烟台做网站哪家好
  • 网站底部设计计算机网站建设文献综述
  • 漳州网站建设公司首选温州新闻
  • 国有企业网站建设达州科创网站建设公司
  • 厦门建设局网站2018临沂h5建站
  • 织梦网站内容替换查找网站注册时间
  • 建个免费的销售网站好沧州快速关键词排名优化
  • 公司的网站建设做ps图标什么网站最好
  • 吉安网站制作公司排名360免费网站建设平台