#integer #non-standard #misaligned #unaligned #conversion

no-std num_x

实现以下非标准整数类型:u1, u2, u3, u4, u5, u6, u7, u9, u10, u11, u12, u13, u14, u15, u17, u18, u19, u20, u21, u22, u23, u24, u25, u26, u27, u28, u29, u30, u31, u33, u34, u35, u36, u37, u38, u39, u40, u41, u42, u43, u44, u45, u46, u47, u48, u49, u50, u51, u52, u53, u54, u55, u56, u57, u58, u59, u60, u61, u62, u63, u65, u66, u67, u68, u69, u70, u71, u72, u73, u74, u75, u76, u77, u78, u79, u80, u81, u82, u83, u84, u85, u86, u87, u88, u89, u90, u91, u92, u93, u94, u95, u96, u97, u98, u99, u100, u101, u102, u103, u104, u105, u106, u107, u108, u109, u110, u111, u112, u113, u114, u115, u116, u117, u118, u119, u120, u121, u122, u123, u124, u125, u126, u127, i1, i2, i3, i4, i5, i6, i7, i9, i10, i11, i12, i13, i14, i15, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i33, i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44, i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55, i56, i57, i58, i59, i60, i61, i62, i63, i65, i66, i67, i68, i69, i70, i71, i72, i73, i74, i75, i76, i77, i78, i79, i80, i81, i82, i83, i84, i85, i86, i87, i88, i89, i90, i91, i92, i93, i94, i95, i96, i97, i98, i99, i100, i101, i102, i103, i104, i105, i106, i107, i108, i109, i110, i111, i112, i113, i114, i115, i116, i117, i118, i119, i120, i121, i122, i123, i124, i125, i126, i127

1 个不稳定版本

0.2.2 2020年2月28日

#1052嵌入式开发

Apache-2.0 OR MIT

85KB
1.5K SLoC

numX 构建状态 Crates.io

非标准整数类型如 u122u9i67u10u63i7i9

struct Packet {
    header: u3,
    timestamp: u5,
    hash: u4,
    mode: u2,
}

这是由 uXkjetilkjeka 的分支

我只是合并了这个分支上的pull请求,并添加了一些功能,否则这些功能将是我对他的pull请求。

我还是一个Rust初学者。在使用它之前,请亲自检查!

特性

在应用程序中需要非标准宽度的整数时,常规做法是使用更大的容器,并在操作后确保值在范围内。numX旨在一劳永逸地解决这个问题,通过

  • 提供 u1-u127i1-i127 类型,这些类型的行为应尽可能与内置的Rust类型相似
    • 定义的类型的 方法与内置类型的方法相同(目前远非全部实现,如果缺少您认为必要的功能,请填写问题或创建PR)
    • 在调试模式下溢出会引发panic,在发布模式下会进行包装。
  • 使用 From 可实现所有可能的无损转换。
  • 使用 TryFrom 可实现所有可能的损失性转换。
  • 支持 serde,通过将其序列化到下一个更大的容器中。
  • 对于目标架构,所有可能的转换到 isizeusize 都是可能的。
  • 实现了一些 num-traits

感谢

感谢来自原始项目的所有贡献者,以及向我发送合并请求的人们

许可证

许可协议为以下之一

由您选择。

贡献

除非您明确声明,否则您提交的任何有意包含在作品中的贡献,根据Apache-2.0许可证定义,将双重许可,如上所述,没有其他附加条款或条件。

依赖关系

~220KB