#fixed-size #conversion #architecture #pointers #64-bit

arch-into

在指针大小类型(usize/isize)和固定大小类型之间进行安全的类型转换

5 个版本

0.0.1-alpha.52023 年 8 月 9 日
0.0.1-alpha.42023 年 4 月 7 日
0.0.1-alpha.32023 年 4 月 6 日

#526Rust 模式

Download history 1160/week @ 2024-03-14 1222/week @ 2024-03-21 1800/week @ 2024-03-28 1061/week @ 2024-04-04 866/week @ 2024-04-11 1745/week @ 2024-04-18 2179/week @ 2024-04-25 3155/week @ 2024-05-02 2930/week @ 2024-05-09 1436/week @ 2024-05-16 2572/week @ 2024-05-23 2392/week @ 2024-05-30 2210/week @ 2024-06-06 2331/week @ 2024-06-13 3119/week @ 2024-06-20 2582/week @ 2024-06-27

每月 10,824 次下载

MIT/Apache 许可协议

7KB
87

arch-into

此 crate 提供了在 usize/isize 类型与根据支持的架构具有固定大小的类型之间的简化转换。

通常,当您想要将 usize 转换为 u64(或 u32)时,您有几个选择

  • 使用 as 关键字。这种方法可能会导致错误的结果
  • 使用 try_fromunwrap/expect。当您仅针对 64 位架构时,这很合适,但它会产生大量的模板代码
  • 使用 try_from 并返回错误。这种方法会隐藏您代码的错误行为。

此 crate 提供了两个功能:no-arch-32no-arch-64。如果您尝试为不受支持的架构编译,编译将因错误而失败。

由于定义了不受支持的指针宽度,我们可以对具有特定大小的类型使用安全转换。

使用方法

use arch_into::{ArchInto, ArchFrom};

fn main() {
    let a: u64 = 23;
    let b: usize = a.arch_into();
    let _c = u64::arch_from(b);
}

依赖项

~220KB