25个稳定版本
新版本 1.17.0 | 2024年8月16日 |
---|---|
1.16.3 | 2024年7月30日 |
1.16.1 |
|
1.15.0 |
|
0.1.2 |
|
#27 in 编码
4,097,625 每月下载量
用于 8,862 个crate(1,165个直接使用)
150KB
2K SLoC
bytemuck
一个用于处理大量字节的crate。
这个crate允许您在数据类型之间安全地执行"位转换"操作。这意味着您可以将一个值取出来,只重新解释这些位作为其他类型的值,而不改变这些位。
- 这和
as
关键字不一样 - 这和
From
特质不一样 - 它更像是
f32::to_bits
,只是通用化,允许您在所有类型的数据类型之间进行转换。
这里是你更可能关心的部分: 你也可以对切片做这件事!
当涉及到切片时,这不是一个 直接 的位转换。相反,cast_slice
和cast_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的过渡尽可能无缝,但未来总是不确定的。