#alignment #traits #maths #archetypes #constraint #newtype #requirements

no-std align_constr

类似于 aligned 但更优。一个新的类型,其对齐约束不仅由底层类型的内在对齐要求决定,还由“对齐约束模板”的对齐要求决定

5个版本

0.2.0 2023年12月25日
0.1.4 2022年7月17日
0.1.2 2022年3月1日
0.1.1 2022年2月27日
0.1.0 2022年2月26日

#197 in 内存管理

MIT/Apache

24KB
223

对齐约束-新类型 newtype

crates.io crates.io

新类型对齐 不仅受底层类型 内在对齐要求 的限制,还受“对齐约束模板”的对齐要求的限制。在这个上下文中,“对齐约束模板” AlignConstrArchetype 是一种类型,其对齐约束施加在底层类型 T 上,以产生 AlignConstr<T, AlignConstrArchetype>

说明

对齐资源

  • "数据对齐",由桑霍·安教授的个人网站提供 - 他在谢里丹学院(奥克维尔的计算机科学系)任教

这篇文章虽然视觉上不是那么吸引人,但写得非常好,不仅解释了什么是对齐,还解释了为什么需要对齐以及何时可能需要过度对齐数据。

德米特里·德米涅夫

从C编程专家的角度对主题进行了深入探讨。文章不仅涵盖了关于对齐的信息,还涵盖了应用于C的相关主题,以及其他多种编程语言,包括Rust。

德米特里·德米涅夫

示例

use align_constr::{AlignConstr, n_zst::ZST128};

let overaligned_u8 = AlignConstr::<u8, ZST128>::new(3);
assert!(overaligned_u8.value == 3);
// requires non-const context
assert!(&overaligned_u8 as *const _ as usize % 128 == 0);

align_constraligned

aligned 是一个流行的库,它曾作为 原型align_constr 服务。在撰写本文时,align_constr 在功能和习惯用法方面更为优越,并提供了更广泛的文档和主题资源。为了尊重 aligned 库的贡献者,他们的创建质量的 CI 仍无法与 align_constr 相匹敌。然而,这两个库有限的 范围 使得 align_constr 对于任何用例都可能是更好的选择。

注意:与 aligned 不同,对 as_slice 的依赖是可选的。

关于 align_constr

许可证

根据您的选择,在以下两种许可证下获得许可:Apache许可证版本2.0MIT许可证
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在此库中的任何贡献,都应按上述方式双重许可,而无需任何附加条款或条件。

依赖项