#转换 #强制类型转换 #尝试 #转换 #conv

convi

方便(但安全)的转换(类似From)特质

7 个版本

0.0.7 2022 年 8 月 4 日
0.0.6 2022 年 8 月 1 日
0.0.5 2022 年 7 月 31 日

#2517Rust 模式


用于 fs-dir-cache

MPL-2.0 许可证

10KB
154

Convi - Rust 的方便(但安全)的转换(类似From)特质

厌倦了在 Rust 中安全地进行类型强制转换(如 usize 等)的痛苦吗?这个包就是为了解决这个问题而存在的。

通过在这个包上启用 cargo 功能,如下所示

convi = { version = "*", features = [ "min_target_pointer_width_32" ] }

你可以将你的代码标记为不兼容指针大小小于 32 位的架构。这将启用额外的不可出错 usize 转换,如下

use convi::CastFrom;

fn main() {
  let some_u32 = 3u32;
  println!("{}",  usize::cast_from(some_u32));
}

如果有人尝试为不受支持的架构构建你的代码,将显示适当的错误信息。

此外,对于你知道你的值将始终小于给定类型的情况,而不是使用 u32::try_from(some_usize).expect("必须不失败"),你可以

use convi::ExpectFrom;

fn main() {
  let some_u32 = 3u32;
  println!("{}",  usize::expect_from(some_u32));
}

无依赖,代码小,自行查看

无运行时依赖

功能