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

网站开发的概要设计模板wordpress 评论排序

网站开发的概要设计模板,wordpress 评论排序,灰色网站是什么,金蝶进销存管理系统一、源码 这段代码实现了类型级别的乘法运算,使用Rust的类型系统来表示和执行整数乘法。这是典型的类型级编程(type-level programming)示例,常用于在编译期进行数学运算。 use core::ops::{Mul, Neg}; use super::basic::{Z0, …

一、源码

这段代码实现了类型级别的乘法运算,使用Rust的类型系统来表示和执行整数乘法。这是典型的类型级编程(type-level programming)示例,常用于在编译期进行数学运算。

use core::ops::{Mul, Neg};
use super::basic::{Z0, P1, N1, B0, B1, Integer, NonZero};
use super::add::Add;// ========== Basic Type Multiplication ==========
// ========== 基本类型乘法 ==========// ========== 0 * All ==========
// ========== 零乘以任何数 ==========
impl<I: Integer> Mul<I> for Z0 {type Output = Self;#[inline(always)]fn mul(self, _rhs: I) -> Self::Output {self  // 0 * any = 0}
}// ========== 1 * All ==========
// ========== 一乘以任何数 ==========
impl<I: Integer> Mul<I> for P1 {type Output = I;#[inline(always)]fn mul(self, rhs: I) -> Self::Output {rhs  // 1 * x = x}
}// ========== -1 * All ==========
// ========== 负一乘以任何数 ==========
impl<I: Integer + Neg> Mul<I> for N1 {type Output = I::Output;#[inline(always)]fn mul(self, rhs: I) -> Self::Output {-rhs  // -1 * x = -x}
}// ========== B0 * All ==========
// ========== 以0结尾的二进制数乘法 ==========// B0 * Z0 = 0
// 以0结尾的数乘以零
impl<H: NonZero> Mul<Z0> for B0<H> {type Output = Z0;#[inline(always)]fn mul(self, _rhs: Z0) -> Self::Output {Z0  // x * 0 = 0}
}// B0<NonZero> * NonZero = B0<NonZero * I>
// 以0结尾的数乘以非零数
//
// Explanation:
//    B0<P> * I = (2*P)*I = 2*(P*I) = B0<P * I>
//    B0<N> * I = -B0<-N> * I = -B0<(-N)*I> = B0<N * I>
//    Therefore, B0<NonZero> * I = B0<NonZero * I>
//
// 说明:
//    B0<P> * I = (2*P)*I = 2*(P*I) = B0<P * I>
//    B0<N> * I = -B0<-N> * I = -B0<(-N)*I> = B0<N * I>
//    因此,B0<NonZero> * I = B0<NonZero * I>
impl<H: NonZero + Mul<I>, I: NonZero> Mul<I> for B0<H> {type Output = B0<H::Output>;#[inline(always)]fn mul(self, _rhs: I) -> Self::Output {B0::new()  // 构造新的B0类型}
}// ========== B1 * All ==========
// ========== 以1结尾的二进制数乘法 ==========// B1 * Z0 = 0
// 以1结尾的数乘以零
impl<H: NonZero> Mul<Z0> for B1<H> {type Output = Z0;#[inline(always)]fn mul(self, _rhs: Z0) -> Self::Output {Z0  // x * 0 = 0}
}// B1<NonZero> * NonZero = I + B0<NonZero * I>
// 以1结尾的数乘以非零数
//
// Explanation:
//    B1<P> * I = (1 + B0<P>) * I = I + B0<P * I>
//    B1<N> * I = -B1<!N> * I = -I * ((2*!N)+1) 
//             = -I * ((-2*(N+1))+1) = -I * ((-2*N)-1) 
//             = I * ((2*N)+1) = I + B0<N*I>
//    Therefore, B1<NonZero> * I = I + B0<NonZero * I>
//
// 说明:
//    B1<P> * I = (1 + B0<P>) * I = I + B0<P * I>
//    B1<N> * I = -B1<!N> * I = -I * ((2*!N)+1)
//             = -I * ((-2*(N+1))+1) = -I * ((-2*N)-1)
//             = I * ((2*N)+1) = I + B0<N*I>
//    因此,B1<NonZero> * I = I + B0<NonZero * I>
impl<H: NonZero + Mul<I>, I: NonZero + Add<B0<<H as Mul<I>>::Output>>> Mul<I> for B1<H> {type Output = I::Output;#[inline(always)]fn mul(self, i: I) -> Self::Output {i + B0::new()  // I + B0<H*I>}
}/// Type alias for multiplication: `Prod<A, B> = <A as Mul<B>>::Output`
/// 乘法运算的类型别名:`Prod<A, B> = <A as Mul<B>>::Output`
pub type Prod<A, B> = <A as Mul<B>>::Output;#[cfg(test)]
mod tests {use super::*;#[test]fn test_basic_multiplication() {// Test Z0 (0 * anything = 0)// 测试零的乘法let _: Z0 = Z0 * Z0;let _: Z0 = Z0 * P1;let _: Z0 = Z0 * N1;// Test P1 (1 * anything = anything)// 测试正一的乘法let _: Z0 = P1 * Z0;let _: P1 = P1 * P1;let _: N1 = P1 * N1;// Test N1 (-1 * anything = -anything)// 测试负一的乘法let _: Z0 = N1 * Z0;let _: N1 = N1 * P1;let _: P1 = N1 * N1;}#[test]fn test_b0_multiplication() {// B0<P1> represents binary 10 (decimal 2)// B0<P1> 表示二进制10(十进制2)let b0_p1: B0<P1> = B0::new();// 2 * 0 = 0let _: Z0 = b0_p1 * Z0;// 2 * 1 = 2 (B0<P1>)let _: B0<P1> = b0_p1 * P1;// 2 * (-1) = -2 (B0<N1>)let _: B0<N1> = b0_p1 * N1;}#[test]fn test_b1_multiplication() {// B1<P1> represents binary 11 (decimal 3)// B1<P1> 表示二进制11(十进制3)let b1_p1: B1<P1> = B1::new();// 3 * 0 = 0let _: Z0 = b1_p1 * Z0;// 3 * 1 = 3 (B1<P1>)// Note: This requires addition to be properly implemented// 注意:这需要加法正确实现// let _: B1<P1> = b1_p1 * P1;// 3 * (-1) = -3 (B1<N1>)// let _: B1<N1> = b1_p1 * N1;}// Helper function to create values// 辅助函数创建值fn _create_values() {let _z0 = Z0;let _p1 = P1;let _n1 = N1;let _b0_p1: B0<P1> = B0::new();let _b1_p1: B1<P1> = B1::new();}
}

二、基本概念

  1. 类型表示数字:
  • Z0 表示数字0

  • P1 表示正1

  • N1 表示负1

  • B0 表示以0结尾的二进制数(相当于2*H)

  • B1 表示以1结尾的二进制数(相当于2*H + 1)

  1. 核心trait:
  • Integer - 表示整数类型

  • NonZero - 表示非零整数类型

  • Mul - Rust的标准乘法trait

三、乘法实现

  1. 零的乘法 (Z0)
impl<I: Integer> Mul<I> for Z0 {type Output = Self;fn mul(self, _rhs: I) -> Self::Output {self  // 0 * any = 0}
}

任何数乘以零都等于零,返回Z0类型。

  1. 一的乘法 (P1)
impl<I: Integer> Mul<I> for P1 {type Output = I;fn mul(self, rhs: I) -> Self::Output {rhs  // 1 * x = x}
}

一乘以任何数等于该数本身,返回输入类型。

  1. 负一的乘法 (N1)
impl<I: Integer + Neg> Mul<I> for N1 {type Output = I::Output;fn mul(self, rhs: I) -> Self::Output {-rhs  // -1 * x = -x}
}

负一乘以任何数等于该数的负数,要求输入类型实现了Neg trait。

  1. 以0结尾的二进制数乘法 (B0)
impl<H: NonZero> Mul<Z0> for B0<H> {type Output = Z0;fn mul(self, _rhs: Z0) -> Self::Output {Z0  // x * 0 = 0}
}impl<H: NonZero + Mul<I>, I: NonZero> Mul<I> for B0<H> {type Output = B0<H::Output>;fn mul(self, _rhs: I) -> Self::Output {B0::new()  // B0<H * I>}
}
  • 乘以零返回零

  • 乘以非零数:B0 * I = B0<HI>(因为B0表示2H,所以2H * I = 2(H*I))

  1. 以1结尾的二进制数乘法 (B1)
impl<H: NonZero> Mul<Z0> for B1<H> {type Output = Z0;fn mul(self, _rhs: Z0) -> Self::Output {Z0  // x * 0 = 0}
}impl<H: NonZero + Mul<I>, I: NonZero + Add<B0<<H as Mul<I>>::Output>>> Mul<I> for B1<H> {type Output = I::Output;fn mul(self, i: I) -> Self::Output {i + B0::new()  // I + B0<H*I>}
}
  • 乘以零返回零

  • 乘以非零数:B1 * I = I + B0<HI>(因为B1表示2H + 1,所以(2H + 1) * I = I + 2H*I)

四、类型别名

pub type Prod<A, B> = <A as Mul<B>>::Output;

提供方便的别名Prod<A, B>来表示A * B的类型。

五、测试用例

测试代码验证了各种乘法场景:

  1. 基本乘法(零、正一、负一)

  2. B0类型的乘法

  3. B1类型的乘法

这种类型级编程技术常用于需要编译期计算的场景,如模板元编程、维度检查等,可以在编译期捕获错误而不引入运行时开销。

http://www.dtcms.com/a/487809.html

相关文章:

  • 基础型网站价格九江市区
  • 华为结构化摄像机接入到SVMSPro平台操作流程
  • 网站建设预算明细表学做网站快吗
  • 算法题(234):最小生成树(kruskal算法)
  • 【C++】继承(1)
  • 网站 字号 英文国家企业信息管理系统
  • 合肥html5网站建设中文wordpress企业
  • 力扣Hot100--226.翻转二叉树
  • 园岭网站建设百度做广告
  • LeetCode每日一题——矩阵置0
  • 网站规划和建设的基本步骤怎么做属于自己的免费网站
  • 东莞个人网站设计天津平台网站建设企业
  • Python全栈(基础篇)——Day12:函数进阶(闭包+装饰器+偏函数+实战演示+每日一题)
  • 【完整源码+数据集+部署教程】 【运输&加载码头】仓库新卸物料检测系统源码&数据集全套:改进yolo11-DRBNCSPELAN
  • 网站建设发展历程怎样在微信中做网站
  • 阿里巴巴网站推广方法免费网络推广网站大全
  • 信息分类网站建设字节跳动员工人数多少
  • Android 如何开启 16KB 模式
  • VOFA添加取消光标标记使用方法
  • 【学习笔记】大模型慢思考模式的优缺点
  • 精读《JavaScript 高级程序设计 第4版》第12章 BOM
  • 临桂城乡建设局网站开源wordpress
  • BRPC基础使用
  • 如何用网站模板建设网站南京模板建网站哪家好
  • 称多县公司网站建设网上做家教那个网站好
  • 做家装模型的效果图网站宁德市住房和城乡建设局网站
  • Burp Suite抓包软件使用说明1-Http history
  • 买了两台服务器可以做网站吗不起眼的暴利小生意
  • glibc升级到指定版本
  • 做一个智能体搭建复盘吧