#usize #isize #cast #compile-time #as

无std usize_cast

编译时检查的从 usize/isize 的转换

2个稳定版本

1.1.0 2020年3月29日
1.0.0 2020年3月26日

硬件支持 中排名 #560

Download history 23/week @ 2024-03-12 17/week @ 2024-03-19 27/week @ 2024-03-26 153/week @ 2024-04-02 242/week @ 2024-04-09 72/week @ 2024-04-16 36/week @ 2024-04-23 110/week @ 2024-04-30 10/week @ 2024-05-07 17/week @ 2024-05-14 15/week @ 2024-05-21 25/week @ 2024-05-28 14/week @ 2024-06-04 9/week @ 2024-06-11 16/week @ 2024-06-18 14/week @ 2024-06-25

每月下载量 57
2 个包 中使用

MIT/Apache

11KB
139

usize_cast

一个非常简单的库,允许在编译时检查从 usize/isize 的转换。

在64位平台上,它允许

  • u16u32u64 转换为 usize
  • i16u16i32u32i64 转换为 isize
  • u64u128i128usize 转换
  • i64i128isize 转换

在32位平台上,它允许

  • u16u32 转换为 usize
  • i16u16i32 转换为 isize
  • u32u64i64u128i128usize 转换
  • i32i64i128isize 转换而来

在16位平台上,它允许

  • u16 转换为 usize
  • i16 转换为 isize
  • u16u32i32u64i64u128i128usize 转换而来
  • i16i32i64i128isize 转换而来

安装

[dependencies]
usize_cast = "1.0.0"

用法

use usize_cast::{IntoUsize, FromUsize, IntoIsize, FromIsize};

assert_eq!(1u64.into_usize(), 1usize);
assert_eq!(2i64.into_isize(), 2isize);
assert_eq!(3i64.into_isize(), 3isize);
assert_eq!(1u32.into_usize(), 1usize);
assert_eq!(1u32.into_isize(), 1isize);
assert_eq!(2i32.into_isize(), 2isize);
assert_eq!(3i32.into_isize(), 3isize);
assert_eq!(u64::max_value().into_usize(), usize::max_value());
assert_eq!(i64::max_value().into_isize(), isize::max_value());
assert_eq!(i64::min_value().into_isize(), isize::min_value());

assert_eq!(1u64, u64::from_usize(1usize));
assert_eq!(2i64, i64::from_isize(2isize));
assert_eq!(3i64, i64::from_isize(3isize));
assert_eq!(1u128, u128::from_usize(1usize));
assert_eq!(2i128, i128::from_isize(2isize));
assert_eq!(3i128, i128::from_isize(3isize));
assert_eq!(u64::max_value(), u64::from_usize(usize::max_value()));
assert_eq!(i64::max_value(), i64::from_isize(isize::max_value()));
assert_eq!(i64::min_value(), i64::from_isize(isize::min_value()));

无运行时依赖