写一个结构体,变量内容作为字段名
Write a struct with variable content as the field name
我需要在其中编写一堆名称相似的结构。如:
pub struct ContactUpdate {
pub full_name: String,
pub full_address: String,
/// .... many other fields
}
pub struct Contact {
pub contact_id: Option<ObjectId>,
pub full_name: String,
pub full_address: String,
pub created_at: DateTime
/// .... many other fields
}
/// ... other structs with similar content/field name
我很懒。因此,与其手动对每个字段名称进行硬编码,我想我如何才能将结构的字段名称变成字符更少的内容,这样我就不必输入那么多了。还具有导出该常量并将其用于需要它的其他文件的其他好处。
pub const ID: &str = "contact_id";
pub const NAME: &str = "full_name";
pub const TIME: &str = "created_at";
pub const ADDR: &str = "full_address";
pub struct Contact {
pub ID: Option<ObjectId>,
pub NAME: String,
pub ADDR: String,
pub TIME: DateTime
/// .... many other fields
}
pub struct ContactUpdate {
pub NAME: String,
pub ADDR: String,
/// .... many other fields
}
这可能吗?
没有。不可能的。
如果你真的想要(不要!)你可以有一个宏。
然而,字段名称存在的全部原因是为了让程序员知道它们的含义。如果你想把它们当作常量使用,你只要不赋予它们任何意义,就可以完全摆脱它们。那时,您回到了变量名长度限制为 7-8 个字符的旧时代,人们使用各种糟糕且不可读的代码来处理它。不要那样做。
我需要在其中编写一堆名称相似的结构。如:
pub struct ContactUpdate {
pub full_name: String,
pub full_address: String,
/// .... many other fields
}
pub struct Contact {
pub contact_id: Option<ObjectId>,
pub full_name: String,
pub full_address: String,
pub created_at: DateTime
/// .... many other fields
}
/// ... other structs with similar content/field name
我很懒。因此,与其手动对每个字段名称进行硬编码,我想我如何才能将结构的字段名称变成字符更少的内容,这样我就不必输入那么多了。还具有导出该常量并将其用于需要它的其他文件的其他好处。
pub const ID: &str = "contact_id";
pub const NAME: &str = "full_name";
pub const TIME: &str = "created_at";
pub const ADDR: &str = "full_address";
pub struct Contact {
pub ID: Option<ObjectId>,
pub NAME: String,
pub ADDR: String,
pub TIME: DateTime
/// .... many other fields
}
pub struct ContactUpdate {
pub NAME: String,
pub ADDR: String,
/// .... many other fields
}
这可能吗?
没有。不可能的。
如果你真的想要(不要!)你可以有一个宏。
然而,字段名称存在的全部原因是为了让程序员知道它们的含义。如果你想把它们当作常量使用,你只要不赋予它们任何意义,就可以完全摆脱它们。那时,您回到了变量名长度限制为 7-8 个字符的旧时代,人们使用各种糟糕且不可读的代码来处理它。不要那样做。