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

电商网站设计规范西安做网站公司有哪些

电商网站设计规范,西安做网站公司有哪些,挣钱最快的小游戏,青龙建站网一、源码 这段代码定义了一个自定义的减法 trait MySub 并为实现了特定约束的整数类型实现了这个 trait。 use super::basic::Integer; use core::ops::{Neg, Sub, Add};pub trait MySub<Rhs Self> {type Output;fn my_sub(self, rhs: Rhs) -> Self::Output; }impl…

一、源码

这段代码定义了一个自定义的减法 trait MySub 并为实现了特定约束的整数类型实现了这个 trait。

use super::basic::Integer;
use core::ops::{Neg, Sub, Add};pub trait MySub<Rhs = Self> {type Output;fn my_sub(self, rhs: Rhs) -> Self::Output;
}impl<I1: Integer, I2: Integer> MySub<I2> for I1
whereI1: Add<<I2 as Neg>::Output>,I2: Neg,
{type Output = <I1 as Add<<I2 as Neg>::Output>>::Output;#[inline]fn my_sub(self, rhs: I2) -> Self::Output {self + (-rhs)}
}

二、导入部分

use super::basic::Integer;
use core::ops::{Neg, Sub, Add};
  • 从父模块的 basic 子模块导入 Integer trait

  • 从核心库导入 Neg(取负)、Sub(减法) 和 Add(加法) 这三个操作 trait

三、自定义减法 trait 定义

pub trait MySub<Rhs = Self> {type Output;fn my_sub(self, rhs: Rhs) -> Self::Output;
}
`
+ 定义了一个名为 MySub 的公共 trait+ 使用泛型参数 Rhs (Right Hand Side 的缩写),默认值为 Self (即实现该 trait 的类型自身)+ 声明了一个关联类型 Output 表示运算结果的类型+ 定义了一个方法 my_sub,接收自身和右操作数,返回 Output 类型的结果### 四、trait 实现
```rust
impl<I1: Integer, I2: Integer> MySub<I2> for I1
whereI1: Add<<I2 as Neg>::Output>,I2: Neg,
{type Output = <I1 as Add<<I2 as Neg>::Output>>::Output;#[inline]fn my_sub(self, rhs: I2) -> Self::Output {self + (-rhs)}
}
  • 为所有实现了 Integer 的类型 I1 和 I2 实现 MySub

  • where 子句约束:

    • I1 必须能加上 I2 的负值 (I1: Add<::Output>)

    • I2 必须能取负 (I2: Neg)

  • 关联类型 Output 定义为 I1 加 I2 的负值的结果类型

  • my_sub 方法实现为 self + (-rhs),即通过加负来实现减

  • #[inline] 提示编译器考虑内联此方法以提高性能

五、关键点解析

  1. 数学原理:
  • 这段代码实现了减法作为加负数的操作 (a - b = a + (-b))

  • 这是数学上减法的标准定义方式

  1. 类型系统:
  • 使用了复杂的类型约束确保类型安全

  • I2 as Neg>::Output 获取 I2 取负后的类型

  • I1 as Add<…>::Output 获取 I1 与某类型相加的结果类型

  1. 设计考虑:
  • 自定义 MySub trait 是为了绕过 Rust 的孤儿规则

  • 保持了与标准库 Sub trait 相似的接口设计

六、使用示例

假设有以下类型:

struct MyInt(i32);impl Integer for MyInt {...}
impl Neg for MyInt {type Output = MyInt;fn neg(self) -> Self::Output {...}
}
impl Add for MyInt {type Output = MyInt;fn add(self, rhs: Self) -> Self::Output {...}
}

可以这样使用:

let a = MyInt(5);
let b = MyInt(3);
let c = a.my_sub(b);  // 相当于 5 - 3

七、与标准库 Sub 的区别

  1. 避免了孤儿规则问题,因为 MySub 是本地的

  2. 方法名改为 my_sub 而非 sub

  3. 其他方面保持了与标准库 Sub 相同的设计理念

这种模式在需要扩展外部类型功能时很常见,特别是在无法直接实现外部 crate 的 trait 时。


文章转载自:

http://5p7G6c7Q.qhrdx.cn
http://Ohxz28tw.qhrdx.cn
http://lv17HW29.qhrdx.cn
http://OUZwcOw7.qhrdx.cn
http://5gxUO6n1.qhrdx.cn
http://S6z0WqEW.qhrdx.cn
http://1TYc2rTS.qhrdx.cn
http://YlTADN8O.qhrdx.cn
http://v0E9AVAk.qhrdx.cn
http://PdhO7B8o.qhrdx.cn
http://hs3fuogD.qhrdx.cn
http://ZMFbJvbt.qhrdx.cn
http://KJQ1gfYk.qhrdx.cn
http://e7CK350w.qhrdx.cn
http://esW43xg3.qhrdx.cn
http://zdVXgDvO.qhrdx.cn
http://wlu5FqRr.qhrdx.cn
http://FOfgVUfa.qhrdx.cn
http://5N2fcJTI.qhrdx.cn
http://zfQmiD5b.qhrdx.cn
http://GndNTIm6.qhrdx.cn
http://Tdjr4ZL1.qhrdx.cn
http://KoSD4kyr.qhrdx.cn
http://jYomTwWr.qhrdx.cn
http://UAguypqt.qhrdx.cn
http://XZiwpZBY.qhrdx.cn
http://hG0ssSL4.qhrdx.cn
http://b1fT4955.qhrdx.cn
http://3ZClJaVE.qhrdx.cn
http://lJ0xaoei.qhrdx.cn
http://www.dtcms.com/wzjs/738990.html

相关文章:

  • 专业做互联网招聘的网站有哪些内容wordpress美容养生
  • 网站要素WordPress 云锁
  • 展示系统 网站模板免费下载电脑做系统网站
  • 海宁市网站建设为什么要建立网站
  • wordpress网站从零营销型网站的三大特点
  • 网站开发图片编辑技术支持 东莞网站建设 轴承
  • 西安网站建设开发查派贵阳利于优化的网站
  • 高端网站建设的小知识wordpress打不开自定义
  • wordpress子分类模板站长工具seo综合查询引流
  • 谷歌网站推广策略方案深圳做网站的公司
  • 西安网站建设推荐求几个好看的关键词
  • 提供网站制作公司地址下载百度2023最新版安装
  • 广东外贸网站推广公司汕头企业网页设计
  • 淄博圻谷网站建设制作网站定位与建设
  • 陕西交通建设集团网站体检wordpress小工具 样式
  • 上海网站制作福州wordpress删除管理站点链接
  • 快速建站网站啦手机兼职软件推荐app
  • 常德网站建设的策划方案网站建设 英文版
  • 专业一元夺宝网站建设如何分析网站开发语言
  • 中国网站设计模板网站开发详细流程
  • 四大门户网站创始人做风投要关注哪些网站
  • 西平企业网站建设网站图片验证码出不来
  • 如何建立网站视频开发一亩地多少钱
  • 深圳罗湖网站开发房产获客软件
  • 信息门户网站建设合同网站seo优化检测
  • 网页设计模板网站免费下载电商网站建设小兔仙
  • 网站建设费用账务处理网站备案ftp密码
  • 郑州外贸网站建设公司排名django个人博客网站开发部署源码
  • 修改wordpress后台文字seo优化方案
  • 网站备案转服务器网页设计与制作 pdf