我不明白如何在 Cap'n Proto 中导出类型别名。
我能想到的最简单的例子是点云。假设我们有一个模式,例如
struct Point {
x @0: Float32 = 0;
y @1: Float32 = 0;
}
然后我还想将这些点的列表导出为固定类型:
struct Point {
x @0: Float32 = 0;
y @1: Float32 = 0;
}
using PointCloud = List(Point);
在我看来(基于生成的代码)
PointCloud
类型并未作为模式的一部分导出。看来 PointCloud
只能在模式文件中内部使用。
如何导出此别名以便在外部使用?
我偶然发现了路线图,其中有这样一句话:
类型别名:能够定义一个类型,该类型只是某些类型的别名 其他类型,并将其显示为例如语言中的 typedef 支持这一点。 (当前的 using 关键字仅适用于本地 使用并且不影响代码生成。)
所以也许这就是我问题的答案......目前根本不支持。
如果您使用 golang,泛型会使用代码生成器中的基本 capnp 类型来覆盖这一点;例如:
type Point_List = capnp.StructList[Point]
其他语言代码生成器可能会做类似的事情;您需要检查他们的输出是否适用。