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

专做商业平台网站建筑行业招聘网站推荐

专做商业平台网站,建筑行业招聘网站推荐,wordpress 添加内容,网站开发框架图Scalar<T> 标量元组结构体分析 泛型标量元组结构体 Scalar<T>包装了一个类型为 T 的值。我将解释这个结构体并根据不同的 T 类型讨论如何实现不同的方法和常量。 基本结构 #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] pub struct Scalar<…

Scalar<T> 标量元组结构体分析

泛型标量元组结构体 Scalar<T>包装了一个类型为 T 的值。我将解释这个结构体并根据不同的 T 类型讨论如何实现不同的方法和常量。

基本结构

#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub struct Scalar<T>(pub T);
  • Scalar<T> 是一个元组结构体,包含一个类型为 T 的单一字段
  • 使用了多个 derive 属性自动实现常见 trait:
    • Debug: 允许打印调试信息
    • Copy: 表示类型可以通过位复制
    • Clone: 提供 clone() 方法
    • PartialEq, Eq: 实现相等比较
    • PartialOrd, Ord: 实现排序比较

根据 T 类型的不同实现

要为不同的 T 类型实现不同的方法和常量,可以使用 Rust 的 trait 系统和条件实现。以下是三种特例的实现方式:

1. 有符号整数特例

impl<T> Scalar<T>
whereT: SignedInt, // 假设有这个trait或者使用std::ops::Neg + 其他整数trait
{pub fn abs(&self) -> Self {Scalar(if self.0 < T::zero() { -self.0 } else { self.0 })}pub const MIN: Self = Scalar(T::MIN);pub const MAX: Self = Scalar(T::MAX);
}

2. 浮点数特例

impl<T> Scalar<T>
whereT: Float, // 比如使用num_traits::Float或std::float特性
{pub fn sqrt(&self) -> Self {Scalar(self.0.sqrt())}pub fn is_nan(&self) -> bool {self.0.is_nan()}pub const EPSILON: Self = Scalar(T::EPSILON);pub const INFINITY: Self = Scalar(T::INFINITY);
}

3. 自定义定点数特例

impl<T> Scalar<T>
whereT: FixedPoint, // 自定义trait
{pub fn to_f64(&self) -> f64 {self.0.to_f64()}pub fn from_f64(value: f64) -> Self {Scalar(T::from_f64(value))}pub const SCALE_FACTOR: Self = Scalar(T::SCALE_FACTOR);
}

完整的实现示例

use std::ops::Neg;// 自定义trait定义
pub trait SignedInt: Neg<Output = Self> + PartialOrd + Copy {const MIN: Self;const MAX: Self;fn zero() -> Self;
}pub trait FixedPoint {fn to_f64(&self) -> f64;fn from_f64(value: f64) -> Self;const SCALE_FACTOR: Self;
}// 为内置类型实现SignedInt
impl SignedInt for i32 {const MIN: i32 = i32::MIN;const MAX: i32 = i32::MAX;fn zero() -> i32 { 0 }
}// Scalar实现
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub struct Scalar<T>(pub T);// 有符号整数实现
impl<T> Scalar<T>
whereT: SignedInt,
{pub fn abs(&self) -> Self {Scalar(if self.0 < T::zero() { -self.0 } else { self.0 })}pub const MIN: Self = Scalar(T::MIN);pub const MAX: Self = Scalar(T::MAX);
}// 自定义定点数实现
impl<T> Scalar<T>
whereT: FixedPoint,
{pub fn to_f64(&self) -> f64 {self.0.to_f64()}pub fn from_f64(value: f64) -> Self {Scalar(T::from_f64(value))}pub const SCALE_FACTOR: Self = Scalar(T::SCALE_FACTOR);
}

使用方式

根据不同的类型参数 TScalar<T> 会提供不同的方法和常量:

let int_scalar = Scalar(-5i32);
println!("Abs: {:?}", int_scalar.abs()); // 可用abs()方法
println!("Max: {:?}", Scalar::<i32>::MAX); // 可用MAX常量// 对于浮点数类型,会有sqrt()等方法
// 对于自定义定点数类型,会有to_f64()等方法

这种设计模式允许您为不同类型的标量提供特定于类型的行为,同时保持统一的接口。


文章转载自:

http://Fj0cWFpD.rhLhk.cn
http://ixDDJjhV.rhLhk.cn
http://7QOuA4SK.rhLhk.cn
http://yuEr2Sog.rhLhk.cn
http://nuShBvco.rhLhk.cn
http://vxKZsGIo.rhLhk.cn
http://Ulj9SuQD.rhLhk.cn
http://3ngMfdsh.rhLhk.cn
http://skj7vlyB.rhLhk.cn
http://uAlgd8Y1.rhLhk.cn
http://6pRNJA7S.rhLhk.cn
http://xEjCU7Cu.rhLhk.cn
http://FwVO2mrt.rhLhk.cn
http://a51tY8A8.rhLhk.cn
http://SFSjEXkK.rhLhk.cn
http://NmSRScLH.rhLhk.cn
http://ODqMq5XC.rhLhk.cn
http://EyOU5xWz.rhLhk.cn
http://CLxLXOgR.rhLhk.cn
http://nAQwCc3a.rhLhk.cn
http://IQgxKhNz.rhLhk.cn
http://BBEv7wEj.rhLhk.cn
http://8zczGWlF.rhLhk.cn
http://HCdGkfJW.rhLhk.cn
http://wfrAU3Jp.rhLhk.cn
http://wkZ3hD9d.rhLhk.cn
http://hMS2gkkN.rhLhk.cn
http://vaBbR9ts.rhLhk.cn
http://619FpTiM.rhLhk.cn
http://CZYavlyh.rhLhk.cn
http://www.dtcms.com/wzjs/654394.html

相关文章:

  • 六安网站建设推广泰安人才网最新招聘网
  • 福建建设工程环保备案网站入口聚成网络网站建设
  • 网站建设案例ppt软件开发公司的优势
  • 怎样查看网站关键词房地产开发资质
  • 新版网站上线济南莱芜都市网
  • 记事本里做网站 怎么把字体中文域名交易平台
  • 专业的电商网站建设公司排名黄村网站开发公司电话
  • 同一ip网站建网站要学什么
  • 河北邯郸中考成绩查询网站网店推广的作用有哪些
  • 做seo网站推广价格中国品牌策划公司排名
  • 手机电影网站怎么做的聊城网站建设首选天成网络
  • 企业网站导航下拉菜单怎么做有什么软件做短视频网站好
  • 南充做网站公司礼物说网站模板
  • 如何选择合适的建站公司网页制作和网站制作有什么区别
  • 个人网站建设法律规定平面设计和电商设计
  • 建筑学网站军事新闻最新消息今天报道
  • mooc网站开发案例百度推广业务电话
  • 申请免费网站哪个好wordpress分类自定义文字
  • 长春火车站进站需要核酸检测吗长沙优化网站分析
  • 网站建设 客户定位多语言版本网站
  • 工农区网站建设网站建设投标文件范本
  • 比较好的网站建设公司电话网站主播
  • 网站建设五行深圳品牌网站建设公司哪家好
  • 洛阳便宜网站建设新手做电商卖什么好
  • 山西做杂粮的网站青海 网站开发 图灵
  • 网站建站网站建设做国外直播网站有哪些
  • 做印刷广告的图片在哪个网站找ii6创建网站
  • 网站上登录系统制作福州网站建设嘉艺
  • 手机软件下载网站开发小程序的平台
  • 网站建设制作策划方案怎么做虚拟网站