generics - 如何使用可在编译时检测到的有限长度范围的 GenericArray?
问题描述
例如,
struct Foo<T, N: ArrayLength<T>> {
data: GenericArray<T, N>
}
我希望将数据数组的长度限制在字节等范围100
内1024
。然后,如果Foo
使用 like let f: Foo<u8, generic_array::typenum::U8> = Foo {data: GenericArray::default()};
,会导致编译错误。
解决方案
我认为你想要的是 Const Generics。
这个特性存在于 Rust 中,但它仍在进行中。您可以在夜间使用它,据我了解,有一些用例可以按预期工作。
基本上,这允许您拥有这样的泛型类型:
struct Foo<T, const N: usize> {
// Here you can use `N` as a `const`. For example, to define the size of a `std::array`
}
以下是此功能拥有或关注的链接:
总而言之,我认为您还不能在稳定版中使用它是一种耻辱。但是伟大的事情需要时间来建立。
检查你是否可以使用它。今天确实有一些std
类型使用它(并且稳定,因为它们已经被审计为健全和稳定)。例如,std::array
从至少 1 年前开始广泛使用它。
我希望这会有所帮助<3
推荐阅读
- flutter - 如何在颤动中为对话框添加圆形边框?
- c# - 将包含“@”的网络路径转换为 URI
- c# - 垂直于旋转物体跳跃
- javascript - Leaflet 破坏了 Selectpicker 过滤器
- flutter - Firestore 将 DateTime 转换为 TimeStamp
- php - 如何根据折扣百分比计算折扣价格
- c++ - 进程返回 -1073741819 (0xC0000005) 执行时间:2.049 s
- mysql - 如何连接 AWS RDS 实例和 Datagrip?
- linux - 在“/etc/ssh/sshd_config”中删除或附加 kexalgorithms 或 hostkeyalgorithms
- java - org.hibernate.AssertionFailure 获取序列值时的问题