此问题在此处已有答案:
Is it possible for one struct to extend an existing struct, keeping all the fields?(5个答案)
昨天关门了。
我对Rust不是很感兴趣,当我需要检查是否有可能使用它的类型系统做一些有趣的事情时,我会研究它。我提出了一个问题,是否有可能将以下用TS编写的类型定义转换为Rust。
type Data = {
path: String
name: String
}
enum Type {
CSV,
JPG,
PNG
}
type CSV = Data & {
type: Type.CSV
}
type JPG = Data & {
type: Type.PNG
}
type PNG = Data & {
type: Type.PNG
}
// To avoid conflicts with the already reserved type File
type MyFile = CSV | PNG | JPG
我一直在谷歌上搜索一些东西,比如是否有可能在Rust中扩展结构体,不幸的是没有找到任何符合我好奇心的东西。
1条答案
按热度按时间7kqas0il1#
不,在Rust中不可能扩展结构。
尝试在这个Typescript示例和等价的Rust之间进行直接转换无论如何都不符合习惯。您可能希望将其结构化为如下形式:
或类似于:
这取决于路径/名称与文件类型的耦合。