這個問題在這里已經有了答案: 一個結構是否可以擴展現有結構,保留所有欄位? (5 個回答) 11 小時前關閉。
我不太喜歡 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 中擴展結構,但不幸的是沒有找到任何能滿足我好奇心的東西。
uj5u.com熱心網友回復:
不,不可能在 Rust 中擴展結構。
無論如何,嘗試在這個 Typescript 示例和等效的 Rust 之間進行直接轉換是不習慣的。您可能希望像這樣構造它:
enum Kind {
Csv,
Jpg,
Png,
}
struct MyFile {
kind: Kind,
path: String,
name: String,
}
或像這樣:
struct Data {
path: String,
name: String,
}
enum MyFile {
Csv(Data),
Jpg(Data),
Png(Data),
}
取決于您將路徑/名稱與檔案型別的耦合。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/530724.html
標籤:打字稿锈结构类型
