#byte-slice #byte #cast #transmute

no-std bytemuck

一个用于处理大量字节的crate

25个稳定版本

新版本 1.17.0 2024年8月16日
1.16.3 2024年7月30日
1.16.1 2024年6月19日
1.15.0 2024年3月13日
0.1.2 2019年11月11日

#27 in 编码

Download history 644830/week @ 2024-05-02 656557/week @ 2024-05-09 710254/week @ 2024-05-16 674517/week @ 2024-05-23 774475/week @ 2024-05-30 766589/week @ 2024-06-06 811662/week @ 2024-06-13 876748/week @ 2024-06-20 886807/week @ 2024-06-27 804014/week @ 2024-07-04 877560/week @ 2024-07-11 906982/week @ 2024-07-18 925829/week @ 2024-07-25 961695/week @ 2024-08-01 1015826/week @ 2024-08-08 1021506/week @ 2024-08-15

4,097,625 每月下载量
用于 8,862 个crate(1,165个直接使用)

Zlib OR Apache-2.0 OR MIT

150KB
2K SLoC

License:Zlib Minimum Rust Version crates.io

bytemuck

一个用于处理大量字节的crate。

这个crate允许您在数据类型之间安全地执行"位转换"操作。这意味着您可以将一个值取出来,只重新解释这些位作为其他类型的值,而不改变这些位。

这里是你更可能关心的部分: 你也可以对切片做这件事!

当涉及到切片时,这不是一个 直接 的位转换。相反,cast_slicecast_slice_mut函数会拆分切片的数据,并给你一个新的切片,它是相同内存范围的,但以新的类型查看。如果切片元素的尺寸发生变化,那么返回的切片长度也会相应地改变。

这使得您可以将颜色值的切片转换为u8切片,并将其发送到GPU,或者类似的东西。我相信还有其他例子,但老实说,这个crate之所以如此受欢迎,主要是因为Rust的3D图形社区想要将不同类型的数据切片转换为字节切片,以发送到GPU。朋友们!推动那些顶点,或者你们所有人都在做什么。

另请参阅

虽然bytemuck中充满了不安全代码,但我已经开始了一个名为bitfrob的"兄弟crate",在那里将添加100%安全的操作。

稳定性

  • 这个仓库的版本是1.0,我认为它已经“基本完成”。通常,当其他人愿意投入工作以添加新功能时,才会接受新功能,但我想继续将bytemuck用于更大的项目中。
  • bytemuck仓库的默认构建将继续与rustc-1.34版本兼容,至少在1.y.z版本期间。
  • 该仓库的任何其他cargo特性都不会遵守相同的标准,可能只能在最新的稳定版或甚至仅在最新的夜间版上工作。

未来计划:一旦安全转换项目完成并稳定(最终),这个仓库将更新以使用该机制作为转换界限的基础,并将发布bytemuck的2.0版本。希望1.0到2.0的过渡尽可能无缝,但未来总是不确定的。

依赖项