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

河源做网站的客户东莞网站建设优化技术

河源做网站的客户,东莞网站建设优化技术,手机网站可以做英文版本吗,没有公司可以注册网站吗一、源码 该代码实现了一个类型级(type-level)的布尔系统,允许在编译时进行布尔运算。 //! 类型级比特位实现 //! //! 这些是基础的比特位类型,作为本库中其他数值类型的构建基础 //! //! 已实现的**类型运算符**: //! //! - 来自 core::op…

一、源码

该代码实现了一个类型级(type-level)的布尔系统,允许在编译时进行布尔运算。

//! 类型级比特位实现
//!
//! 这些是基础的比特位类型,作为本库中其他数值类型的构建基础
//!
//! 已实现的**类型运算符**:
//!
//! - 来自 `core::ops` 的:`BitAnd`(与), `BitOr`(或), `BitXor`(异或) 和 `Not`(非)
//! - 比较操作:`PartialEq`, `Eq`
//! - 转换操作:`From<bool>`, `Into<bool>`
//!
//! 别名定义:
//! - `B1` = `True` (逻辑真/正一)
//! - `B0` = `False` (逻辑假/零)
//!
//! 示例:
//! ```
//! use your_crate::{B1, B0, Boolean};
//!
//! let t = B1::new();
//! let f = B0::new();
//!
//! assert_eq!(t & t, B1);
//! assert_eq!(t | f, B1);
//! assert_eq!(t ^ t, B0);
//! assert_eq!(!t, B0);
//! ```use core::ops::{BitAnd, BitOr, BitXor, Not};
use crate::sealed::Sealed;/// 编译时比特位的标记特征
///
/// 这个 trait 定义了类型级布尔值的基本操作和行为,
/// 包括构造、转换和常量值访问。
pub trait Boolean: Sealed + Copy + Default + 'static {/// 布尔值的编译时常量表示const BOOL: bool;/// 创建一个该类型的新实例fn new() -> Self;/// 将类型级布尔值转换为运行时布尔值fn to_bool() -> bool {Self::BOOL}/// 获取当前实例对应的运行时布尔值fn as_bool(&self) -> bool {Self::BOOL}
}/// 类型级比特位0(逻辑假)
#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Copy, Debug, Default)]
pub struct False;// 类型级比特位0的别名(零) zero.rs文件实现
//pub type B0 = False;impl False {/// 创建一个新的 `False` 实例#[inline(always)]pub const fn new() -> Self {False}
}/// 类型级比特位1(逻辑真)
#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Copy, Debug, Default)]
pub struct True;/// 类型级比特位1的别名(正一)
pub type B1 = True;impl True {/// 创建一个新的 `True` 实例#[inline(always)]pub const fn new() -> Self {True}
}// 为布尔类型实现密封标记
impl Sealed for False {}
impl Sealed for True {}impl Boolean for False {const BOOL: bool = false;#[inline(always)] fn new() -> Self { Self }
}impl Boolean for True {const BOOL: bool = true;#[inline(always)] fn new() -> Self { Self }
}// 实现所有逻辑运算/// 实现逻辑非运算
impl Not for False {type Output = True;#[inline(always)]fn not(self) -> Self::Output {True}
}impl Not for True {type Output = False;#[inline(always)]fn not(self) -> Self::Output {False}
}/// 实现逻辑与运算
impl<Rhs: Boolean> BitAnd<Rhs> for False {type Output = Self;#[inline(always)]fn bitand(self, _: Rhs) -> Self::Output {Self}
}impl BitAnd<False> for True {type Output = False;#[inline(always)]fn bitand(self, _: False) -> Self::Output {False}
}impl BitAnd<True> for True {type Output = True;#[inline(always)]fn bitand(self, _: True) -> Self::Output {True}
}/// 实现逻辑或运算
impl BitOr<False> for False {type Output = False;#[inline(always)]fn bitor(self, _: False) -> Self::Output {False}
}impl BitOr<True> for False {type Output = True;#[inline(always)]fn bitor(self, _: True) -> Self::Output {True}
}impl<Rhs: Boolean> BitOr<Rhs> for True {type Output = True;#[inline(always)]fn bitor(self, _: Rhs) -> Self::Output {True}
}/// 实现逻辑异或运算
impl BitXor<False> for False {type Output = False;#[inline(always)]fn bitxor(self, _: False) -> Self::Output {False}
}impl BitXor<False> for True {type Output = True;#[inline(always)]fn bitxor(self, _: False) -> Self::Output {True}
}impl BitXor<True> for False {type Output = True;#[inline(always)]fn bitxor(self, _: True) -> Self::Output {True}
}impl BitXor<True> for True {type Output = False;#[inline(always)]fn bitxor(self, _: True) -> Self::Output {False}
}// 实现转换操作impl From<bool> for &'static dyn Boolean {/// 从运行时布尔值创建类型级布尔值的引用fn from(b: bool) -> Self {if b { &True } else { &False }}
}impl From<bool> for True {/// 从 `true` 创建 `True` 实例////// # Panics/// 如果输入为 `false` 会 panicfn from(b: bool) -> Self {assert!(b);True}
}impl From<bool> for False {/// 从 `false` 创建 `False` 实例////// # Panics/// 如果输入为 `true` 会 panicfn from(b: bool) -> Self {assert!(!b);False}
}impl<T: Boolean> From<T> for bool {/// 将类型级布尔值转换为运行时布尔值fn from(b: T) -> Self {b.as_bool()}
}impl std::fmt::Display for dyn Boolean {/// 实现格式化输出,显示布尔值fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {write!(f, "{}", self.as_bool())}
}#[cfg(test)]
mod tests {use super::*;#[test]fn test_aliases() {let p1 = B1::new();let z0 = B0::new();assert_eq!(p1, True);assert_eq!(z0, False);assert!(B1::BOOL);assert!(!B0::BOOL);}#[test]fn test_boolean_ops_with_aliases() {let p1 = B1::new();let z0 = B0::new();assert_eq!(p1 & p1, B1);assert_eq!(p1 | z0, B1);assert_eq!(p1 ^ p1, B0);assert_eq!(!p1, B0);}#[test]fn test_boolean_ops() {let t = True::new();let f = False::new();assert_eq!(t & t, True);assert_eq!(t & f, False);assert_eq!(f & t, False);assert_eq!(f & f, False);assert_eq!(t | t, True);assert_eq!(t | f, True);assert_eq!(f | t, True);assert_eq!(f | f, False);assert_eq!(t ^ t, False);assert_eq!(t ^ f, True);assert_eq!(f ^ t, True);assert_eq!(f ^ f, False);assert_eq!(!t, False);assert_eq!(!f, True);}#[test]fn test_conversions() {let t: &dyn Boolean = true.into();assert!(t.as_bool());let f: &dyn Boolean = false.into();assert!(!f.as_bool());assert!(bool::from(True::new()));assert!(!bool::from(False::new()));}
}

二、主要组件

  1. Boolean trait
  • 定义了类型级布尔值的基本行为和操作

  • 包含编译时常量BOOL表示布尔值

  • 提供构造方法new()和转换方法to_bool()/as_bool()

  • 标记为Sealed防止外部实现

  1. 布尔类型
  • False: 表示逻辑假/0

  • True: 表示逻辑真/1

类型别名:

B0 = False (零)

B1 = True (正一)

  1. 实现的操作
  • 逻辑运算:

    • Not(非): !

    • BitAnd(与): &

    • BitOr(或): |

    • BitXor(异或): ^

  • 比较: PartialEq, Eq

  • 转换: From, Into

三、关键实现细节

  1. 常量值:
  • False::BOOL = false

  • True::BOOL = true

  1. 逻辑运算实现:
  • 每种运算都为所有可能的组合提供了具体实现

  • 例如True & False返回False

  1. 转换操作:
  • 可以从运行时bool转换为类型级布尔值

  • 也可以从类型级布尔值转换回运行时bool

  1. 性能优化:
  • 使用#[inline(always)]确保零运行时开销

  • 所有操作都在编译时完成

四、使用示例

use your_crate::{B1, B0};let t = B1::new();  // True
let f = B0::new();  // Falseassert_eq!(t & t, B1);  // True AND True = True
assert_eq!(t | f, B1);  // True OR False = True
assert_eq!(t ^ t, B0);  // True XOR True = False
assert_eq!(!t, B0);     // NOT True = False

五、测试用例

  1. 代码包含了全面的测试:

  2. 测试类型别名是否正确

  3. 测试所有逻辑运算

  4. 测试与运行时布尔值的转换

这种类型级编程技术在需要编译时计算和验证的场景中非常有用,如类型状态机、维度检查等。

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

相关文章:

  • 网站的功能测试怎么做可以发广告的100个网站
  • 做网站学的是代码吗百度如何搜索网址
  • 域名如何做跳转到其他网站上app推广拉新
  • 哈尔滨优质官网建站企业微信投放广告多少钱
  • 深圳市建设工程合同备案网站福州百度关键词优化
  • wordpress可以做企业网站销售找客户的app
  • 长春网站建设索q479185700天津网站制作系统
  • 网站名称图标如何做才能显示厨师培训学校
  • 手机网站作用站长工具seo综合查询关键词
  • 做网站能赚多少国产长尾关键词拘挖掘
  • 网站建设价格百度推广找谁
  • 湛江网站建设公司百度推广信息流有用吗
  • 寮步网站建设 优帮云手机网站建设价格
  • 泉州 网站建设公司首选2022年新闻摘抄十条
  • 平面设计在哪里接单seo求职信息
  • 大庆网站建设黑icp备1900上街网络推广
  • 餐饮连锁网站建设百度推广后台
  • 网站备案当面核验拍摄照片seo静态页源码
  • 军队采购网官网顺德搜索seo网络推广
  • 怎么自己做网站发优惠券郑州seo排名优化
  • 舟山网站建设哪家好高粱seo博客
  • 做网站赚钱好难百度推广代理商与总公司的区别
  • 有哪些漫画做的好的网站360搜索引擎入口
  • 衡阳网站开发百度网络营销推广
  • 东莞网络公司网站建设星沙网站优化seo
  • 如何对一个网站进行seo郑州网站运营实力乐云seo
  • 免费的视频网站如何赚钱百度游戏中心官网
  • 手机网站建设维护seo一个月工资一般多少
  • 官方网站内容可做证据吗苏州网站seo优化
  • 定制鱼缸一般多少钱上海何鹏seo